《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 異步FIFO設計
異步FIFO設計
摘要: 異步FIFO設計_電子技術交流網本文介紹如何應用美國QUICKLOGIC公司的QUICKRAM器件設計高速,、高可靠異步FIFO(Asynchronous FIFO),。
關鍵詞: 接口IC 異步 FIFO QUICKRAM
Abstract:
Key words :

    異步FIFO廣泛地用于計算機網絡工業(yè)中進行非同步數(shù)據傳送,,這里的非同步指按一種速率發(fā)送而按另一速率接收,。因此異步FIFO有兩個不同的時鐘,一個為讀同步時鐘,,一個為寫同步時鐘,。

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

功能描述

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

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

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

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

結構

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

RAM塊

    圖1中用了一個64×32的RAM塊,。該RAM塊由Verilog代碼定義,,該代碼由SpDE內的RAM/ROM/FIFO向導自動產生。在向導中用戶可自由指定所需的寬度和深度,,向導自動產生所需的Verilog/VHDL代碼和原理圖中所需的symbol,。

比較器

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

格雷碼計數(shù)器

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

鎖存器

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

性能

    RARTS:QuickRAM family

    AREA:48 buffer cells

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

結論

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


 

此內容為AET網站原創(chuàng),,未經授權禁止轉載。