<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

異步FIFO設計

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:本文介紹如何應用美國QUICKLOGIC公司的QUICKRAM器件設計高速、高可靠(Asynchronous FIFO)。

廣泛地用于計算機網(wǎng)絡(luò )工業(yè)中進(jìn)行非同步數據傳送,這里的非同步指按一種速率發(fā)送而按另一速率接收。因此有兩個(gè)不同的時(shí)鐘,一個(gè)為讀同步時(shí)鐘,一個(gè)為寫(xiě)同步時(shí)鐘。

當數據從一個(gè)時(shí)鐘驅動(dòng)的模塊進(jìn)入另一個(gè)時(shí)鐘驅動(dòng)的模塊時(shí),一個(gè)需仔細解決的問(wèn)題就出現了。例如當寫(xiě)時(shí)鐘比讀時(shí)鐘快時(shí),未讀走數據有可能被新數據覆蓋,因而導致數據丟失。為了解決這個(gè)問(wèn)題,就必須增加一些控制信號和狀態(tài)信號,控制信號如pusb、pop,狀態(tài)信號如empty,almostempty,full,almost-full。

功能描述

典型的異步FIFO(AsynFIFO)都是由異步雙端口RAM和控制邏輯構成,控制邏輯包含讀指針和寫(xiě)指針。

當FIFO中有數據而非空時(shí),POP信號(同步于讀時(shí)鐘)用于控制數據的讀出,所讀數據來(lái)自讀指針所指的(AUAL PORT RAM)中的存儲單元,并且讀指針加一。當讀指針趕上寫(xiě)指針時(shí),FIFO為空并且用empty信號(同步于讀時(shí)鐘)來(lái)指示這種情況。

當FIFO中有空間而非滿(mǎn)時(shí),PUSH信號(同步于寫(xiě)時(shí)鐘)用于控制數據的寫(xiě)入,所寫(xiě)數據寫(xiě)入寫(xiě)指針所指的雙端口RAM中的存儲單元,并且寫(xiě)指針加一。當寫(xiě)指針趕上讀指針時(shí),FIFO為滿(mǎn)足并且用full信號(同步于寫(xiě)時(shí)鐘)來(lái)指示這種情況。

當FIFO中只剩不足三個(gè)數據時(shí),almost-empty有效(同步于讀時(shí)鐘)。類(lèi)似地,當FIFO中還有不足四個(gè)空位時(shí)almost-full將有效(同步于寫(xiě)時(shí)鐘)。用戶(hù)可根據需要修改讀、寫(xiě)側的計數器初始值,從而確定所需要的almost-empty和almost-full提前量。例如當計數器初始化為7時(shí),almost-empty和almost-full將分別比empty和full提前7個(gè)位置。讀側和寫(xiě)側的狀態(tài)機將根據內部比較器的輸出來(lái)確定這些狀態(tài)信號。每側的狀態(tài)機都有兩上D觸發(fā)器,構成雙同步,這樣的設計可大幅度提高系統的可靠性,使得平均元故障時(shí)間(MTBF)可大于100年。

結構

圖1為AsynFIFO的頂層設計框圖(Quicklogic免費提供全部設計文件),并給出了各相模塊的設計文件名。圖中各模塊可根據要求修改,以增加FIFO的寬度和深度。請注意,本文圖中沒(méi)有給出讀側和寫(xiě)側的狀態(tài)機。

RAM塊

圖1中用了一個(gè)64×32的RAM塊。該RAM塊由Verilog代碼定義,該代碼由SpDE內的RAM/ROM/FIFO向導自動(dòng)產(chǎn)生。在向導中用戶(hù)可自由指定所需的寬度和深度,向導自動(dòng)產(chǎn)生所需的Verilog/VHDL代碼和原理圖中所需的symbol。

比較器

參考設計中的比較器為5位,采用純原理圖方法輸入。當用戶(hù)修改了RAM塊的深度時(shí),比較器的寬度也要與之對應。例如當FIFO深度為256時(shí),地址須為8位,因而是比較器也應為8位。

格雷碼計數器

為了提高M(jìn)TFB,設計中采用了格雷碼計數器,該計數器為5位,采用Verilog/VHDL語(yǔ)言實(shí)現。它們可以被改成6位、7位、8位、9位,以對應深度為64、128、256、512的FIFO。

鎖存器

圖中的鎖存器為verilog/VHDL語(yǔ)言所寫(xiě),讀側有三個(gè),寫(xiě)側有一個(gè),用戶(hù)可自由地修改其寬度。它們用于狀態(tài)、控制信號的產(chǎn)生。

性能

RARTS:QuickRAM family

AREA:48 buffer cells

Speed:write colck(WCLK)=136MHz,read clock(RCLK)=129MHz

結論

采用QuickRAM器件實(shí)現異步FIFO方便靈活,并且速度快,成本低,還可以實(shí)現非常規深度和寬度的專(zhuān)用FIFO。



關(guān)鍵詞: 異步FIFO

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>