單口RAM、雙口RAM、FIFO

單口與雙口的區別在於,單口只有一組數據線與地址線,因此讀寫不能同時進行。而雙口有兩組數據線與地址線,讀寫可同時進行。FIFO讀寫可同時進行,可以看作是雙口。
    雙口RAM分僞雙口RAM(Xilinx稱爲Simple two-dual RAM)與雙口RAM(Xilinx稱爲true two-dual RAM)。僞雙口RAM,一個端口只讀,另一個端口只寫;而雙口RAM兩個端口都可以讀寫。
    FIFO也是一個端口只讀,另一個端口只寫。FIFO與僞雙口RAM的區別在於,FIFO爲先入先出,沒有地址線,不能對存儲單元尋址;而僞雙口RAM兩個端口都有地址線,可以對存儲單元尋址。
    異步時鐘域的緩存只要是雙口器件都可以完成。但FIFO不需對地址進行控制,是最方便的。

 

摘錄:

根據我的設計經驗,其實FIFO的核心還是一片RAM。只不過把RAM的操作封裝了一下,添加了兩個指針,也就是兩個地址寄存器,一個寫地址寄存器,一個讀地址寄存器。 當FIFO初始化時,讀地址寄存器和寫地址寄存器皆爲零; 當FIFO寫一個數據時,把數據寫入當前地址寄存器指向的RAM地址,然後寫地址寄存器加1;如果加到RAM的底部了,就再次變爲零; 當FIFO讀數據時,把讀地址寄存器的數據讀出來,然後讀地址寄存器加1;如果讀到RAM的底部了,就再次變爲零; 如果讀地址寄存器追上寫地址寄存器,就說明讀空了,沒數據可讀了; 如果寫地址寄存器的值又追上了讀地址寄存器,就說明寫滿了,沒法寫了; 大概就是這樣了。

 

FIFO就是一個雙口BRAM,外部加上一些控制電路構成的,要想充分理解FIFO,最好先了解一下雙口BRAM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章