激光告警系統的異步FIFO設計
快速在片激光告警接收系統中,A/D信號采樣頻率與FPGA中數據處理系統的工作頻率往往不一致,因此在這種情況下,為避免數據丟失,需要設計一種數據緩存。本文采用Verilog HDL語(yǔ)言設計了一種異步FIFO(時(shí)鐘周期和相位相互獨立),它不僅提供數據緩沖,而且能夠實(shí)現不同時(shí)鐘域間的轉換等功能。
1 激光告警接收系統的數據采樣和處理
對于高速在片激光告警接收系統,具有較高的采樣速率、低功耗、體積小以及相應的高抗干擾性能是提高其成功獲取敵方激光武器有效數據的關(guān)鍵,而采用線(xiàn)性CMOS芯片和提高系統的集成度是實(shí)現小體積、低功耗的最經(jīng)濟、最有效的途經(jīng)。本系統采用Xilinx公司Spartan-Ⅲ系列芯片XC3S1500,設計完成異步FIFO緩存,包括采集控制電路、FFT數據處理、時(shí)鐘控制信號、接口電路等。激光告警接收系統的數據采樣和處理框圖如圖1所示。
2 異步FIFO設計
異步FIFO由讀、寫(xiě)地址邏輯,存儲單元和空滿(mǎn)標志邏輯四部分組成,如圖2所示。由圖2可以看出,整個(gè)系統分為兩個(gè)獨立的時(shí)鐘域(讀時(shí)鐘域和寫(xiě)時(shí)鐘域),FIFO的存儲介質(zhì)為一塊雙口RAM,可以同時(shí)進(jìn)行讀寫(xiě)操作。在寫(xiě)時(shí)鐘域部分,由寫(xiě)地址邏輯生成寫(xiě)控制信號和寫(xiě)地址;在讀時(shí)鐘域部分,由讀地址邏輯生成讀控制信號和讀地址??諠M(mǎn)標志信號,由寫(xiě)指針和讀指針通過(guò)異步比較器相互比較生成。對于異步FIFO設計主要有以下兩個(gè)難點(diǎn):一是如何同步異步信號,避免觸發(fā)器亞穩態(tài)的產(chǎn)生;二是如何根據FIFO的指針信號正確地判斷FIFO的空滿(mǎn)狀態(tài)[1]。
2.1 亞穩態(tài)問(wèn)題的解決
在數字電路中,觸發(fā)器需要滿(mǎn)足setup/hold時(shí)間要求。當一個(gè)信號被寄存器鎖存時(shí),如果信號和時(shí)鐘之間不能滿(mǎn)足這個(gè)要求,data2端的值就是不確定的,這個(gè)過(guò)程稱(chēng)為亞穩態(tài)。如圖3所示為常用異步時(shí)鐘和亞穩態(tài)[2]。
在異步FIFO中,由于時(shí)鐘之間周期和相位完全獨立,因此數據的丟失概率不為零。盡管亞穩態(tài)無(wú)法徹底消除,但是可以通過(guò)下面方法將其降低到一個(gè)可以接受的范圍之內。
(1)對讀地址/寫(xiě)地址采用Gray碼設計。這是因為采用二進(jìn)制計數時(shí)所有位都可能變化,不利于跨時(shí)鐘域的同步。例如,3位二進(jìn)制數從3變到4(即011~100)時(shí),所有位都發(fā)生了變化,而Gray碼的特點(diǎn)是每次只有一個(gè)數據位變化。由于同步多個(gè)異步輸入信號出現亞穩態(tài)的概率遠遠大于同步一個(gè)異步信號的概率,因此,寫(xiě)地址指針和讀地址指針均采用Gray碼計數器,可以保證一個(gè)時(shí)鐘域的指針盡可能安全地被轉換到另一個(gè)時(shí)鐘域,有效避免了亞穩態(tài)。
(2)采用觸發(fā)器來(lái)同步異步輸入信號,如圖4中的兩級觸發(fā)器,可以將出現亞穩態(tài)幾率降低到一個(gè)很小的程度。
不過(guò),使用這種方法會(huì )增加一級延時(shí)。為了充分利用FPGA器件資源,提高系統運行速度,同時(shí)有效地避免亞穩定狀態(tài),結合系統實(shí)際應用,本設計采用Gray碼設計讀寫(xiě)地址。
2.2 空滿(mǎn)狀態(tài)的判斷
在異步FIFO設計中,正確地產(chǎn)生“空”/“滿(mǎn)”標志是最困難的部分,主要有兩個(gè)問(wèn)題:(1)異步時(shí)鐘域問(wèn)題,由上分析可知,可采用Gray碼計數器解決;(2)因為FIFO“空”/“滿(mǎn)”都表明讀/寫(xiě)指針相等,因此必須準確區分是讀“空”還是寫(xiě)“滿(mǎn)”。“空”、“滿(mǎn)”狀態(tài)的產(chǎn)生需要兩個(gè)條件:①對方向的判定:即判定具體是寫(xiě)地址指針將要接近讀地址指針,還是讀地址指針將要接近寫(xiě)地址指針;②讀寫(xiě)地址是否相等[4]。
解決辦法:將FIFO地址空間按最高兩位劃分成4個(gè)象限,每當讀/寫(xiě)地址相等時(shí),通過(guò)對最高兩位譯碼以產(chǎn)生正確的“空”/“滿(mǎn)”標志。
若寫(xiě)指針比讀指針滯后一個(gè)象限,則FIFO為“接近滿(mǎn)”狀態(tài),此時(shí)置標志“direction”為1,并且鎖存其值,相應等式為:
wire disrest_n=~((wptr[n]^rptr[n-1]))~((wptr[n-1])^rptr[n] ))
若寫(xiě)指針比讀指針超前一個(gè)象限,則FIFO為“接近空”狀態(tài),此時(shí)置標志“direction”為0,并且鎖定其值,相應等式為:
wire dirclr_n=~((~(wptr[n]^rptr[n-1])(wptr[n-1]^rptr[n]))∣~wrst_n
3 模塊設計的Verilog實(shí)現[3-4]
3.1 存儲模塊RAM
為增加設計的可移植性,本設計的存儲單元沒(méi)有采用ISE8.1軟件中的IP核,而是通過(guò)Verilog HDL語(yǔ)句設計一個(gè)二維數組,通過(guò)修改參數可得到相應數據寬度的輸入/輸出存儲空間。主要語(yǔ)句如下:
module dp_ram(rdata,wdata,waddr,raddr,wclken,wclk);
parameter DATA_WIDTH=12;
parameter ADDR_WIDTH=10;
parameter DEPTH=1ADDR_WIDTH;
always @(posedge wclk)
if (wclken) MEM[waddr]=wdata;
assign rdata=MEM[raddr];
endmodule
3.2 讀/寫(xiě)、空/滿(mǎn)標志邏輯模塊
讀寫(xiě)地址設計中引用了Gray碼,因Gray碼是一種在相鄰計數之間只有一位發(fā)生變化的編碼方式,用Gray碼做地址計數可以消除在電路中的模糊現象,避免亞穩態(tài)。Gray碼可以借助二進(jìn)制計數器實(shí)現。
3.3 異步比較器
異步比較器用于判斷比較讀指針、寫(xiě)指針的大小,輸出控制信號,判斷存儲器中數據是“接近滿(mǎn)”還是“接近空”。其主要程序語(yǔ)句如下:
module async_cmp(aempty_n,afull_n,wptr,rptr,wrst_n);
always @(posedge high or negedge dirset_n or negedge dirclr_n)
if (!dirclr_n) direction = 1'b0;
else if (!dirset_n) direction = 1'b1;
else direction = high;
endmodule
3.4 異步FIFO模塊及RTL級硬件電路[5]
利用Verilog硬件設計描述語(yǔ)言,在Xilinx公司ISE 8.1軟件開(kāi)發(fā)環(huán)境中編譯后得出如圖5所示的異步FIFO模塊。
采用綜合工具Synplify Pro軟件對該設計進(jìn)行綜合,得出RTL級硬件電路結果圖如圖6所示。
3.5 芯片資源利用
表1列出了設計高速在片激光告警接收系統的異步FIFO占用FPGA(XC3S1500)芯片內部資源的情況。由表1可知,FIFO模塊完成后,還有大量的資源可以利用,因此剩余資源可用于實(shí)現FFT數據處理、采集控制、顯示等功能,從而在一塊芯片上完成多種功能,可有效減少激光告警接收機的體積,朝小型化發(fā)展。
4 系統波形仿真
讀寫(xiě)時(shí)鐘異步使得FIFO存儲器的輸入和輸出數據速率不相等,在讀操作時(shí)鐘頻率高于寫(xiě)操作時(shí)鐘頻率時(shí),可能出現“讀空”狀態(tài);當寫(xiě)操作時(shí)鐘頻率高于讀操作時(shí)鐘頻率時(shí),可能出現“寫(xiě)滿(mǎn)”狀態(tài)。在高速在片激光告警接收系統中,數據讀取時(shí)鐘比寫(xiě)時(shí)鐘要高,本文選取第一種情況進(jìn)行仿真。無(wú)論是“讀空”還是“寫(xiě)空”,對于異步FIFO來(lái)說(shuō),讀取的數據一定等于寫(xiě)入的數據。利用Modelsim SE 6.0仿真軟件進(jìn)行仿真,其波形如圖7所示。結果表明,該設計是正確的。
本文提出的FIFO設計方法解決了不同時(shí)鐘域間的數據緩沖和時(shí)鐘轉換功能問(wèn)題,避免了數據的丟失;通過(guò)運用Gray碼計數器一次只變換一位的特點(diǎn),有效地同步了異步信號,避免了亞穩態(tài)的產(chǎn)生;與二進(jìn)制計數器相比,還能減少線(xiàn)路切換,進(jìn)而減少功率的消耗[3];采用Verilog HDL語(yǔ)言描述設計,可移植性好、生成的硬件電路面積小、速度快、系統可靠性高。目前,該FIFO設計已經(jīng)在所研制的激光告警接收系統中得到應用。
評論