tag 标签: m4k

相关博文
  • 热度 18
    2014-10-9 16:27
    1788 次阅读|
    0 个评论
         无意中看到compilation report-filter ram summary,看到了M4K的使用情况,工程里用到了4个fifo,两块ram,     256*8,256*24,512*16,512*24.使用的ram是1024*32,两块一样,两块ram做乒乓,由于本身是准备用24bit的ram的,但是宏功能模块里并没有24的选项,只有32的,奇怪的是这里资源的使用的情况里实际又是24位的,而且postmap里也是24bit。     参考cyclone ii手册, 256*8,256*24,512*16实际占用M4K数量很好理解,512*24的有些问题,按道理讲应该是每个M4K配置成128*32,共需要4个M4K,但是实际占用3个。咨询了下前辈,说是应该配置成了512*8*3的类型,也就是3个并行8bit的fifo。     我也做了下试验,试着在原工程里更改一下模块端口的位宽,结果“呵呵”,由于在多出来的数据宽度用常数填充,每次都被quartus优化掉,到头来,24位改成25,26……都被优化成了24b。     于是我放弃了在原工程里更改(毕竟前后更改太麻烦了,当时脑袋不知道在想些什么),重新建了一个工程,整个工程只有一个512*24的fifo,端口全输入输出(下图是改成了39才截的图),     于是将位宽改成25,结果发现还是占用3个M4K,接着往后26,27依然是3个,   当改成28的时候,终于占用4个了。 终于发现,手册里有写到512*8,512*9的配置方式,512*8 = 4096,512*9 = 4608,结果显而易见,当位宽是27的时候,512*27的fifo配置成了512*9*3,即3个并行的512*9的M4K,quartus把4608-4096 = 512的校验占用了。 为了安全,我往后接着更改位宽,和上面的吻合,位宽36的时候占用4个M4K,位宽37的时候占用5个M4K, 两块1024*24的ram用了6*2个M4K,目测是用了1024*4的配置方案。   写在最后,发现我傻了,fitter之后直接可以在chip planner中双击对应的M4K在Resource Property Editer 中查看的,以下是对应的256*24的fifo,占用了两个M4k,256*18和256*6, 下面是1024*24的ram,上面猜的没错,6个1024*4的M4K。
  • 热度 23
    2013-9-14 11:22
    2460 次阅读|
    0 个评论
    关于飓风II的资料 http://www.altera.com.cn/support/devices/cyclone2/dev-cyclone2.html Altera存储   存储分为内部和外部 Cyclone 内部有M4K存储,接口支持SDRAM等外部存储 外部flash存储器一般有SPI接口和并行接口,又分norflash和nandflash。   内部存储: Cyclone®II devices feature embedded memory structures to address the  on-chip memory needs of FPGA designs.  The embedded memory structure consists of columns of M4K memory blocks that can be  configured to provide various memoryfunctions such as RAM, first-in first-out (FIFO) buffers, and ROM. M4K memory blocks provide over 1 Mbit of RAM at up to 250-MHz operation (see Table 8–2 on page 8–2for total RAM bits per density).   The M4K blocks support the following features: ■ Over 1 Mbit of RAM available without reducing available logic ■ 4,096 memory bits per block (4,608 bits per block including parity) ■ Variable port configurations ■ True dual-port (one read and one write, two reads, or two writes)  operation ■ Byte enables for data input masking during writes ■ Initialization file to pre-load content of memory in RAM and ROM  modes ■ Up to 250-MHz operation 不同型号器件 ram块 其中内部M4K支持以下模式 支持的时钟模式 可用quartus进行配置     外部RAM(不涉及sram)   Altera官网-外部存储器接口设计向导 http://www.altera.com.cn/literature/lit-external-memory-interface.jsp   表1列出了Altera 器件支持的外部存储器接口。使用我们的外部存储器接口规格估算器获得更多信息。 表 1. Altera FPGA支持的外部存储器接口 器件 存储器类型 DDR4 DDR3 SDRAM DDR2 SDRAM LPDDR3 LPDDR2 RLDRAMII RLDRAMIII QDRII SRAM QDRII+ SRAM Arria 10 2,666 Mbps 1,333 MHz 2,133 Mbps 1,066 MHz 800 Mbps 400 MHz 1,600 Mbps 800 MHz 800 Mbps 400 MHz 1,067 Mbps 533 MHz 2,400 Mbps 1,200 MHz 1,400 Mbps 350 MHz 1,266 Mbps 633 MHz Stratix V (1) - 1,866 Mbps 933 MHz 1,066 Mbps 400 MHz - - 1,067 Mbps 533 MHz 1,600 Mbps 800 MHz 1,400 Mbps 350 MHz 2,200 Mbps 550 MHz Stratix IV - 1,066 Mbps 533 MHz 800 Mbps 400 MHz - - 1,067 Mbps 533 MHz - 1,400 Mbps 350 MHz 2,200 Mbps 550 MHz Stratix III - 1,066 Mbps 533 MHz 800 Mbps 400 MHz - - 800 Mbps 400 MHz - 1,400 Mbps 350 MHz 1,600 Mbps 400 MHz Stratix II 和 Stratix II GX - - 667 Mbps 333 MHz - - 600 Mbps 300 MHz - 1,200 Mbps 300 MHz 1,200 Mbps 300 MHz Arria V (1) - 1,334 Mbps 667 MHz 800 Mbps 400 MHz - 800 Mbps 400 MHz 800 Mbps 400 MHz - 1,600 Mbps 400 MHz 1,600 Mbps 400 MHz Arria V GZ - 1,600 Mbps 800 MHz 800 Mbps 400 MHz - - 700 Mbps 350 MHz 1,334 Mbps 667 MHz 1,400 Mbps 350 MHz 2,000 Mbps 500 MHz Arria II GZ - 800 Mbps 400 MHz 666 Mbps 333 MHz - - 700 Mbps 350 MHz - 1,200 Mbps 300 MHz 1,400 Mbps 350 MHz Arria II GX - 800 Mbps 400 MHz 666 Mbps 333 MHz - - - - 1,000 Mbps 250 MHz 1,000 Mbps 250 MHz Cyclone V (1) - 800 Mbps 400 MHz 800 Mbps 400 MHz - 667 Mbps 333 MHz - - - - Cyclone IV - - 400 Mbps 200 MHz - - - - 668 Mbps 167 MHz - Cyclone III LS - - 333 Mbps 167 MHz - - - - 600 Mbps 150 MHz - Cyclone III - - 400 Mbps 200 MHz - - - - 668 Mbps 167 MHz - HardCopy IV - 1,067 Mbps 533 MHz 667 Mbps 333 MHz - - 800 Mbps 400 MHz - 1,200 Mbps 300 MHz 1,400 Mbps 350 MHz HardCopy III - 800 Mbps 400 MHz 667 Mbps 333 MHz - - 800 Mbps 400 MHz - 1,200 Mbps 300 MHz 1,400 Mbps 350 MHz 注释 1. 所有数值为预测值。Arria V和Cyclone V仅支持单排LPDDR2 SDRAM 相关链接 · 查看外部存储器接口手册 · 下载 Board Skew Parameter Tool (XLS) · 注册教师指导培训: 采用Altera® FPGA连接外部存储器 关于存储器英文介绍 Altera' External Memory Interface Spec Estimator, a parametric tool, allows you to find and compare the performance  of the supported external memory interfaces in our FPGA devices. You’ll have the ability to filter down to specific performances based on your own search specifications, and then compare performances across FPGA devices side-by-side by filtering the criteria you choose for analysis. The External Memory Interface Spec Estimator supports DDR3 SDRAM, DDR2 SDRAM, DDR SDRAM, LPDDR2 SDRAM, RLDRAM 3, RLDRAM II, QDR II+ SRAM, and QDR II SRAM interfaces. 根据外部存储器控制器选型FPGA http://www.altera.com/technology/memory/estimator/mem-emif-index.html#     Cyclone II系列外部存储控制能力:     Cyclone® II devices support a broad range of external memory interfaces,  such as SDR SDRAM, DDR SDRAM, DDR2 SDRAM, and QDRII SRAM.  Dedicated clock delay control circuitry allows Cyclone II devices to  interface with an external memory device at clock speeds up to  167 MHz/333 Mbps for DDR and DDR2 SDRAM devices and  167 MHz/667 Mbps for QDRII SRAM devices. Although Cyclone II  devices also support SDR SDRAM, this chapter focuses on the  implementations of a double data rate I/O interface using the hardware  features available in Cyclone II devices and explains briefly how each  memory standard uses the Cyclone II features.         使用altera的IP核可以很方便的实现外部存储器控制 external memory IP cores listed below. ■ DDR2 SDRAM Controller MegaCore® Function ■ DDR SDRAM Controller MegaCore Function ■ QDRII SRAM Controller MegaCore Function 这里只列举基本功能,后续将继续学习 详细参数参考 Handbook 第三部分MEMORY  第9节 emi_intro_specs_select_memory_CH.pdf  存储器设计       111
  • 热度 17
    2012-12-21 15:01
    2538 次阅读|
    0 个评论
    一个好的算法并不只是讲求功能的实现,功能的实现只是前提,而消耗更少的资源(更省钱)提供相同的功能才是王道。本文就给大家说一下笔者整理的一些省钱的方法。 1、     器件的选型。对于 Altera 公司的 FPGA , Cyclone II 系列 FPGA 内部 RAM 资源只有 M4K , Cyclone III 是 M9K ,更高端的芯片可能有 M512K ,或者几种规格的 RAM 块都有。那是不是越大越好呢?答案是否定的,相反, RAM 类型越高端,其资源使用率就会越低,试想,你使用 M512K 的 RAM 块,而你的程序根本用不大那么大资源,剩余的空间将全部浪费。所以在器件选型时,要综合考虑多方面因素。 2、     下面我们来看一个具体的例子,通过这个例子我们就能看出来我前两篇博文讲诉的内容有什么作用。先来看两个算法: ( 1 ) ( 2 ) 这两个算法在功能上实现的功能相同,都是把一个 8 位数据延时 516 个时钟单位,那我们就来对比一下资源消耗情况。对于算法( 1 ), 516*8=4128 bits 4096 bits ( 4K bits ),因此需要消耗两个 M4Ks ;再来看算法( 2 ),前面两个时钟延时由 delay 模块完成,消耗 16 个 LE ,再延时 514 个时钟,正好消耗 1 个 M4K 。下面两幅图是上述算法综合后资源消耗情况。     那有人会问,我能不能设计成下图的算法,然后通过优化选项让综合器自己决定,通过笔者试验,这种功能 Altera 还没做到。 对比算法( 1 )和算法( 2 ),我想我们之前的努力已经有所回报,我们少用了一个 M4K ,多用了几个 LE 就实现了所需的功能,何乐而不为呢!  
  • 热度 21
    2012-12-21 10:45
    3073 次阅读|
    0 个评论
    上一篇博文我们认识到了 Delay 模块和 Memory Delay 模块的区别,但是,貌似我们还有个问题没有明确,认识到它们的区别到底有什么作用呢?笔者先来将一个自己在 DSP_Builder 算法设计过程中遇到的问题。笔者设计一个小波分解的算法,该算法需要把数据按次序奇偶性分离,还需要对行数据和变换后的数据进行延时,因此需要大量使用 delay 模块或者 memory delay 模块,当算法设计完成进行编译时,一个奇怪的事情发生了, memory bits 资源只占用了 60% 左右,但提示 memory 资源不够。笔者为了揭开上述错误的谜团,才进行了上述博文的实验。 本次我们就来看一下到底为什么会出现上述现象。 我们先来讲述一个 FPGA 的基础知识。我们知道,对于 Cyclone II 系列的 FPGA ,其逻辑单元( LE )是构成 FPGA 的基本单元之一,一个 LE 由一个 4 输入的 LUT 、一个寄存器及进位和互连逻辑组成。但我们设计一个由少于 4 个输入端和 1 个数据输出端组成的电路时,一个 LE 足矣,但当我们由 5 个输入端和 1 个输出端组成电路时,就必须有两个 LE 构建,但有 1 个 LE 没有得到充分利用,其他电路能否再利用这个没有得到充分利用的资源呢,答案是不能。这个也就解释了为什么 FPGA 逻辑资源不可能达到 100% 的缘故。 受此影响,我们想,既然剩余的逻辑资源不能被再利用,那未用完的 M4K 资源能否得到再利用呢,为了说明这一点,我们做个试验,就一目了然了。笔者这个实验所用的芯片是 Cyclone II 的 EP2C8Q208C8 ,该芯片有 8256 个 LE ,以及 36 个 M4Ks 资源。我们这个实验是把该芯片上 36 个 M4Ks 全部耗尽,但每个都有剩余空间,看还能否再利用。 笔者设计了一个算法,如图所示。 这个算法很明显, 36 个 M4Ks 全部消耗完毕,但至少有两个 M4Ks 资源没有得到充分利用,我们编译完查看资源消耗情况也很清楚。 接下来,我们就在上图算法基础上再加一部分,如下图。 看到了吧,笔者意图相当明显,如果能够编译通过,那可以证明,未完全使用的 M4Ks 可以得到再利用;如果编译失败,要就只能说明, M4Ks 如同 LE 一样,未完全使用的只能被丢弃。 实践证明,编译失败。由此可以说明,一个 M4Ks 被用过以后,即使有剩余空间,也不能被再利用了。这个结论揭示了笔者在算法设计中遇到的问题, memory 资源占用率仅为 60% ,但确提示没有足够的 memory 资源。 由这两篇博文也揭示出一个道理:在算法设计过程中,功能的实现是前提,但算法的优化也是必不可少的。
  • 热度 26
    2012-12-21 10:05
    4550 次阅读|
    0 个评论
        用过 DSP_Builder 工具的朋友一定用过 Delay 模块,这个可是算法设计中必须用到的东西,它能让你的数据延时几个时钟再出现,那么在这个模块同一个 Library 中你是否注意到还有一个 Memory Delay 模块。咋一看,这两个模块貌似是一样的,因为都有 Delay ,不过再一想,既然分开存放,那肯定又有所不同。下面,跟随着笔者带你看看究竟这里面藏着什么秘密。 首先,我们来看一个实验,这个实验如下图所示。     我们对这个算法进行编译,目的是查看这两个不同的 Delay 模块综合成了什么样的电路以及消耗的资源情况怎样。 对上图资源使用情况,我们只关心两个地方就足够了,一个是 Logic Cells ,一个是 M4Ks 。 Logic Cells 是 FPGA 内部的逻辑单元,我们生成电路主要靠的就是它了; M4Ks 是 Altera 低端 FPGA 配备的内部 RAM 资源, 4K 的意思就是它的容量是 4K bits (注意这儿单位是位)。由这里可以看出 Delay1 模块消耗了 8 个 Logic Cells , Memory Delay 也消耗了 8 个 Logic Cells 。忙活了半天,原来这两个模块消耗的资源是一样的,我们再来看一下综合的电路吧。 看了上图发现,这两个模块综合成的电路都是一样的。笔者坚信,这两个模块肯定有所不同,那能不能通过综合优化选项改变综合后的电路呢,笔者更改了 Analysis Synthesis Settings 下的 Optimization Technique 。 不论采用 Speed 、 Balanced 还是 Area ,效果都是一样的。笔者又试验了两个时钟单位的延时,两个模块综合出来还是完全一样。 功夫不负有心人,当我把延时值增加到 3 时,就出现了不同效果了。 下图是延时 3 个时钟时的资源消耗情况。 看到这个图,我们终于可以高兴一下了,因为我们找出了它们的不同, Delay1 消耗了 24 个 Logic Cells ,没有用到 M4Ks ;而 Memory Delay 消耗了 5 个 Logic Cells ,同时消耗了 1 个 M4Ks 。这里就好理解为什么叫 Memory Delay 了吧,因为它需要占用 FPGA 的 RAM 资源;而 Delay 模块不占用 RAM 资源,而是消耗 Logic Cells 资源,那究竟是不是这样呢,让我接下来一探究竟吧。既然资源消耗不同,那综合出的电路也不同了,这里感兴趣的朋友可以自己试验一下。 笔者还没有放弃,继续试验,试图彻底了解它们俩兄弟。笔者又进行了 4 时钟延时的试验,结果这次更复杂了,先看看 4 时钟延时的资源消耗情况吧。 对比上面两幅图,笔者惊讶的发现,我进行 4 个 Memory Delay 的延时,结果比进行 3 个 Memory Delay 的延时,消耗的资源还要少,这里确实有些复杂。当我们看 RAM Summary 时发现, 3 个延时时生成的 RAM 是双时钟的简单双口 RAM ,而 4 个延时时声称的 RAM 是单时钟的简单双口 RAM ,这就是答案所在,究竟 Altera 为什么要那么做,笔者也不清楚。 当我把延时值进一步加到 5 时,更为奇特的事情发生了,且听笔者慢慢道来。下图是我在用 Speed 模式优化综合器时生成电路的资源消耗情况。 Delay1 模块消耗了 40 个 Logic Cells ,这里好理解, 8 位输入输出,每个延时消耗 8 个 Logic Cells ,一共 40 个。但是, Memory Bits 为什么只有 24 bits ,按道理应该是 40 bits 才对啊。当我们观察生成的电路结构时会发现, M4K 每个块输入输出口都配备有一个 D 触发器,这个触发器可以选择使用不使用,而每个 D 触发器都相当于一个延时,这样就好理解为什么是 24 bits 了吧。 而当我们用 Balance 或者 Area 选项去优化综合器时,又出现了不同的效果,且看下图。 看到了吧, Delay1 消耗了 8 个 Logic Cells 和 16 bits M4K ,而 Memory Delay 消耗了 24 bits M4K ,貌似越来越复杂了。其实当我们看了综合成的电路后就感觉不到复杂了, Delay 在利用 Memory 延时之前先进行了 1 个延时,即 8 个 Logic Cells 用作了 1 个时钟的延时,究竟为什么这样,也只有 Altera 的工程师能说清楚了。 接下来,相信大家都会像笔者一样,有接着往下做实验的冲动。有兴趣大家可以多试验几种情况,在这里给出大家一个结论,当所设定的延时值 * 数据位宽小于逻辑单元数量时,综合出来的结论都和 5 个延时值时相同;而当延时值 * 数据位宽大于逻辑单元数量时,用 Speed 优化选项编译会报错,而用 Balance 或 Area 优化选项编译时正常。 通过上面的实验,我对我们已经对 Delay 和 Memory Delay 有个清楚的认识了,但我们找出这些区别并是不完全出于兴趣,下一篇博文将会进一步说明我们怎么利用这些不同设计自己的算法,以节省 FPGA 资源。
相关资源