fifo编程中遇到的FPGA资源不够的问题
时间:10-02
整理:3721RD
点击:
编写了一套程序 其中的fifo模块 要求96*32bit的RAM 程序没错 综合时报告资源不够
Core Cells : 48561 of 13824 (361%)
IO Cells : 49
后来查了一下A3P600的资料 发现13824是指的D-flip-flop 也就是说 我的fifo模块占用了大量的D-flip-flop资源(48561)
我想问一下 有没有跟我遇到一样的问题的 资源不够 你们怎么解决的啊
Core Cells : 48561 of 13824 (361%)
IO Cells : 49
后来查了一下A3P600的资料 发现13824是指的D-flip-flop 也就是说 我的fifo模块占用了大量的D-flip-flop资源(48561)
我想问一下 有没有跟我遇到一样的问题的 资源不够 你们怎么解决的啊
单纯的从存储器的角度来讲,软件在综合的时候既可以用Logic Element(LE)来实现,也可以用芯片内部自带的硬件Memory资源来实现,以Cyclone 3为例,将FIFO映射为M9K,一个M9K的大小为8192字节
为了让软件综合成硬件Memory资源,一个方法是利用综合属性强制综合,另一个方法是写成综合器软件能够推导出Memory资源的代码风格
学习了
2楼已经解答了 不要用LE来实现ram 用内部的Memory单元
不用LE来实现ram 用内部的Memory单元 这个是指什么 是在综合的时候设置不使用LE综合?还是编程时的语句有所改变?
如果是综合是不使用LE综合 又改如何设置呢?
ALTERA 或者XILINX都有生成FIFO这种宏单元模块的工具
生成的时候有选项 是用block ram实现还是LE实现
2L说得不错
估计还有手动改一下fifo ram的例化吧,映射到FPGA的memory cell
不错不错!
使用软件自己生成的IP core,M9K,例化到fifo中使用;
如果lz一定要自己写行为描述代码的话,一定要注意描述正确,例如复位类型、输入输出是否寄存等,如果描述的东西不符合器件的特性,即使加了强制综合指令,也没办法调用内嵌块RAM,那么生成的RAM就是大量LE搭建而成(这样的RAM速度和面积会双双受损)
利用BRAM实现,不过输出需要一个时钟周期延迟
呵呵学习了啊!
路过!
