《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于FPGA的數(shù)據(jù)采集分析系統(tǒng)設(shè)計(jì)

基于FPGA的數(shù)據(jù)采集分析系統(tǒng)設(shè)計(jì)

2009-06-10
作者:肖祖勝,程 明

??? 摘? 要: FPGA是一種高密度邏輯器件。與通用的MCU相比, FPGA具有并行數(shù)據(jù)處理特性。利用該特性,能夠?qū)崿F(xiàn)對(duì)高速A/D采樣控制;同樣, 使用FPGA對(duì)采樣數(shù)據(jù)進(jìn)行頻譜分析,能夠達(dá)到比DSP芯片更高的數(shù)據(jù)處理速度。?

????關(guān)鍵詞: 采樣;MCU;FPGA

?

??? 在計(jì)算機(jī)控制系統(tǒng)中,常常需要采集各種模擬量信號(hào),并對(duì)它們進(jìn)行模數(shù)轉(zhuǎn)換,將外部輸入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),以便計(jì)算機(jī)進(jìn)行加工處理。在很多情況下,計(jì)算機(jī)應(yīng)用系統(tǒng)中常用普通MCU(如51系列單片機(jī)或控制型DSP)完成系統(tǒng)任務(wù)。由于MCU一般均采用指令處理結(jié)構(gòu),要想達(dá)到高的處理速度相當(dāng)困難,一般速率不會(huì)超過(guò)MHz級(jí)。而FPGA具有高速并行處理的特性,采用FPGA控制數(shù)據(jù)采集可以達(dá)到很高的采樣速率。?

??? 數(shù)字信號(hào)處理的方式一般有兩種:一種是使用單片機(jī)或DSP等MCU,通過(guò)軟件編程實(shí)現(xiàn);另外一種是利用專用邏輯電路或可編程邏輯器件實(shí)現(xiàn)。用軟件編程來(lái)實(shí)現(xiàn),雖然有很大的靈活性,但受DSP或單片機(jī)性能及程序指令順序執(zhí)行的限制,難以實(shí)現(xiàn)高速、大規(guī)模運(yùn)算;而專用集成電路芯片或FPGA卻可以實(shí)現(xiàn)很高的運(yùn)算速度,非常適合高速信號(hào)處理系統(tǒng)的應(yīng)用。?

??? 鑒于此,可以采用FPGA來(lái)完成一個(gè)模擬信號(hào)的采集分析系統(tǒng)。現(xiàn)在用FPGA做信號(hào)處理使用的大多是比較高端的片子,價(jià)格都比較貴,像ALTERA的Stratix系列、XILINIX的Virtex系列等。考慮到成本,在本設(shè)計(jì)中嘗試使用ALTERA的低端FPGA來(lái)完成設(shè)計(jì)。?

??? 盡管ALTERA提供了很多關(guān)于數(shù)字信號(hào)處理的IPCORE,但使用是需要收費(fèi)的,而且費(fèi)用較高。通過(guò)自己編程實(shí)現(xiàn)信號(hào)處理可以節(jié)省大量的成本,本設(shè)計(jì)就是采用這一方法。?

1 器件選擇?

??? 采用的FPGA是ALTERA的EP1C6T144C8,EP1C6T144C8有144個(gè)引腳,最多可使用98個(gè)I/O口,支持JTAG調(diào)試,AS、PS下載,內(nèi)有5 980個(gè)LES,總的RAM位數(shù)是92 160 bit,內(nèi)嵌有兩個(gè)鎖相環(huán),四個(gè)全局時(shí)鐘,內(nèi)核電壓為1.5 V,輸出I/O口驅(qū)動(dòng)電壓為3.3 V,支持LVDS、TTL、CMOS等電平傳輸。采用的配置芯片為EPCS1。這是一款低端的FPGA芯片,具有較高的性價(jià)比。?

??? A/D采樣芯片是TLC5510,這是一款高速A/D采樣芯片,它是一種采用CMOS工藝制造的8位高阻抗并行A/D芯片,能提供的最大采樣率為20 MS/s。由于TLC5510采用了半閃速結(jié)構(gòu)及CMOS工藝,因而大大減少了器件中比較器的數(shù)量,而且在高速轉(zhuǎn)換的同時(shí)能夠保持較低的功耗。?

2 FPGA內(nèi)部電路?

??? FPGA內(nèi)部電路分為兩大模塊。?

??? (1)采樣控制:TLC5510的采樣控制引腳只有兩個(gè),一個(gè)是時(shí)鐘端CLOCK,一個(gè)是輸出使能端(低電有效)。根據(jù)TLC5510采樣控制的時(shí)序電路,芯片CLOCLK的下降沿采樣,經(jīng)過(guò)2.5個(gè)周期的延遲后,得到采樣結(jié)果,這時(shí)如果使能端有效,則數(shù)據(jù)送到輸出端,所以控制起來(lái)比較簡(jiǎn)單。但是要注意的是采樣時(shí)鐘和FFT時(shí)鐘之間的匹配。?

??? 根據(jù)TLC5510的采樣時(shí)序特點(diǎn),在設(shè)計(jì)采樣控制模塊時(shí)可以只控制采樣時(shí)鐘,而輸出始終使能,就能夠完成采樣控制。?

??? 控制FPGA內(nèi)部RAM的寫入時(shí)鐘,當(dāng)完成一次采樣后,將TLC5510數(shù)據(jù)端的數(shù)據(jù)取走,這樣就完成了采樣到寫入的過(guò)程。?

??? 分頻模塊將時(shí)鐘分到和系統(tǒng)時(shí)序相適合的時(shí)鐘。采樣控制電路將采樣結(jié)果由八位變?yōu)槭唬嫒隦AM中。?

??? (2)FFT模塊:設(shè)計(jì)中的FFT模塊實(shí)現(xiàn)的是256點(diǎn)的定點(diǎn)FFT運(yùn)算,采用基-2頻率抽選法,圖1為8位算法的流程示意圖,256點(diǎn)算法與其類似。?

?

?

??? FFT模塊主要包括四個(gè)單元:蝶形變換單元,地址發(fā)生單元,RAM塊選擇單元(其中包括旋轉(zhuǎn)因子表),時(shí)鐘控制單元。圖2為整體電路結(jié)構(gòu)。?

?

?

??? ①蝶形變換單元:在蝶形變換電路中,最為核心的就是乘法器和加法器,可以通過(guò)對(duì)QUARTUS的宏單元的調(diào)用,實(shí)現(xiàn)乘法運(yùn)算,也可以自己編寫乘法器,利用Verilog的for語(yǔ)句實(shí)現(xiàn)16×16無(wú)符號(hào)乘法器的部分原碼如下:?

??? always@(data1,data2)?

??? ? begin?

??? ? data_out=32′d0;//初始賦0?

????for(a=5′d0;a<=5′d15;a=a+5′d1)?

??????? if(data2[a]==1)?

??????? data_out=data_out+(data1<

??? ? end?

??? 蝶形變換的輸出寫入RAM作為下一級(jí)變換的輸入。?

??? 圖3為蝶形變換單元電路。?

?

?

圖3? 蝶形變換單元電路圖

?

??? ②地址發(fā)生單元:這個(gè)單元的編寫具有一定的靈活性,在編程過(guò)程中采用的編寫方法不同,綜合出來(lái)的電路使用寄存器數(shù)量也不一樣。地址發(fā)生單元總共有八級(jí)地址。第二級(jí)地址發(fā)生單元的部分原碼如下(圖4為第二級(jí)地址發(fā)生單元仿真結(jié)果):?

?

?

??? always@(posedge clk)?

??? begin?

? ? ??if(a3==1′d1)?

??????? begin?

??????? ? a3=1′d0;//參數(shù)a3控制RAM數(shù)據(jù)和旋轉(zhuǎn)因子表數(shù)據(jù)時(shí)序配合?

??????? ? case(a2)//地址分為兩大塊塊,分別為前后128個(gè)數(shù),參數(shù)a2控制這兩塊的啟動(dòng)?

??????? ? 1′d0:begin?

??????????? if(a1==8′d63)?

??????????? begin a1=8′d128;a2=a2+1′d1;addr1=a1;addr2=7′d0;end?

??????????? else?

??????????? ? begin a1=a1+8′d1;addr1=a1;addr2=addr2+7′d2;end?

??????????? end?

??????? ? 1′d1:begin?

??????????? if(a1==8′d191)?

??????????? ? begin a1=8′d0;a2=1′d0;addr1=8′d0;addr2=7′d0;end?

??????????? ? else?

??????????? ? begin a1=a1+8′d1;addr1=a1;addr2=addr2+7′d2;end?

??????? ??? end?

??????? ??endcase?

??? ? ? ??end?

??? else?

??? ? begin a3=a3+1′d1;addr1=addr1+8′d64;end?

??? end?

??? ③RAM塊選擇單元:FPGA上含有4KB RAM塊,可以使用三組RAM塊實(shí)現(xiàn)流水線(這里命名為RAM1,RAM2,RAM3)。時(shí)序開(kāi)始時(shí)控制單元將采樣結(jié)果寫入RAM1,F(xiàn)FT單元運(yùn)算RAM2中數(shù)據(jù),輸出控制單元將上一次的FFT運(yùn)算結(jié)果輸出。當(dāng)整個(gè)電路完成一次采集分析后,啟動(dòng)RAM選擇模塊,三組RAM的控制單元進(jìn)行輪換,采樣電路將采樣結(jié)果寫入RAM3,F(xiàn)FT運(yùn)算電路則使用RAM1,對(duì)采樣數(shù)據(jù)進(jìn)行運(yùn)算,而數(shù)據(jù)輸出電路控制RAM2將FFT的結(jié)果輸出。如此往復(fù)循環(huán),實(shí)現(xiàn)流水線作業(yè)。下面是其中RAM選擇單元的部分代碼:?

??? always@(posedge f or posedge star)//f上升沿表示一次FFT完成?

??? ? begin//開(kāi)始啟動(dòng)信號(hào)和FFT完成信號(hào)共同控制選擇轉(zhuǎn)換參數(shù)?

??????? if(star)?

??????? a2=2′d1;?

??? ? else?

??????? if(a2==2′d2)?

??????? a2=2′d0;?

??? ? else?

??????? a2=a2+2′d1;?

??? ? end?

??? //下為控制轉(zhuǎn)換參數(shù)控制選擇?

assign data_out1=(a2==2′d0)?data1:((a2==2′d1)?17′d0:((a2==2′d2)?data3:17′d0));?

assign data_out2=(a2==2′d0)?17′d0:((a2==2′d1)?data3:((a2==2′d2)?data1:17′d0));?

assign data_out3=(a2==2′'d0)?data3:((a2==2′d1)?data1:((a2==2′d2)?17′d0:17′d0));?

assign q_out1=(a2==2′d0)?q1:((a2==2′d1)?q3:((a2==2′d2)?q2:17′d0));?

assign q_out2=(a2==2′d0)?q2:((a2==2′d1)?q1:((a2==2′d2)?q3:17′d0));?

??? ④時(shí)鐘控制單元:這個(gè)單元主要是一些時(shí)鐘分頻電路,控制整個(gè)電路的時(shí)序,不同模塊單元之間啟動(dòng)的時(shí)序不一樣,時(shí)鐘頻率也不相同。在編寫時(shí)鐘控制單元時(shí),最主要是實(shí)現(xiàn)各模塊時(shí)序配合,以防止出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)。?

??? 除了上述幾個(gè)主要的模塊單元外,還需要生成一個(gè)旋轉(zhuǎn)因子表。旋轉(zhuǎn)因子表可以有多種生成方法,考慮到芯片資源,本設(shè)計(jì)選擇使用MATLAB生成旋轉(zhuǎn)因子表,通過(guò)調(diào)用兆函數(shù),將生成的旋轉(zhuǎn)因子表固化到FPGA的ROM中。?

??? 當(dāng)整個(gè)FFT模塊數(shù)據(jù)處理完之后,就可以逆序輸出。?

??? 設(shè)計(jì)完成后,可以在RAM塊中初始化數(shù)據(jù)得到仿真結(jié)果,對(duì)設(shè)計(jì)進(jìn)行初步檢驗(yàn),圖4(b)是在RAM中初始化一個(gè)數(shù)據(jù)表后的FFT模塊仿真結(jié)果(q1實(shí)部,q2虛部)。?

??? 圖5為MATLAB仿真,與QUARTUS仿真結(jié)果相比較,可以看到結(jié)果吻合地相當(dāng)好。?

?

?

3 速度分析?

??? 系統(tǒng)采用單乘法器結(jié)構(gòu),使用鎖相環(huán)倍頻時(shí)鐘作為總時(shí)鐘輸出,當(dāng)總時(shí)鐘為200 MHz時(shí),完成一次FFT處理的時(shí)間為21.4 μs,4 278個(gè)時(shí)鐘信號(hào),在流水線作業(yè)下,可以完成A/D采樣速率高達(dá)12 MHz的數(shù)據(jù)處理。?

??? 本設(shè)計(jì)使用芯片邏輯資源的的77%,近4 600個(gè)邏輯單元,還使用了約39 000 bit的RAM。實(shí)驗(yàn)證明,用低端的FPGA產(chǎn)品實(shí)現(xiàn)高速采樣控制和FFT處理是可行的。在實(shí)現(xiàn)過(guò)程中只要采用較好的設(shè)計(jì)思路,控制好寄存器的數(shù)目,便可以在芯片允許的資源范圍內(nèi)達(dá)到所需要的信號(hào)處理目的,實(shí)現(xiàn)設(shè)計(jì)要求。?

參考文獻(xiàn)?

[1] 吳繼華.Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇).北京:人民郵電出版社,2005.?

[2] 程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,2001.?

[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程.北京:北京航空航天大學(xué)出版社,2003.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久草资源站在线| 兽皇videos极品另类| 91精品久久久久久久久久小网站| 日本夜爽爽一区二区三区| 亚洲精品动漫在线| 色天使色婷婷在线影院亚洲| 国产精品无码专区| 一个人看的免费观看日本视频www| 日韩精品久久久肉伦网站| 亚洲系列第一页| 色135综合网| 国产日韩视频在线| 99国产欧美久久久精品| 成视频年人黄网站免费视频| 亚洲av最新在线观看网址| 狠狠爱天天综合色欲网| 国产AV国片精品有毛| 韩国美女vip福利一区| 国内精品久久久久久无码不卡| 中文国产成人精品久久下载| 日韩欧美中文字幕在线观看| 亚洲日韩一页精品发布| 男男性彩漫漫画无遮挡| 国产l精品国产亚洲区在线观看| 天堂在线最新资源| 处破女18分钟完整版| 两个小姨子完整版| 日本最刺激夫妇交换影片| 亚洲中文字幕无码久久综合网| 激情综合亚洲欧美日韩| 午夜亚洲WWW湿好大| 野花香高清在线观看视频播放免费 | 456亚洲视频| 天天躁夜夜躁狠狠躁2021| 中文字幕乱码人妻无码久久| 日韩免费无码一区二区视频| 亚洲国产精品成人午夜在线观看 | 天堂电影在线免费观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 5g影院欧美成人免费| 天堂8在线天堂资源bt|