基于異步FIFO和PLL的雷達數(shù)據(jù)采集系統(tǒng)
3 基于FPGA實現(xiàn)異步FIFO設(shè)計
異步FIFO是在兩個相互獨立的時鐘域下,數(shù)據(jù)在一個時鐘域?qū)懭隖IFO而在另一個時鐘域又從該FIFO中將數(shù)據(jù)讀出。異步FIFO通常被用來將數(shù)據(jù)從一個時鐘域安全地傳送到另一個時鐘域。FIFO可作為A/D轉(zhuǎn)換器件和DSP間的橋梁。使用FIFO作為輸入緩沖,由A/D轉(zhuǎn)換器件把采樣轉(zhuǎn)換的值同步寫入FIFO,每寫入一塊數(shù)據(jù)便向DSP發(fā)出一個信號,以提醒DSP從FIFO中讀取數(shù)據(jù)塊。這樣比單次讀的效率要高的多,不會有數(shù)據(jù)丟失,且僅占用少量的系統(tǒng)資源。設(shè)計一個異步FIFO,讀寫使能由不同的時鐘激勵控制輸入和輸出數(shù)據(jù),空/滿標(biāo)志既用來防止數(shù)據(jù)的上溢和下溢,也作為寫入/讀出控制邏輯的輸入信號,用來控制A/D數(shù)據(jù)采樣過程和對DSP數(shù)據(jù)的傳輸。當(dāng)FIFO輸出滿標(biāo)志時,寫入控制邏輯停止A/D采樣,等待滿標(biāo)志無效時恢復(fù)數(shù)據(jù)采樣。從而防止數(shù)據(jù)丟失。當(dāng)FIFO輸出空標(biāo)志時,讀出控制邏輯停止DSP的數(shù)據(jù)讀取,等待空標(biāo)志無效時恢復(fù)數(shù)據(jù)讀取。圖1中FPGA內(nèi)的寫入/讀出控制邏輯使用有限狀態(tài)機設(shè)計,有限狀態(tài)機能有效的進行讀寫時序控制,根據(jù)A/D和處理器的時序控制原理畫出狀態(tài)轉(zhuǎn)移圖,進行編程設(shè)定。
FIFO的參數(shù)指標(biāo)直接影響數(shù)據(jù)采集速度。首先,F(xiàn)IFO的讀寫速度要足夠快,其工作頻率至少要大于等于A/D轉(zhuǎn)換器件的采樣率,才能充分發(fā)揮A/D轉(zhuǎn)換器件的高采樣率并保證無數(shù)據(jù)丟失。其次,F(xiàn)IFO的存儲容量要適宜,容量過大會造成資源浪費,容量過小會造成溢出或數(shù)據(jù)采集速度過慢。系統(tǒng)FIFO采用EP3C120實現(xiàn)。由FPGA實現(xiàn)異步FIFO時,可方便的根據(jù)A/D轉(zhuǎn)換器的采樣精度和DSP數(shù)據(jù)寬度設(shè)計FIFO的輸人數(shù)據(jù)寬度和輸出數(shù)據(jù)寬度,且采用PLL設(shè)計后,可方便的調(diào)整FIFO寫入端和讀出端的時鐘頻率,使FIFO設(shè)計的高速緩存具有一定的通用性。異步FIFO是在QuartusⅡ開發(fā)環(huán)境下利用其IP核設(shè)計的,該設(shè)計的異步FIFO可支持高達256位的數(shù)據(jù)寬度;支持存儲的最大深度可達131 072words,同時支持空滿標(biāo)志位。表1給出系統(tǒng)在不同存儲深度時消耗FPGA片內(nèi)資源的情況。可見,針對不同的數(shù)據(jù)采集需求,可利用Ahera公司提供的參數(shù)化的IP核方便的選擇FIFO的數(shù)據(jù)位寬度及存儲深度,避免資源浪費。
考慮到前端A/D轉(zhuǎn)換速度快,精度為8位,后端DSP的處理位數(shù)一般可做到32位,為提高系統(tǒng)實時性,采用輸入數(shù)據(jù)寬度為8位,輸出寬度為32位的雙時鐘FIFO,如圖2所示。
圖3為對FIFO仿真的結(jié)果。雙時鐘FIFO輸入為8位、輸出為32位,且FIFO兩端的讀寫時鐘頻率不同。
分析系統(tǒng)的吞吐率:由于A/D數(shù)據(jù)輸入端口的速度固定,數(shù)據(jù)按采樣頻率輸入FIFO,因此輸入數(shù)據(jù)的時間是不變的,而DSP一次訪問可取走4個有效數(shù)據(jù),大大增加DSP讀取數(shù)據(jù)的吞吐率,提高系統(tǒng)實時處理能力。
評論