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