??? 摘? 要: FPGA是一種高密度邏輯器件。與通用的MCU相比, FPGA具有并行數(shù)據(jù)處理特性。利用該特性,能夠?qū)崿F(xiàn)對高速A/D的采樣控制;同樣, 使用FPGA對采樣數(shù)據(jù)進(jìn)行頻譜分析,能夠達(dá)到比DSP芯片更高的數(shù)據(jù)處理速度。?
????關(guān)鍵詞: 采樣;MCU;FPGA
?
??? 在計算機(jī)控制系統(tǒng)中,常常需要采集各種模擬量信號,并對它們進(jìn)行模數(shù)轉(zhuǎn)換,將外部輸入的模擬信號轉(zhuǎn)換成數(shù)字信號,以便計算機(jī)進(jìn)行加工處理。在很多情況下,計算機(jī)應(yīng)用系統(tǒng)中常用普通MCU(如51系列單片機(jī)或控制型DSP)完成系統(tǒng)任務(wù)。由于MCU一般均采用指令處理結(jié)構(gòu),要想達(dá)到高的處理速度相當(dāng)困難,一般速率不會超過MHz級。而FPGA具有高速并行處理的特性,采用FPGA控制數(shù)據(jù)采集可以達(dá)到很高的采樣速率。?
??? 數(shù)字信號處理的方式一般有兩種:一種是使用單片機(jī)或DSP等MCU,通過軟件編程實(shí)現(xiàn);另外一種是利用專用邏輯電路或可編程邏輯器件實(shí)現(xiàn)。用軟件編程來實(shí)現(xiàn),雖然有很大的靈活性,但受DSP或單片機(jī)性能及程序指令順序執(zhí)行的限制,難以實(shí)現(xiàn)高速、大規(guī)模運(yùn)算;而專用集成電路芯片或FPGA卻可以實(shí)現(xiàn)很高的運(yùn)算速度,非常適合高速信號處理系統(tǒng)的應(yīng)用。?
??? 鑒于此,可以采用FPGA來完成一個模擬信號的采集分析系統(tǒng)?,F(xiàn)在用FPGA做信號處理使用的大多是比較高端的片子,價格都比較貴,像ALTERA的Stratix系列、XILINIX的Virtex系列等??紤]到成本,在本設(shè)計中嘗試使用ALTERA的低端FPGA來完成設(shè)計。?
??? 盡管ALTERA提供了很多關(guān)于數(shù)字信號處理的IPCORE,但使用是需要收費(fèi)的,而且費(fèi)用較高。通過自己編程實(shí)現(xiàn)信號處理可以節(jié)省大量的成本,本設(shè)計就是采用這一方法。?
1 器件選擇?
??? 采用的FPGA是ALTERA的EP1C6T144C8,EP1C6T144C8有144個引腳,最多可使用98個I/O口,支持JTAG調(diào)試,AS、PS下載,內(nèi)有5 980個LES,總的RAM位數(shù)是92 160 bit,內(nèi)嵌有兩個鎖相環(huán),四個全局時鐘,內(nèi)核電壓為1.5 V,輸出I/O口驅(qū)動電壓為3.3 V,支持LVDS、TTL、CMOS等電平傳輸。采用的配置芯片為EPCS1。這是一款低端的FPGA芯片,具有較高的性價比。?
??? A/D采樣芯片是TLC5510,這是一款高速A/D采樣芯片,它是一種采用CMOS工藝制造的8位高阻抗并行A/D芯片,能提供的最大采樣率為20 MS/s。由于TLC5510采用了半閃速結(jié)構(gòu)及CMOS工藝,因而大大減少了器件中比較器的數(shù)量,而且在高速轉(zhuǎn)換的同時能夠保持較低的功耗。?
2 FPGA內(nèi)部電路?
??? FPGA內(nèi)部電路分為兩大模塊。?
??? (1)采樣控制:TLC5510的采樣控制引腳只有兩個,一個是時鐘端CLOCK,一個是輸出使能端(低電有效)。根據(jù)TLC5510采樣控制的時序電路,芯片CLOCLK的下降沿采樣,經(jīng)過2.5個周期的延遲后,得到采樣結(jié)果,這時如果使能端有效,則數(shù)據(jù)送到輸出端,所以控制起來比較簡單。但是要注意的是采樣時鐘和FFT時鐘之間的匹配。?
??? 根據(jù)TLC5510的采樣時序特點(diǎn),在設(shè)計采樣控制模塊時可以只控制采樣時鐘,而輸出始終使能,就能夠完成采樣控制。?
??? 控制FPGA內(nèi)部RAM的寫入時鐘,當(dāng)完成一次采樣后,將TLC5510數(shù)據(jù)端的數(shù)據(jù)取走,這樣就完成了采樣到寫入的過程。?
??? 分頻模塊將時鐘分到和系統(tǒng)時序相適合的時鐘。采樣控制電路將采樣結(jié)果由八位變?yōu)槭唬嫒隦AM中。?
??? (2)FFT模塊:設(shè)計中的FFT模塊實(shí)現(xiàn)的是256點(diǎn)的定點(diǎn)FFT運(yùn)算,采用基-2頻率抽選法,圖1為8位算法的流程示意圖,256點(diǎn)算法與其類似。?
?
?
??? FFT模塊主要包括四個單元:蝶形變換單元,地址發(fā)生單元,RAM塊選擇單元(其中包括旋轉(zhuǎn)因子表),時鐘控制單元。圖2為整體電路結(jié)構(gòu)。?
?
?
??? ①蝶形變換單元:在蝶形變換電路中,最為核心的就是乘法器和加法器,可以通過對QUARTUS的宏單元的調(diào)用,實(shí)現(xiàn)乘法運(yùn)算,也可以自己編寫乘法器,利用Verilog的for語句實(shí)現(xiàn)16×16無符號乘法器的部分原碼如下:?
??? always@(data1,data2)?
??? ? begin?
??? ? data_out=32′d0;//初始賦0?
????for(a=5′d0;a<=5′d15;a=a+5′d1)?
??????? if(data2[a]==1)?