基于激光告警系統(tǒng)的異步FIFO設計和實現(xiàn)
出處:付 林 發(fā)布于:2011-08-26 17:01:46
激光技術經(jīng)過幾十年的發(fā)展,激光武器已從理論走向?qū)嵺`。激光武器的大量出現(xiàn)帶來了日益嚴峻的威脅,激光告警設備對激光來襲的探測與預報是激光對抗的基本手段。如何從復雜的環(huán)境下探測判斷激光來襲信號是告警系統(tǒng)面臨的首要任務。隨著數(shù)字技術的發(fā)展,處理速度的不斷提高,采用數(shù)字技術如FPGA等來處理告警信號成為可能。本文采用Verilog HDL語言設計了一種異步FIFO(時鐘周期和相位相互獨立),它不僅提供數(shù)據(jù)緩沖,而且能夠?qū)崿F(xiàn)不同時鐘域間的轉(zhuǎn)換等功能。
1 激光告警接收系統(tǒng)的數(shù)據(jù)采樣和處理
對于高速在片激光告警接收系統(tǒng),具有較高的采樣速率、低功耗、體積小以及相應的高抗干擾性能是提高其成功獲取敵方激光武器有效數(shù)據(jù)的關鍵,而采用線性CMOS芯片和提高系統(tǒng)的集成度是實現(xiàn)小體積、低功耗的經(jīng)濟、有效的途經(jīng)。本系統(tǒng)采用Xilinx公司Spartan-Ⅲ系列芯片XC3S1500,設計完成異步FIFO緩存,包括采集控制電路、FFT數(shù)據(jù)處理、時鐘控制信號、接口電路等。激光告警接收系統(tǒng)的數(shù)據(jù)采樣和處理框圖如圖1所示。

2 異步FIFO設計
FIFO是英文First In First Out 的縮寫,是一種先進先出的數(shù)據(jù)緩存器,他與普通存儲器的區(qū)別是沒有外部讀寫地址線,這樣使用起來非常簡單,但缺點就是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成,不能像普通存儲器那樣可以由地址線決定讀取或?qū)懭肽硞€指定的地址。FIFO一般用于不同時鐘域之間的數(shù)據(jù)傳輸,比如FIFO的一端時AD數(shù)據(jù)采集,另一端時計算機的PCI總線,假設其AD采集的速率為16位 100K SPS,那么每秒的數(shù)據(jù)量為100K×16bit=1.6Mbps,而PCI總線的速度為33MHz,總線寬度32bit,其傳輸速率為1056Mbps,在兩個不同的時鐘域間就可以采用FIFO來作為數(shù)據(jù)緩沖。另外對于不同寬度的數(shù)據(jù)接口也可以用FIFO,例如單片機位8位數(shù)據(jù)輸出,而DSP可能是16位數(shù)據(jù)輸入,在單片機與DSP連接時就可以使用FIFO來達到數(shù)據(jù)匹配的目的。
異步FIFO由讀、寫地址邏輯,存儲單元和空滿標志邏輯四部分組成,如圖2所示。由圖2可以看出,整個系統(tǒng)分為兩個獨立的時鐘域(讀時鐘域和寫時鐘域),F(xiàn)IFO的存儲介質(zhì)為一塊雙口RAM,可以同時進行讀寫操作。在寫時鐘域部分,由寫地址邏輯生成寫控制信號和寫地址;在讀時鐘域部分,由讀地址邏輯生成讀控制信號和讀地址。空滿標志信號,由寫指針和讀指針通過異步比較器相互比較生成。對于異步FIFO設計主要有以下兩個難點:一是如何同步異步信號,避免觸發(fā)器亞穩(wěn)態(tài)的產(chǎn)生;二是如何根據(jù)FIFO的指針信號正確地判斷FIFO的空滿狀態(tài)。

2.1 亞穩(wěn)態(tài)問題的解決
在數(shù)字電路中,觸發(fā)器需要滿足setup/hold時間要求。當一個信號被寄存器鎖存時,如果信號和時鐘之間不能滿足這個要求,data2端的值就是不確定的,這個過程稱為亞穩(wěn)態(tài)。如圖3所示為常用異步時鐘和亞穩(wěn)態(tài)[2].
在異步FIFO中,由于時鐘之間周期和相位完全獨立,因此數(shù)據(jù)的丟失概率不為零。盡管亞穩(wěn)態(tài)無法徹底消除,但是可以通過下面方法將其降低到一個可以接受的范圍之內(nèi)。

?。?)對讀地址/寫地址采用Gray碼設計。這是因為采用二進制計數(shù)時所有位都可能變化,不利于跨時鐘域的同步。例如,3位二進制數(shù)從3變到4(即011~100)時,所有位都發(fā)生了變化,而Gray碼的特點是每次只有一個數(shù)據(jù)位變化。由于同步多個異步輸入信號出現(xiàn)亞穩(wěn)態(tài)的概率遠遠大于同步一個異步信號的概率,因此,寫地址指針和讀地址指針均采用Gray碼計數(shù)器,可以保證一個時鐘域的指針盡可能安全地被轉(zhuǎn)換到另一個時鐘域,有效避免了亞穩(wěn)態(tài)。
?。?)采用觸發(fā)器來同步異步輸入信號,如圖4中的兩級觸發(fā)器,可以將出現(xiàn)亞穩(wěn)態(tài)幾率降低到一個很小的程度。

不過,使用這種方法會增加延時。為了充分利用FPGA器件資源,提高系統(tǒng)運行速度,同時有效地避免亞穩(wěn)定狀態(tài),結合系統(tǒng)實際應用,本設計采用Gray碼設計讀寫地址。
2.2 空滿狀態(tài)的判斷
在異步FIFO設計中,正確地產(chǎn)生"空"/"滿"標志是困難的部分,主要有兩個問題:(1)異步時鐘域問題,由上分析可知,可采用Gray碼計數(shù)器解決;(2)因為FIFO"空"/"滿"都表明讀/寫指針相等,因此必須準確區(qū)分是讀"空"還是寫"滿"."空"、"滿"狀態(tài)的產(chǎn)生需要兩個條件:①對方向的判定:即判定具體是寫地址指針將要接近讀地址指針,還是讀地址指針將要接近寫地址指針;②讀寫地址是否相等[4].
解決辦法:將FIFO地址空間按兩位劃分成4個象限,每當讀/寫地址相等時,通過對兩位譯碼以產(chǎn)生正確的"空"/"滿"標志。
若寫指針比讀指針滯后一個象限,則FIFO為"接近滿"狀態(tài),此時置標志"direction"為1,并且鎖存其值,相應等式為:
wire disrest_n=~((wptr[n]^rptr[n-1]))&~((wptr[n-1])^rptr[n] ))
若寫指針比讀指針超前一個象限,則FIFO為"接近空"狀態(tài),此時置標志"direction"為0,并且鎖定其值,相應等式為:
wire dirclr_n=~((~(wptr[n]^rptr[n-1])&(wptr[n-1]^rptr[n]))∣~wrst_n
3 模塊設計的Verilog實現(xiàn)
Verilog 是由en:Gateway Design Automation公司于大約1984年開始發(fā)展。Gateway Design Automation公司后來被 Cadence Design Systems于1990年所購并。現(xiàn)在 Cadence 對于 Gateway 公司的 Verilog 和 Verilog-XL 模擬器擁有全部的財產(chǎn)權。 Verilog HDL進行設計的優(yōu)點是其工藝無關性。這使得工程師在功能設計,邏輯驗證階段可以不必過多考慮門級及工藝實現(xiàn)的具體細節(jié),只需根據(jù)系統(tǒng)設計的要求施加不同的約束條件,即可設計出實際電路。 Verilog HDL是一種硬件描述語言(hardware description language),為了制作數(shù)字電路而用來描述ASICs和FPGA的設計之用。Verilog 的設計者想要以 C 編程語言為基礎設計一種語言,可以使工程師比較容易學習。
3.1 存儲模塊RAM
為增加設計的可移植性,本設計的存儲單元沒有采用ISE8.1軟件中的IP核,而是通過Verilog HDL語句設計一個二維數(shù)組,通過修改參數(shù)可得到相應數(shù)據(jù)寬度的輸入/輸出存儲空間。主要語句如下:
module dp_ram(rdata,wdata,waddr,raddr,wclken,wclk);
parameter DATA_WIDTH=12;
parameter ADDR_WIDTH=10;
parameter DEPTH=1《ADDR_WIDTH;
always @(posedge wclk)
if (wclken) MEM[waddr]<=wdata;
assign rdata=MEM[raddr];
endmodule
3.2 讀/寫、空/滿標志邏輯模塊
讀寫地址設計中引用了Gray碼,因Gray碼是一種在相鄰計數(shù)之間只有一位發(fā)生變化的編碼方式,用Gray碼做地址計數(shù)可以消除在電路中的模糊現(xiàn)象,避免亞穩(wěn)態(tài)。Gray碼可以借助二進制計數(shù)器實現(xiàn)。
3.3 異步比較器
異步比較器用于判斷比較讀指針、寫指針的大小,輸出控制信號,判斷存儲器中數(shù)據(jù)是"接近滿"還是"接近空".其主要程序語句如下:
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級硬件電路
利用Verilog硬件設計描述語言,在Xilinx公司ISE 8.1軟件開發(fā)環(huán)境中編譯后得出如圖5所示的異步FIFO模塊。

采用綜合工具Synplify Pro軟件對該設計進行綜合,得出RTL級硬件電路結果圖如圖6所示。

3.5 芯片資源利用
表1列出了設計高速在片激光告警接收系統(tǒng)的異步FIFO占用FPGA(XC3S1500)芯片內(nèi)部資源的情況。由表1可知,F(xiàn)IFO模塊完成后,還有大量的資源可以利用,因此剩余資源可用于實現(xiàn)FFT數(shù)據(jù)處理、采集控制、顯示等功能,從而在一塊芯片上完成多種功能,可有效減少激光告警接收機的體積,朝小型化發(fā)展。

4 系統(tǒng)波形仿真
讀寫時鐘異步使得FIFO存儲器的輸入和輸出數(shù)據(jù)速率不相等,在讀操作時鐘頻率高于寫操作時鐘頻率時,可能出現(xiàn)"讀空"狀態(tài);當寫操作時鐘頻率高于讀操作時鐘頻率時,可能出現(xiàn)"寫滿"狀態(tài)。在高速在片激光告警接收系統(tǒng)中,數(shù)據(jù)讀取時鐘比寫時鐘要高,本文選取種情況進行仿真。無論是"讀空"還是"寫空",對于異步FIFO來說,讀取的數(shù)據(jù)一定等于寫入的數(shù)據(jù)。利用Modelsim SE 6.0仿真軟件進行仿真,其波形如圖7所示。結果表明,該設計是正確的。

本文提出的FIFO設計方法解決了不同時鐘域間的數(shù)據(jù)緩沖和時鐘轉(zhuǎn)換功能問題,避免了數(shù)據(jù)的丟失;通過運用Gray碼計數(shù)器只變換一位的特點,有效地同步了異步信號,避免了亞穩(wěn)態(tài)的產(chǎn)生;與二進制計數(shù)器相比,還能減少線路切換,進而減少功率的消耗[3];采用Verilog HDL語言描述設計,可移植性好、生成的硬件電路面積小、速度快、系統(tǒng)可靠性高。目前,該FIFO設計已經(jīng)在所研制的激光告警接收系統(tǒng)中得到應用。
參考文獻:
[1]. PCI datasheet http://m.58mhw.cn/datasheet/PCI_1201469.html.
[2]. Gray datasheet http://m.58mhw.cn/datasheet/Gray_2529394.html.
[3]. n-1 datasheet http://m.58mhw.cn/datasheet/n-1_1997158.html.
[4]. XC3S1500 datasheet http://m.58mhw.cn/datasheet/XC3S1500_1134617.html.
版權與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。
如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復控制的復合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎知識2025/6/18 16:30:52









