石昊強,蔣占軍,b
(蘭州交通大學 a.電子與信息工程學院; b.電工電子國家級實驗教學示范中心,蘭州 730070)
隨著電子技術的快速發展,越來越多的模擬電路逐漸被數字電路取代,電子信息類專業的技術基礎類課程實驗教學綜合改革研究不斷深入,仿真實驗內容日漸增多[1-3]。例如,在信號與系統分析、數字信號處理、通信原理課程等課程中,越來越多的實驗內容使用Matlab、現場可編程邏輯門陣列(Field Programmable Gate Array,FPGA)技術代替了傳統的實驗箱教學模式,但大部分仍停留在軟件仿真驗證的層面;另一方面,在各電子信息類專業的課程體系中大都有Matlab和FPGA課程,但這兩門課程與理論課程卻都是“各自為戰”,缺乏與專業課程和工程實踐必要的聯系和相互補充,在教學中沒有將理論和軟件仿真以及工程實踐相融合[4-5]。當前在“新工科”建設、工程教育改革、創新創業教育的影響下[6-7],各高校對多元化、層次化、綜合性的新型實驗教學體系、創新人才培養模式以及產學研相結合的教學模式進行了廣泛的研究和探索[8-11],基于復雜工程問題的實驗案例設計的研究、探索層出不窮[12-13],這類改革極大地調動了學生自己動手實踐的積極性,使其對理論和實踐有充分的學習和把握。本文以有限長單位沖激響應(Finite Impules Response,FIR)濾波器和ASK調制設計實驗為例,闡述了理論與實踐充分統一、軟件仿真與硬件電路緊密結合的綜合實驗設計方式。
實驗教學的具體實施可以根據教學情況循序漸進制定不同的內容組合。例如每個班級根據人數分成小組,選擇或者安排不同的綜合實驗內容,組內成員根據內容分工完成不同任務,最終通過團隊合作完成實驗,并以實際演示和答辯的方式驗收實驗結果。通過此類實驗,既能夠培養學生的實踐動手能力,也激發了學生積極主動思考和創新思維。學生不僅能夠全面深入理解和貫通專業基礎知識和實驗技能,還可以培養學生的團隊合作精神、工程素養和創新創業的綜合素質。
數字濾波器理論是電子信息類專業的核心知識點之一,廣泛應用在實際的工程項目設計中,例如數據采集、信號處理和圖像處理中[14-15]。在通信信號處理中FIR濾波器的應用更為廣泛,例如成形濾波、匹配濾波和數字上下變頻系統等。本文以FIR濾波器和ASK調制為例介紹Matlab + FPGA的綜合實驗設計方法,設計實現FIR濾波器,并將其作為ASK調制中的成形濾波器使用,實現從單元設計到系統設計的示例效果。該系列實驗設計仿真實現框架圖如圖1所示。

圖1 實驗設計仿真實現框架圖
該實驗設計主要流程分為Matlab設計仿真、FPGA-ModelSim設計仿真和FPGA硬件示波器驗證3部分。首先,根據實驗項目設計技術指標需求,進行方案和參數量化設計;然后,對比不同設計方法的性能指標,選擇最優的設計方法進行Matlab設計仿真實現,并在最終實現方案下生成FPGA仿真測試的測試數據,保存在文本文檔中。
完成算法仿真之后,根據算法參數指標和仿真結果(即圖1中Matlab仿真圖1),進行硬件描述語言(Hard ware Description Language,HDL)硬件邏輯實現。在編譯無誤后,創建Testbench仿真測試激勵文件,該文件不僅要讀取Matlab仿真生成的測試數據,同時也要將FPGA實現的ModelSim仿真結果輸出數據寫入文本文檔,最后調用ModelSim仿真工具進行時序仿真,并通過ModelSim仿真圖分析設計是否滿足設計參數指標。全面驗證時序仿真無誤后,把輸出數據文本文檔再通過Matlab進行數據分析,Matlab得到的分析結果即為圖1 框架圖中Matlab仿真圖2部分。
完成FPGA設計仿真驗證后,就可以生成下載文件進行板級硬件測試驗證,FPGA硬件板卡通過D/A模塊將數據輸出,通過BNC線接入示波器,搭建測試環境,觀察示波器對比分析驗證實現結果。
綜合實驗設計需要完成循序漸進的歷程,以達到實際項目工程的鍛煉效果。設計者首先需要先后完成FIR濾波器設計和ASK調制的Matlab仿真,得出Matlab仿真結果便與后續FPGA硬件實現結果對比,同時也為下一步FPGA設計實現產生測試數據。
FIR濾波器的單位取樣響應h(n)是一個N點長的有限長序列,0≤n≤N-1。濾波器的輸出y(n)可表示為輸入序列x(n)與單位取樣響應h(n)的線性卷積:

(1)
其系統函數為:
h(0)+h(1)z-1+…+h(N-1)z-(N-1)
(2)
FIR濾波器由一個抽頭延遲線加法器和乘法器集合構成,每個乘法器的操作系數就是一個FIR系數,該結構也稱之為抽頭延遲線結構。FIR濾波器有多種基本結構形式,如直接型、級聯型、頻率取樣型和快速卷積型等,通常基于此來進行FPGA硬件實現。對于濾波器的設計,可以使用Filter Solutions軟件和Matlab軟件設計,并生成FPGA所需的系數參數,而FIR濾波器的設計方法通常有窗函數法、頻率取樣法及等波紋優化設計方法等。
該系列實驗中,采用Matlab軟件設計時,主要方法有利用fir1函數、kaiserord函數、fir2函數、firpm函數和采用FDATOOL工具設計5種方法。設計時通常需要選擇濾波器的截止頻率、采樣頻率、階數、通帶、阻帶衰減、過渡帶寬等參數。
本實例設計一個15階的低通線性相位FIR濾波器,采用布萊克曼窗函數設計,截止頻率為500 Hz,采樣頻率為2 kHz。設計流程為:首先,利用Matlab軟件根據設計參數設計出濾波器系數,其系數為
{0, -31 546, -117, -263 590, 2 047,
2 047.590, -263,-1 174 615, -30}
該系數具有偶對稱特性,因此該FIR濾波器具有線性相位,并以12 bit量化系數,其量化前后的幅頻響應如圖2所示。然后,利用Matlab仿真兩路信號測試驗證Matlab軟件下設計的FIR濾波器效果,一路輸入信號為白噪聲特性的輸入信號,另一路為200 Hz和800 Hz單頻信號疊加的輸入信號。兩路輸入信號經過濾波器濾波前后的頻譜圖如圖3所示。同時將兩路測試信號生成的測試數據生成二進制數據寫入文本文件中作為FPGA實現的測試輸入數據。

圖2 濾波器系數量化前后的幅頻響應圖

(a) Matlab仿真白噪聲信號濾波前后的頻譜

(b) Matlab仿真合成單頻信號濾波前后的頻譜
幅移鍵控(ASK)是數字調制的基本形式之一,當調制信號為二進制數字信號時,稱之為二進制數字調制(2ASK)。此時,載波的幅度只有兩個變化值0或1,規定0出現的概率為p,1出現的概率為1-p。其信號可看作是由一個單極性的矩形脈沖序列與一個載波相乘的結果,即:
s(t)=m(t)cos(ωct+φc)=

(3)
式中:g(t)是持續時間為Ts的矩形脈沖;ak根據概率為p或1-p取值為0或1。根據頻率卷積定理可以得到s(t)的頻譜為[16]:
S(ω)=[M(ω+ωc)+M(ω-ωc)]/2
(4)
式中,M(ω)為m(t)的頻譜。經過上述理論分析可得ASK信號可由m(t)和載波產生,其模型如圖4所示。

圖4 ASK信號產生模型框圖
該示例中基帶信號速率Rb=1 Mb/s,以8倍速率采樣,載波信號頻率為70 MHz,仿真2ASK和4ASK調制信號成形濾波(α=0.8)有無的時域及頻譜波形。通過Matlab仿真得到時域波形圖如圖5所示,頻譜如圖6所示。將得到的2ASK與4ASK時域波形數據保存,便于與后續FPGA硬件實現仿真波形對比驗證。觀察ASK信號頻譜,可以發現經過成形濾波后的信號頻譜主瓣外頻率分量已經被濾除;2ASK和4ASK的頻譜形狀及主瓣寬度相同;濾波前后的信號頻譜都含有明顯的載波頻率分量。

(a) 未經成形濾波的2ASK時域波形

(b) 成形濾波后的2ASK時域波形

(c) 未經成形濾波的4ASK時域波形

(d) 成形濾波后的4ASK時域波形
本例中FPGA設計采用Quartus Prime Standard Edition 18.1 版本,FPGA芯片采用Cyclone IV E系列EP4CE6F17C8器件,仿真軟件采用Altera自帶版本ModelSim-Altera 10.5b版本。

(a) 未經成形濾波的2ASK頻譜

(b) 成形濾波后的2ASK頻譜

(c) 未經成形濾波的4ASK頻譜

(d) 成形濾波后的4ASK頻譜
本例中FIR濾波器采用直接型結構。FPGA實現直接型結構的FIR濾波器時,有串行結構、并行結構、分布式結構、直接調用Quartus Prime軟件自帶的FIR濾波器IP核等方式,本例選用串行結構實現2.1節中的15階FIR濾波器,如圖7所示。

圖7 全串行FIR濾波器結構
在Quartus中完成FIR濾波器Verilog HDL代碼設計,然后進行綜合編譯實現仿真,仿真結果如圖8所示。完成綜合實現后,編寫測試激勵文件,將之前準備好的文本文件測試數據讀入,同時將FPGA實現后的輸出數據寫入外部文本文件中,完成測試文件后,調用ModelSim-Altera仿真軟件進行時序仿真,白噪聲信號和合成單頻信號仿真結果如圖9、10所示。

圖8 FIR濾波器綜合編譯結果
完成ModelSim時序仿真后,編寫Matlab程序,將ModelSim仿真的FPGA實現的濾波器濾波后的輸出數據讀入Matlab進行時域和頻域仿真分析,驗證FPGA設計實現是否滿足設計要求,得到信號濾波前后的頻譜圖如圖11所示,時域波形如圖12所示。

圖9 ModelSim仿真白噪聲信號濾波前后波形

圖10 ModelSim仿真合成單頻信號濾波前后波形

(b) FPGA仿真合成單頻信號濾波前后的頻譜

(a) FPGA仿真白噪聲信號濾波前后的時域波形

(b) FPGA仿真合成單頻信號濾波前后時域波形
通過對比分析圖3 Matlab仿真的測試信號濾波前后的頻譜圖和圖11中FPGA仿真的信號濾波前后的頻譜圖,可知FPGA實現的濾波器輸入、輸出信號頻譜與Matlab直接仿真的結果完全相同。從圖12中可以發現濾波后的白噪聲信號時域波形變化趨勢明顯緩和,可見把高頻信號分量濾除了。濾波后的合成單頻信號已形成規則的頻率為200 Hz的單頻信號。綜上對比分析可知,該濾波器的FPGA設計實現完全滿足涉及要求。
根據圖4中所示的ASK信號產生模型框圖進行ASK調制的Verilog HDL設計,采用鍵控法實現ASK的調制,關鍵在于生成本地載波信號,這個可以通過Quartus提供的NCO核產生。只需在工程中調用NCO的IP核,進行載波頻率參數和接口的設置即可。經過綜合編譯得到仿真結果如圖13所示。

圖13 ASK調制綜合編譯仿真結果
完成綜合實現后,編寫測試激勵文件通過ModelSim進行時序仿真,分別仿真2ASK調制的波形以及成形濾波后的波形,如圖14、15,再進行4ASK調制的波形以及成形濾波后的波形,如圖16、17所示。
通過ModelSim時序仿真可以明顯看出調制以及成形濾波的FPGA實現波形效果。因此,本示例不做Matlab對比分析驗證。

圖14 2ASK調制的時序波形

圖15 2ASK調制成形濾波后的時序波形

圖16 4ASK調制的時序波形

圖17 4ASK調制成形濾波后的時序波形
根據圖1中實驗設計仿真實現框架圖所示,為了進行FPGA硬件板卡與示波器連接測試,設計了兩路獨立的D/A轉換通道,而且兩路通道的電路設計完全相同,D/A轉換電路主要由AD9708轉換芯片、電容電感設計的7階巴特沃斯低通濾波器、AD8065組成的幅度調節電路組成。
FPGA硬件板卡測試以FIR濾波器示例,將Quartus Prime軟件設計仿真實現后生成的下載文件下載FPGA板卡中,通過兩路雙頭BNC線纜將FPGA板卡輸出的D/A接口與示波器兩個通道連接,得到輸入信號只有200 Hz和輸入為200 Hz與800 Hz合成疊加信號濾波前后的波形圖,其中輸入為200 Hz的波形圖如圖18所示,合成疊加信號的波形圖如圖19所示。從兩個波形圖中可以看出濾波后的波形不夠平滑,波形呈階梯狀,該現象是由采樣頻率及轉換頻率較低導致的。

圖18 濾波器輸入單頻信號的測試波形圖

圖19 濾波器輸入疊加信號的測試波形圖
在圖18中可以觀察到示波器D/A轉換輸出的信號比實際值幅度降低了一半。這是FPGA設計中為了避免數據溢出,增加數據位導致的。
觀察圖19中示波器波形圖,可以看出,由于FIR濾波器截止頻率設置為500 Hz,所以輸入疊加信號濾波后仍能輸出規則的200 Hz單頻信號,但是其幅度相對于單頻輸入時又降低了一半。這是由于疊加信號的幅度與單頻輸入信號一樣,因此疊加信號中的200 Hz信號幅度已經比單頻輸入信號降低了一半,當濾除800 Hz信號后,輸出數據為降低了一半幅值的200 Hz單頻信號,所以最終通過D/A轉換后又降低了一半,得到濾波后波形圖比圖18中幅度低了一半。經過上述對比分析可知,基于FPGA設計實現的FIR濾波器與設計參數指標一致,同時也與Matlab仿真設計結果一致,綜合表明本綜合實驗設計具有較好的實現效果。
通過基于Matlab和FPGA的FIR濾波器設計以及ASK調制設計綜合實驗,學生能夠得到課程知識深入分析能力、算法參數仿真設計驗證能力以及FPGA硬件工程系統實現能力的專業綜合實踐培養。該系列綜合實驗課程設計能夠滿足信號與系統、數字電路、數字信號處理、通信原理、軟件無線電等大多數課程的綜合實驗需求,可以在電子信息類專業基礎課程實驗教學改革中應用。