摘 要:文章主要內(nèi)容是根據(jù)建立的FSK解調(diào)算法模型設(shè)計(jì)各個(gè)模塊的邏輯結(jié)構(gòu),并用Verilog代碼實(shí)現(xiàn),包括量化模塊、乘法模塊、差分模塊。然后通過MATLAB、simulink、modelsim、QuartusII等軟件完成代碼的仿真驗(yàn)證。聯(lián)合仿真測(cè)試電路功能的正確性。
關(guān)鍵詞:simulink;modelsim;MATLAB
1 Verilog語言及modelsim簡(jiǎn)介
Verilog HDL 語言是硬件描述語言之一,常用的硬件描述語言有VHDL和Verilog,在歐美國(guó)家VHDL的使用要大于Verilog,而在中國(guó)Verilog所占份額要大于VHDL,Verilog語言與C語言非常相似,可以說是基于C語言的結(jié)構(gòu)而發(fā)展起來的,VHDL語言的格式?jīng)]有Verilog通俗易懂,但是VHDL更接近硬件,綜合起來要優(yōu)于Verilog。可以說Verilog和VHDL各有所長(zhǎng)[1]。早期的集成電路模板是工程師根據(jù)電路原理圖手工繪制的,由于早期的電路簡(jiǎn)單,所以這種手工繪制的方法暫時(shí)可以滿足需求,但是隨著集成電路的集成度和復(fù)雜度的增加,手工繪制越來越不能滿足設(shè)計(jì)的需要,并且時(shí)常會(huì)出現(xiàn)一些錯(cuò)誤。這樣硬件描述語言就應(yīng)運(yùn)而生,早期硬件描述語言只是起到仿真和驗(yàn)證的作用,隨著運(yùn)用越來越廣泛和后期添加功能,Verilog逐漸被設(shè)計(jì)者使用。到了今天,硬件描述語言Verilog已經(jīng)廣泛的運(yùn)用于大規(guī)模、超大規(guī)模集成電路的設(shè)計(jì)。電子設(shè)計(jì)自動(dòng)化也越來越不能離開硬件描述語言,并且衍生出新的語言比如:SystemVerilog。等高級(jí)語言。總而言之,Verilog解放人的大腦,讓計(jì)算機(jī)強(qiáng)大的功能來實(shí)現(xiàn)人的電路思想[1]。Mentor公司的ModelSim是作為一款最優(yōu)秀最精準(zhǔn)的仿真軟件,不僅僅能給用戶提供一個(gè)簡(jiǎn)單易操作的界面環(huán)境,而且支持VHDL和Verilog混仿僅有的單內(nèi)核軟件。這個(gè)軟件優(yōu)化了仿真技術(shù)、可以使用Tcl/Tk命令,modelsim具有速度快編譯代碼普適性的特點(diǎn),有利于用戶使用并保護(hù)IP核,是 FPGA/ASIC設(shè)計(jì)的首選仿真軟件[2]。
2 FSK解調(diào)系統(tǒng)總體設(shè)計(jì)
解調(diào)算法具體的設(shè)計(jì)指標(biāo)為:
(1)輸入信號(hào)碼率10Kbps;(2)中頻為fc=30KHz;(3)頻率偏差?駐f=5KHz;根據(jù)第差分解調(diào)算法原理,建立解調(diào)算法Verilog系統(tǒng)框圖,其中包括量化單元、差分濾波器、乘法器、低通濾波器等模塊。
2.1 量化模塊
量化模塊將前端RF接收到的數(shù)字化后的調(diào)制信號(hào)進(jìn)行量化。其采樣的周期,量化的位數(shù)直接影響解調(diào)的性能和最終的芯片面積。這里對(duì)量化位數(shù)進(jìn)一步說的。前級(jí)量化按照表1所示來量化,其中x是采樣輸入數(shù)據(jù)。
表1 接收信號(hào)量化
編寫抽樣量化Verilog代碼。其中base_in是基帶接收信號(hào)默認(rèn)為經(jīng)過采樣的9位信號(hào),由于沒有調(diào)制模塊,這里通過添加DDS,然后將數(shù)據(jù)導(dǎo)入modelsim測(cè)試文件。然后經(jīng)過量化模塊,實(shí)現(xiàn)位數(shù)的降低,最終輸出為3位。量化模塊最主要的是比較器模塊。通過modelsim后仿真,最后綜合得到量化模塊的綜合RTL級(jí)電路。
2.2 低通濾波器及IP核使用
低通濾波器的作用的濾除諧波分量?;诖a率為10Kbps只需要濾除10Kbps以上的頻率分量[3]。首先要利用fdatool工具獲得抽頭系數(shù):首先進(jìn)入fdatool工具設(shè)置好濾波器的參數(shù)。FPASS:9600。FSTOP:12000。specify order:60。Response type:lowpass。在設(shè)置好以上參數(shù)后,點(diǎn)擊設(shè)計(jì)濾波器。然后生成濾波器的系數(shù)。得到的數(shù)據(jù)都是浮點(diǎn)數(shù)經(jīng)過定點(diǎn)過后的數(shù)值。并且在低通濾波器中還可以輸入濾波器的截?cái)喾绞揭约袄鄢思臃ǖ亩c(diǎn)位數(shù)。這里選擇的是與輸入相同的位數(shù)也就是8位。然后通過與差分濾波器設(shè)計(jì)一樣的流程設(shè)計(jì)了低通濾波器模塊其Verilog代碼其中輸入數(shù)據(jù)data_in為乘法器輸出的8位信號(hào)。data_out為輸出為8位的信號(hào),這里由于運(yùn)算的需要通過飽和截?cái)嗄K之后運(yùn)算結(jié)果由最初的20位變?yōu)?位,以減少后級(jí)處理的負(fù)擔(dān)和開銷。在通過低通濾波器后,由于后級(jí)有維特比譯碼處理單元,而維特比譯碼比較的是歐式距離而不是漢明距離,因此在這里未采用抽樣判決模塊,而是直接將8位數(shù)據(jù)輸入到維特比譯碼模塊,而維特比譯碼模塊在前級(jí)會(huì)將8位信號(hào)進(jìn)行量化,變?yōu)?位8級(jí)的輸入,然后判斷歐式距離。由于FPGA本身帶有乘法器IP核,因此這里直接例化乘法器模塊添加到系統(tǒng)中,直接供給系統(tǒng)使用。
3 仿真
前面完成了從算法設(shè)計(jì)到Verilog實(shí)現(xiàn)的步驟,并針對(duì)數(shù)字集成電路的低功耗優(yōu)化進(jìn)行了Verilog代碼設(shè)計(jì),下面主要完成代碼的仿真驗(yàn)證。通過MATLAB、simulink、modelsim、QuartusII等軟件聯(lián)合仿真測(cè)試電路功能的正確性。首先通過在modelsim軟件中添加testbench文件測(cè)試解調(diào)模塊、維特比譯碼模塊的功能,并嚴(yán)格對(duì)比MATLAB的輸出來判定代碼的正確性。然后選取Altera公司的CycloneIV系列FPGA芯片EP4CGX22CF19C6作為目標(biāo)芯片,通過QuartusII軟件綜合整個(gè)解調(diào)解碼系統(tǒng)生成報(bào)告。通過分析系統(tǒng)性能滿足設(shè)計(jì)要求。
3.1 量化模塊仿真
圖1 Verilog量化模塊仿真圖
從圖1可以看到輸入基帶信號(hào)由“0”變?yōu)椤?”的過程中,量化后的調(diào)制信號(hào)周期縮短為原來的一半。并且量化的位數(shù)和范圍符合表1所示。
3.2 差分濾波器仿真
首先在MATLAB建立的差分濾波器模型中輸入5000個(gè)隨機(jī)信號(hào),然后將MATLAB模型輸出的5022個(gè)結(jié)果保存到data.txt文件里。將輸入MATLAB模型的5000個(gè)隨機(jī)信號(hào)生成testbench文件tb3.v,通過modelsim軟件測(cè)試差分濾波器模塊。將modelsim仿真結(jié)果導(dǎo)出到data_out.txt。這個(gè)過程是通過下面的Verilog代碼實(shí)現(xiàn)的:w_file = $fopen("data_out.txt"); $fmonitor(w_file,"%b",filter_out);然后對(duì)比分析MATLAB與modelsim的輸出。由于對(duì)比數(shù)量巨大無法通過肉眼觀察,因此通過ultraedit軟件的比較工具實(shí)現(xiàn)MATLAB的濾波器輸出和modelsim仿真濾波器的輸出。一般設(shè)置輸出數(shù)據(jù)文檔data.txt是MATLAB的輸出,data_out.txt為modelsim的輸出。通過最后比對(duì)可以得到MATLAB模型與modelsim輸出結(jié)果完全一致有5023行匹配,0行差異。那么用Verilog建立的FIR濾波器模塊能正確實(shí)現(xiàn)所要求的濾波器功能。文章設(shè)計(jì)的濾波器可以修改抽頭系數(shù)、輸出位寬、輸入位寬,為通用型濾波器。低通濾波器就是在此濾波器的基礎(chǔ)上改變參數(shù)得到。因此其仿真結(jié)果不再展示。
3.3 差分解調(diào)仿真
輸入信號(hào)以9位二進(jìn)制的形式進(jìn)入濾波器模塊,通過量化模塊量化為3位二進(jìn)制信號(hào),在分別進(jìn)入乘法器和差分濾波器,通過差分濾波器的一路信號(hào)經(jīng)過差分濾波之后為11位二進(jìn)制信號(hào),然后與進(jìn)入乘法器(3*11位)的另外一路信號(hào)相乘,再做截?cái)嗵幚淼玫?位信號(hào)。通過低通濾波器做卷積相乘,得到16位信號(hào),也做截?cái)嗵幚淼玫?位信號(hào)。最后通過量化判斷得到基帶原始信號(hào)[3]。通過波形的對(duì)比,證明能模塊能正確解調(diào)信號(hào)。通過前仿真后通過為了驗(yàn)證代碼的正確性,首先通過MATLAB生成原始基帶信號(hào),然后調(diào)制成20KHz和40KHz的調(diào)頻信號(hào),將調(diào)頻信號(hào)取離散采樣,將得到的數(shù)據(jù)輸入testbench作為采樣過后的信號(hào),通過modelsim級(jí)聯(lián)仿真驗(yàn)證代碼時(shí)序正確性。選Altera公司的CycloneIV系列FPGA芯片EP4CGX22CF19C6,在Altera公司開發(fā)的集成開發(fā)工具QuartusII中輸入代碼,進(jìn)行綜合和布局布線,提取器件的延時(shí)參數(shù),根據(jù)Quartus II的靜態(tài)時(shí)序分析報(bào)告所示。然后得到sdf/sdn文件導(dǎo)入modelsim[4],驗(yàn)證代碼的時(shí)序正確性。報(bào)告得到,驅(qū)動(dòng)時(shí)鐘"clk"時(shí)間裕量非常充足,其最高工作速度可以達(dá)到220MHz,而解調(diào)周期是32個(gè)時(shí)鐘周期,解調(diào)速度滿足10kpbs的要求[5]。
4 結(jié)束語
文章通過分析FSK解調(diào)的部分模塊,通過MATLAB建立解調(diào)的各個(gè)模塊,并用Verilog代碼實(shí)現(xiàn),主要內(nèi)容是根據(jù)建立的FSK解調(diào)算法模型設(shè)計(jì)各個(gè)模塊的邏輯結(jié)構(gòu),重點(diǎn)分析了量化模塊、低通濾波器模塊以及乘法模塊。仿真驗(yàn)證中,通過搭建一個(gè)聯(lián)系起modelsim、MATLAB、simulink的平臺(tái)來驗(yàn)證代碼的正確性,通過對(duì)比代碼的輸入輸出與MATLAB及simulink的輸入輸出得到代碼的功能是否正確。首先驗(yàn)證了設(shè)計(jì)的正確性,其次在以后的前仿真中也可以利用搭建起來的這一平臺(tái)來驗(yàn)證代碼的正確性。
參考文獻(xiàn)
[1]陳磊.基于FPGA的DMR系統(tǒng)4FSK調(diào)制解調(diào)的實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[2]謝曉燕,寧永海.基于MATLAB的通信系統(tǒng)仿真應(yīng)用研究[J].通信技術(shù),2007,12(40):82-84.
[3]黎玉玲,張延華.基于MATLAB的通信系統(tǒng)仿真平臺(tái)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2006(10):248-250.
[4]李瑩,路衛(wèi)軍,于敦山.一種在FPGA上實(shí)現(xiàn)FIR數(shù)字濾波器的資源優(yōu)化算法[J].北京大學(xué)學(xué)報(bào)(自然科學(xué)版),2009(45):222-226.
[5]冷邦平.高速FIR數(shù)字濾波器在FPGA上的實(shí)現(xiàn)[D].成都:電子科技大學(xué),2008.
作者簡(jiǎn)介:向舜然(1987,3-),男,重慶人,碩士研究生,研究方向:數(shù)字信號(hào)處理FPGA實(shí)現(xiàn),單位:重慶城市管理職業(yè)學(xué)院。