模塊雖小但是要有新意,首先寫一個同步FIFO,這是一個爛大街的入門級項目,但是我肯定不會寫的那么簡單,需求如下:
和大多數(shù)文章所寫描述的同步FIFO的需求不一樣的地方在于最后一個需求,內(nèi)部例化的sram的讀取動作不是讀及讀出的操作。因此基于這種sram,又要兼顧FIFO的標(biāo)準(zhǔn)協(xié)議,以及需要FIFO邏輯速度到達最優(yōu),需要對設(shè)計進行一些小的處理
下圖為本次同步FIFO設(shè)計的框圖:
設(shè)計分析:
- 使用reg0的原因
由于sram延時一拍讀出,因此就需要有reg0處理延時,既只要reg0為空,寄存器就向sram讀數(shù),達到提前取數(shù),消除延時的效果。(一般sram有幾拍延時就有幾個reg0) - 使用reg1的原因
reg1用于處理邊界條件,在sram和reg0為空時,沒有讀使能的情況下寫入第一個數(shù),此時第一個數(shù)如果存入sram,則讀取流程將變成sram-reg0-output,中間延遲過長,但是假如使用reg1用于存儲第一個數(shù)據(jù),則可以把這一拍數(shù)據(jù)延時解決掉。(且同上述,一般有幾個reg0就有幾個reg1) - 使用mux2的原因
mux2也是用于處理邊界條件,在sram和所有寄存器都為空時,寫使能和讀使能同時來到,則數(shù)據(jù)bypass通過SYNC_FIFO模塊。 - mux0和mux1則用于處理上述邏輯關(guān)于數(shù)據(jù)通道切換的處理。
- 關(guān)于sram存取、各種空滿信號的判斷,就不再一一敘述,想了解這方面設(shè)計可以參見網(wǎng)上各種同步FIFO設(shè)計。
-
寄存器
+關(guān)注
關(guān)注
31文章
5407瀏覽量
123007 -
sram
+關(guān)注
關(guān)注
6文章
780瀏覽量
115594 -
fifo
+關(guān)注
關(guān)注
3文章
397瀏覽量
44546 -
同步FIFO
+關(guān)注
關(guān)注
0文章
5瀏覽量
5414 -
FIFO設(shè)計
+關(guān)注
關(guān)注
0文章
7瀏覽量
5019
發(fā)布評論請先 登錄
同步FIFO設(shè)計詳解及代碼分享

握手型接口的同步FIFO實現(xiàn)

可靠性設(shè)計分析系統(tǒng)
異步FIFO的設(shè)計分析及詳細代碼

FIFO設(shè)計—同步FIFO

一個簡單的RTL同步FIFO設(shè)計
基于寄存器的同步FIFO
基于Verilog的同步FIFO的設(shè)計方法
為什么異步fifo中讀地址同步在寫時鐘域時序分析不通過?
同步FIFO和異步FIFO的區(qū)別 同步FIFO和異步FIFO各在什么情況下應(yīng)用
同步FIFO和異步FIFO區(qū)別介紹

評論