一種用于激光告警機(jī)的圖像采集與處理系統(tǒng)設(shè)計(jì)
在數(shù)據(jù)的采集過程中,數(shù)據(jù)傳送的同步信號(hào)由 STROBE引腳產(chǎn)生,當(dāng)數(shù)據(jù)在一個(gè)數(shù)據(jù)區(qū)存滿時(shí),通過LVAL引腳通知FPGA 轉(zhuǎn)到另一數(shù)據(jù)存儲(chǔ)區(qū)。圖2 給出了數(shù)據(jù)采集的時(shí)序圖。其中CLK_IN是由FPGA的內(nèi)核數(shù)字時(shí)鐘管理模塊DCM 來實(shí)現(xiàn)倍頻得到。在時(shí)鐘控制和管理方面DCM比DLL功能更強(qiáng)大,使用更靈活。DCM的主要功能包括消除時(shí)鐘時(shí)延、頻率綜合和時(shí)鐘相位的調(diào)整。在本設(shè)計(jì)中對輸入時(shí)鐘STROBE作8倍頻處理,以實(shí)現(xiàn)數(shù)據(jù)一轉(zhuǎn)八串并轉(zhuǎn)換的鎖存輸出。
本文引用地址:http://m.butianyuan.cn/article/191837.htm
高速采集程序的設(shè)計(jì)主要有接口匹配、采集狀態(tài)機(jī)和數(shù)據(jù)存儲(chǔ)三部分。在接口匹配中由于LVDS 的輸入與輸出都是內(nèi)匹配的,所以LVDS 間可直接連接。在FPGA 內(nèi),需對差分輸入時(shí)鐘緩沖器(IBUFDS)、差分輸入的全局時(shí)鐘緩沖器(IBUFGDS)和差分輸出時(shí)鐘緩沖器(OBUFDS) 例化。
FPGA 的部分代碼如下:
component IBUFDS - - 差分輸入時(shí)鐘緩沖器( IBUFDS)
port (O : out STD_ULOGIC;
I : in STD_ULOGIC;
IB : in STD_ULOGIC) ;
end component ;
IBUFDS_INSTANCE_NAME: IBUFDS
port map (O=>user_O,I=> user_I,IB =>user_IB) ;
3.2數(shù)據(jù)處理模塊
Spartan3系列FPGA有豐富的乘法器資源,在不使用任何優(yōu)化算法的情況下每一個(gè)蝶形運(yùn)算需要4個(gè)實(shí)數(shù)乘法器,因此在FPGA中每個(gè)蝶形運(yùn)算可以用 4個(gè)乘法器在一個(gè)時(shí)鐘周期內(nèi)完成。豐富的RAM資源便于實(shí)現(xiàn)數(shù)據(jù)的流水操作,即對于輸入、輸出數(shù)據(jù)以及中間變量可以開辟不同的存儲(chǔ)區(qū),例如當(dāng)計(jì)算第i組數(shù)據(jù)時(shí),第i-1組計(jì)算結(jié)果正在輸出,第i+1組數(shù)據(jù)正在輸入。
由于在FFT運(yùn)算中必然產(chǎn)生復(fù)數(shù),因此為使計(jì)算方便,在設(shè)計(jì)之初就將FFT變換器的數(shù)據(jù)輸入口分為實(shí)數(shù)和虛數(shù)。1024點(diǎn)復(fù)數(shù)FFT運(yùn)算,按照基-2頻率抽取運(yùn)算分成10級,每級包括1個(gè)雙端RAM,1個(gè)地址發(fā)生器,一個(gè)ROM用于存儲(chǔ)旋轉(zhuǎn)因子表,1個(gè)蝶形運(yùn)算單元,2個(gè)選擇緩沖單元。為了簡化地址單元電路,將復(fù)數(shù)數(shù)據(jù)的實(shí)部虛部組合成一個(gè)數(shù)據(jù)存儲(chǔ)在RAM中。由于使用雙口RAM ,當(dāng)一個(gè)存儲(chǔ)單元中的數(shù)據(jù)讀出做運(yùn)算時(shí),該存儲(chǔ)單元就能夠存儲(chǔ)上一級來的數(shù)據(jù),因此這種結(jié)構(gòu)的FFT 可以進(jìn)行流水線操作,能夠?qū)π盘?hào)樣本進(jìn)行實(shí)時(shí)連續(xù)的運(yùn)算。選擇緩沖器的用途是拉齊數(shù)據(jù),將RAM 輸出的2個(gè)復(fù)數(shù)數(shù)據(jù)拆成4個(gè)實(shí)數(shù)數(shù)據(jù)輸入到蝶形運(yùn)算單元,完成蝶形運(yùn)算后的數(shù)據(jù)進(jìn)入選擇緩沖器組合成2個(gè)復(fù)數(shù)數(shù)據(jù)輸出。
評論