《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 基于FPGA的數據采集分析系統設計

基于FPGA的數據采集分析系統設計

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

??? 摘? 要: FPGA是一種高密度邏輯器件。與通用的MCU相比, FPGA具有并行數據處理特性。利用該特性,能夠實現對高速A/D采樣控制;同樣, 使用FPGA對采樣數據進行頻譜分析,能夠達到比DSP芯片更高的數據處理速度。?

????關鍵詞: 采樣;MCU;FPGA

?

??? 在計算機控制系統中,常常需要采集各種模擬量信號,并對它們進行模數轉換,將外部輸入的模擬信號轉換成數字信號,以便計算機進行加工處理。在很多情況下,計算機應用系統中常用普通MCU(如51系列單片機或控制型DSP)完成系統任務。由于MCU一般均采用指令處理結構,要想達到高的處理速度相當困難,一般速率不會超過MHz級。而FPGA具有高速并行處理的特性,采用FPGA控制數據采集可以達到很高的采樣速率。?

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

??? 鑒于此,可以采用FPGA來完成一個模擬信號的采集分析系統?,F在用FPGA做信號處理使用的大多是比較高端的片子,價格都比較貴,像ALTERA的Stratix系列、XILINIX的Virtex系列等。考慮到成本,在本設計中嘗試使用ALTERA的低端FPGA來完成設計。?

??? 盡管ALTERA提供了很多關于數字信號處理的IPCORE,但使用是需要收費的,而且費用較高。通過自己編程實現信號處理可以節省大量的成本,本設計就是采用這一方法。?

1 器件選擇?

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

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

2 FPGA內部電路?

??? FPGA內部電路分為兩大模塊。?

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

??? 根據TLC5510的采樣時序特點,在設計采樣控制模塊時可以只控制采樣時鐘,而輸出始終使能,就能夠完成采樣控制。?

??? 控制FPGA內部RAM的寫入時鐘,當完成一次采樣后,將TLC5510數據端的數據取走,這樣就完成了采樣到寫入的過程。?

??? 分頻模塊將時鐘分到和系統時序相適合的時鐘。采樣控制電路將采樣結果由八位變為十六位,存入RAM中。?

??? (2)FFT模塊:設計中的FFT模塊實現的是256點的定點FFT運算,采用基-2頻率抽選法,圖1為8位算法的流程示意圖,256點算法與其類似。?

?

?

??? FFT模塊主要包括四個單元:蝶形變換單元,地址發生單元,RAM塊選擇單元(其中包括旋轉因子表),時鐘控制單元。圖2為整體電路結構。?

?

?

??? ①蝶形變換單元:在蝶形變換電路中,最為核心的就是乘法器和加法器,可以通過對QUARTUS的宏單元的調用,實現乘法運算,也可以自己編寫乘法器,利用Verilog的for語句實現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)?

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

??? ? end?

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

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

?

?

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

?

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

?

?

??? always@(posedge clk)?

??? begin?

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

??????? begin?

??????? ? a3=1′d0;//參數a3控制RAM數據和旋轉因子表數據時序配合?

??????? ? case(a2)//地址分為兩大塊塊,分別為前后128個數,參數a2控制這兩塊的啟動?

??????? ? 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塊實現流水線(這里命名為RAM1,RAM2,RAM3)。時序開始時控制單元將采樣結果寫入RAM1,FFT單元運算RAM2中數據,輸出控制單元將上一次的FFT運算結果輸出。當整個電路完成一次采集分析后,啟動RAM選擇模塊,三組RAM的控制單元進行輪換,采樣電路將采樣結果寫入RAM3,FFT運算電路則使用RAM1,對采樣數據進行運算,而數據輸出電路控制RAM2將FFT的結果輸出。如此往復循環,實現流水線作業。下面是其中RAM選擇單元的部分代碼:?

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

??? ? begin//開始啟動信號和FFT完成信號共同控制選擇轉換參數?

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

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

??? ? else?

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

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

??? ? else?

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

??? ? end?

??? //下為控制轉換參數控制選擇?

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));?

??? ④時鐘控制單元:這個單元主要是一些時鐘分頻電路,控制整個電路的時序,不同模塊單元之間啟動的時序不一樣,時鐘頻率也不相同。在編寫時鐘控制單元時,最主要是實現各模塊時序配合,以防止出現競爭冒險。?

??? 除了上述幾個主要的模塊單元外,還需要生成一個旋轉因子表。旋轉因子表可以有多種生成方法,考慮到芯片資源,本設計選擇使用MATLAB生成旋轉因子表,通過調用兆函數,將生成的旋轉因子表固化到FPGA的ROM中。?

??? 當整個FFT模塊數據處理完之后,就可以逆序輸出。?

??? 設計完成后,可以在RAM塊中初始化數據得到仿真結果,對設計進行初步檢驗,圖4(b)是在RAM中初始化一個數據表后的FFT模塊仿真結果(q1實部,q2虛部)。?

??? 圖5為MATLAB仿真,與QUARTUS仿真結果相比較,可以看到結果吻合地相當好。?

?

?

3 速度分析?

??? 系統采用單乘法器結構,使用鎖相環倍頻時鐘作為總時鐘輸出,當總時鐘為200 MHz時,完成一次FFT處理的時間為21.4 μs,4 278個時鐘信號,在流水線作業下,可以完成A/D采樣速率高達12 MHz的數據處理。?

??? 本設計使用芯片邏輯資源的的77%,近4 600個邏輯單元,還使用了約39 000 bit的RAM。實驗證明,用低端的FPGA產品實現高速采樣控制和FFT處理是可行的。在實現過程中只要采用較好的設計思路,控制好寄存器的數目,便可以在芯片允許的資源范圍內達到所需要的信號處理目的,實現設計要求。?

參考文獻?

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

[2] 程佩青.數字信號處理教程[M].北京:清華大學出版社,2001.?

[3] 夏宇聞.Verilog數字系統設計教程.北京:北京航空航天大學出版社,2003.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]。
主站蜘蛛池模板: 中文 日本 免费 高清 | 怡红院男人的天堂 | 国产人成 | 国产不卡视频在线观看 | 99re5久久在热线播放 | 精品久久久久久国产免费了 | 色噜噜亚洲男人的天堂 | 日本黄色免费大片 | 免费国产99久久久香蕉 | 美女视频免费黄 | 国产精品日本不卡一区二区 | 亚洲一区二区三区国产精品 | a级毛片视频免费观看 | 老司机午夜性生免费福利 | 全国男人的天堂天堂网 | 手机免费看毛片 | 男人的天堂黄色 | 亚洲成人欧美 | 男人天堂成人 | 一级毛片aaaaaa免费看 | 页面升级亚洲 | 亚洲成a人在线观看 | 日本天堂网在线 | 国产成人精品s8p视频 | 97影院理论在线观看 | 91亚洲精品国产第一区 | 精品老司机在线视频香蕉 | 免费一级淫片aaa片毛片a级 | 国产精品精品国产 | 亚洲天堂视频在线观看免费 | 国产99视频精品免费视频免里 | 亚洲欧美激情精品一区二区 | 99久久一区 | 国产男女乱淫真视频全程播放 | 国产精品91av | 日本一区二区免费在线观看 | 欧美成人三级伦在线观看 | 国产午夜在线观看视频播放 | 久久亚洲精品成人 | 一国产一级淫片a免费播放口 | 永久网站色视频在线观看免费 |