[笔记]ISE中FIFO和DDR3
基于FPGA内部的FIFO设计
来源:http://www.dzsc.com/data/html/2008-9-16/69183.html
在FPGA设计中,内部的FIFO设计是 个不可或缺的内容,其设计的质师会直接影响FPGA的逻辑容量和时序。在Xilinx中的某些高端器件是内置的FIFO控制器,在coregen中可以直接产生这的硬FIFO控制器, 强烈建议能够使用硬的HFO控制器的场合,直接的好处足节省逻辑资源和提高逻辑速度,对于绝大部分的HFO设计,推荐使用Xilinx coregm产生。这样可以保证功能正确,对于需要定制FIFO控制器的场合请小心。
2012-09-06 周四 晴
程文帆讲解DDR3得出的注意点:
1、数据缓存后缀用 _d1或者 _r1 标注。若是命令就用 _cmd_ 。若是初始化就用 _int_
2、如果想将电平信号level转为脉冲信号pulse,可以先将rd_level缓存一级取反再与原始电平相与就可以得到rd_pulse。---这个思想非常好,我之前也有遇到,只是没想到。其中在博客《输入信号的边缘检测》一文中也有用到类似的。
3、若程序中央出现“常数”,最好在该段落就用parameter进行赋值,方便程序更改。parameter最好指名下位宽,否则默认是32位。
4、讲解程序时,可以一句句地讲下来,不清楚地方要注释下。可以结合相关PDF文档和宏功能向导进行详细说明。
5、在做整个project前就要规划好每部分所需的状态机。状态机可以用one-hot编码,且采用三段式的方法,不好写且比较短时,可以考虑一段式的。
6、FIFO与DDR3在临界处的处理要非常小心,有很多细节需要理清。其中FIFO可以有两种方法。一种是流水式的级联法,一边读一边写,数据是自动输出的,这种方法容易控制,建议用这种方法。还有一种是你在读FIFO时,数据才会输出,这种方法在控制上不好写,不推荐。还有DDR3是读写轮流的,不可能出现同时读或者写的情况。DDR3的IP核中至少有3个FIFO。一个是写FIFO,一个是命令FIFO,一个是读FIFO。读写FIFO可以用一半出一半进来提高它的工作效率。DDR3中IP核的行ROW、块BANK、列COLUMN的排列不同,效率也会不同,控制方法也会不同。程文帆是采用行后块最后列,易于控制行的读写。DDR3中RZQ 是下拉100欧电阻,ZIO是空悬的。