摘 要: 單邊帶通信是目前應用比較廣泛并具有占用較窄頻帶特點的一種通信方法。本文著重介紹單邊帶調制解調技術,采用DSP Builder設計流程,結合Modelsim對Signal Compiler生成的test bench文件進行仿真,在QuartusII環境下編譯生成VHDL語言,組建工程,下載至硬件,利用Signal Tap II Logic Analyzer觀察硬件輸出波形。
關鍵詞: 單邊帶;調制解調;DSP Builder
1 單邊帶調制解調的算法
單邊帶(SSB)調制屬于幅度調制中的一種。其利用一個邊帶進行通信,提高了信道的利用率,也避免了不必要的功率發射。SSB調制既可以用模擬方法實現,也可以轉換成數字方法實現。其方法有3種:經典濾波器(Filter)方法、Weaver算法和Hartley算法。這里著重介紹濾波法。
無論是調制還是解調,濾波器算法都是利用帶通濾波器抑制掉不用的邊帶。當一個限帶信號與具有足夠高頻率的正弦載波信號c(t)=2cos(ωct)相乘時,結果為:
在解調時用濾波器方法更簡單明了。用調制時的載波與單邊帶信號相乘有:
結果產生2個分開的邊帶,一個位于基帶位置,另一個位于二倍的載波頻率處。利用LPF或BPF濾掉高頻信號,便重構了原始信號。調制及解調電路構成如圖1所示。
數字濾波器處理方法可以從模擬法直接變換過來,即載波的產生和相乘、帶通濾波等都用數字方式來完成。整個系統既可以在單一采樣率下完成,也可以利用內插-抽取算法,在計算量上會帶來好處。調制部分的工作主要包括前置帶通濾波、載波相乘、邊帶抑制即帶通濾波。解調部分主要包括中頻帶通濾波、載波相乘、抽取濾波、信號分離[2]。在單一的采樣率下,調制和解調模塊的濾波器系數及載波完全一樣。
濾波器方法是最經典、最傳統的SSB調制解調方法,目前被廣泛應用在各種系統中[3]。在許多情況下利用頻分復用(FDM)原理應用于多級系統設計。特別是內插-抽取算法的應用,給多級數字設計帶來了好處。數字多級系統只增加了調制的步驟,卻減少了平均計算量,降低了帶通濾波器的要求和載波信號的復雜性。
2 單邊帶調制解調的FPGA實現
Altera公司自2002年推出DSP Builder便很好地解決了諸如設計算法類(如DSP模塊)及模擬信號處理與產生方面的系統設計[4]類問題。DSP Builder可以幫助設計者完成基于FPGA的不同類型的應用系統設計。除了圖形化的系統建模外,DSP Builder還可以自動完成大部分的設計過程和仿真,直至把設計文件下載至FPGA開發板上。利用MATLAB與DSP Builder進行模塊設計也是SoPC技術的一個組成部分[5]。
設計總體框圖如圖2所示。
2.1 MATLAB/DSP Builder及其設計流程
DSP Builder是一個系統級設計工具,它架構在多個軟件工具之上,并把系統級(算法級仿真建模)和RTL級(硬件實現)2個設計領域的設計工具連接起來,可在Simulink中進行圖形化設計和仿真,同時又通過SignalCompiler將MATLAB/Simulink的模型設計文件轉換成相應的硬件描述語言設計文件[6],以及用于控制綜合與編譯的TCL腳本。而綜合以及此后的處理都由QuartusⅡ完成。
本設計用DSP Builder產生的設計模型作為總設計中的一個子模塊,可以在設計中調用DSP Builder產生的VHDL文件,以構成完整的設計。同時,還可以使用QuartusⅡ強大的LogicLock功能和SignalTap測試技術。在DSP Builder設計流程的最后一步,可以在DSP Builder中直接下載到FPGA用戶開發板上,或者通過QuartusⅡ完成硬件的下載、測試。
VHDL仿真流程在設計中是不可或缺的,與DSP Builder可以配合使用的HDL仿真器是Modelsim。DSP Builder在生成VHDL代碼時,可以同時生成用于測試DSP模塊的TestBench(測試平臺)文件,DSP Builder生成的TestBench文件采用VHDL語言,測試向量與該DSP模塊在Simulink中的仿真激勵相一致。
2.2 使用MATLAB/DSP Builder建立Simulink模型
MATLAB的Simulink環境具有強大的圖形化仿真驗證功能[7]。用DSP Builder模塊設計好一個新的模型后,可以直接在Simulink中進行算法級、系統級仿真驗證。對一個模型進行仿真,需要施加合適的激勵、一定的仿真步進和仿真周期,添加合適的觀察點和觀察方式,分別觀察輸入波形、載波波形、混頻后波形及已調信號波形、解調信號波形及其頻譜。根據濾波法建立的Simulink模型如圖3所示。
由于人耳可以聽到20 Hz~20 kHz的音頻信號,所以在設計中選擇一個頻率為20 kHz的頻率作為調制信號,而載波信號則選用頻率為160 kHz的余弦波。
使用MATLAB的濾波器設計工具,可以十分方便地利用MATLAB提供的濾波器設計工具(FDATool)獲得各種濾波器的設計參數。系統設計需要2種濾波器,一種是帶寬為20 kHz的低通濾波器,一種是頻率為140 kHz-160 kHz的帶通濾波器。將28個抽頭的參數分別輸入到累加器,便完成了濾波器的設計。
2.3 轉換為VHDL語言并綜合
雙擊SignalCompiler模塊,對SignalCompiler的設置集中在項目設置選項部分。在Device下拉列表框中選擇CycloneⅡ系列,在Synthesis下拉列表框中選擇QuartusⅡ,在Optimization下拉列表框選擇Balanced。當設置好Device和Synthesis后,右側的硬件編譯部分就會列出一個操作流程,單擊Execute steps 1、2 和3圖標,完成文件(.mdl)到VHDL文件的轉換、綜合、編譯、適配過程。
3 使用Modelsim實現時序仿真
進入Modelsim軟件環境,設置路徑,然后點擊Tools→Exacute Macro,選擇tb_fl.tcl文件,運行成功即可以進行Stimulation。仿真波形如圖4,仿真設置完全是Simulink的仿真配置。
4 使用QuantusⅡ實現時序仿真
仿真前需要先產生一個頻率為20 kHz的正弦波和頻率為160 kHz的余弦波,而濾波器的采樣頻率是2 MHz。在硬件驗證的DE2開發板上只有頻率為50 MHz和27 MHz的時鐘。正弦波信號發生器采用LPM_ROM設計,輸出的信號頻率f與地址發生器的時鐘CLK的輸入頻率f0的關系式為:f=f0/64。所以f0的大小為1.28 MHz和10.24 MHz,這里選擇1.333 MHz和10 MHz。可以采用LPM嵌入式鎖相環產生頻率為20 MHz的時鐘,接一個二分頻產生10 MHz的時鐘,接一個十五分頻產生1.333 MHz的時鐘,接一個十分頻產生2 MHz的時鐘,這樣就產生了所需要的所有時鐘。將MATLAB生成的余弦和正弦采樣的.hex文件導入ROM,再將波形產生器和調制解調連接起來。
最后進行硬件下載:管腳分配后下載至硬件。由于是數字信號不太好觀察模擬波形,所以選擇Signaltap II Logic Analyer進行觀察,如圖5。可以看到調制信號和載波信號的周期性,由于本設計的局限性和時鐘的不準確性(理想的1.28 MHz、10.24 MHz未能實現,而采用了1.333 MHz和10 MHz),造成了一定的紊亂。
本設計的主要內容是實現單邊帶調制解調。由于該設計涉及算法及模擬信號處理,所以無法單純地利用QuartusⅡ完成整個設計,故在設計中采用MATLAB Simulink+DSP Builder建模再將其轉化為VHDL,中間利用Modelsim仿真驗證設計結果的正確性,最終利用QuartusⅡ綜合、仿真、適配、編程。在QuartusⅡ上進行功能仿真時重點考慮的是時鐘同步問題。由于最后要在DE2板上驗證,而板上只有50 MHz和27 MHz的時鐘,進行功能仿真需要一個頻率為20 kHz的正弦波和一個頻率為160 kHz的余弦波,而濾波器的采樣頻率是2 MHz,因此時鐘頻率在仿真過程中未做到完全同步,最后的仿真結果存在誤差。在QuartusⅡ中的功能和時序仿真中,針對多時鐘方面的設計,應盡可能實現同步。
參考文獻
[1] 劉樹棠譯.信號與系統[M].西安:西安交通大學出版社,1997.
[2] 丁玉美,高西全.數字信號處理[M].西安:西安電子科技大學出版社,2000.
[3] 李景強,李雙田,李昌立,等.用DSP實現單邊帶調制解調的幾種算法及性能比較[J]. http://scholar.ilib.cn/A 3305.html.1999.
[4] 潘松,黃繼業.EDA技術與VHDL[M].北京:清華大學出版社,2007.
[5] 張志剛.FPGA與SOPC設計教程:DE2實踐[M].西安:西 安電子科技大學出版社,2007.
[6] 邵玉斌.Matlab/simulink通信系統建模與仿真實例[M].北京:清華大學出版社,2008.
[7] 趙靜,張瑾,高新科.基于MATLAB的通信系統仿真[M].北京:北京航空航天大學出版社,2007.