基於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是空懸的。
