《通信原理》課程項(xiàng)目報(bào)告
?
?
?
題 ???目:??? ??????基于開發(fā)板的通信系統(tǒng) ?????????
組??? 號:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
任課教師: ???????????? ? ? ? ? ? ? ??
組??? 長: ??? ????????????
組??? 員: ? ???????????
組??? 員: ??? ???????????
組??? 員: ????????????
組??? 員: ?? ???????????
聯(lián)系方式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
?
二零一九年? 2 月 23 日
一、實(shí)施方案
設(shè)計(jì)要求:
在給定的開發(fā)板DE10-Lite上,完成以下任務(wù):
?
第一級:完成數(shù)模轉(zhuǎn)換、二進(jìn)制調(diào)制解調(diào)(不含2ASK)(60分)
?
第二級:完成多進(jìn)制調(diào)制解調(diào)、或載波同步(80分)
?
第三級:同時(shí)完成多進(jìn)制調(diào)制解調(diào)和載波同步(90分)
?
單項(xiàng)加分:載波是正弦波,或頻率硬件可調(diào),或系統(tǒng)可以實(shí)現(xiàn)其他功能(每個(gè)10分)
實(shí)現(xiàn)思想:
使用偽隨機(jī)序列模擬基帶信號進(jìn)行FSK調(diào)制,通過DA輸出調(diào)制波形;再接入AD口模擬信號接收端,對AD采樣的信號進(jìn)行解調(diào),恢復(fù)出原始基帶信號,并與原始信號進(jìn)行比較。
在應(yīng)用熟練軟件之后,根據(jù)相同的思路做了多進(jìn)制FSK,對多進(jìn)制的效率有了更深的體會(huì)。
二、實(shí)施過程及結(jié)果分析
拿到板子之后,我們組內(nèi)討論得出:做FSK調(diào)制解調(diào);一是便于觀察、演示,二是解調(diào)手段多樣,便于板子上實(shí)現(xiàn)。
不過初期組內(nèi)熟悉quartus和verilog編程的并不多,而且對項(xiàng)目要求并不是很了解,所以前幾周更多的是學(xué)習(xí)verilog以及熟悉軟件。在做過通信原理實(shí)驗(yàn)的同學(xué)幫助下,算是知道了FSK是怎么一回事,緊接著便著手初步的調(diào)制。
在中期的時(shí)候我們總算明白了該怎么起手去做:利用FPGA板子做出數(shù)字的正弦波,再用基帶信號去進(jìn)行鍵控調(diào)制。
不過由于當(dāng)時(shí)沒有DA模塊再加上對quartus的不熟悉,一切都只是簡單的嘗試,而且只能花費(fèi)時(shí)間先去學(xué)仿真軟件modelsim,以期望能仿真出一個(gè)正弦波。
網(wǎng)上也各自找了怎么實(shí)現(xiàn)數(shù)字正弦波,一般的做法是要寫ROM模塊,通過累加地址依次輸出一個(gè)一個(gè)數(shù)據(jù),數(shù)據(jù)的來源則是通過matlab實(shí)現(xiàn)。
最初感覺很復(fù)雜,各種各樣的軟件要聯(lián)合起來,大家都不大愿意去做,時(shí)間也越來越少,只有沉下心去一點(diǎn)點(diǎn)實(shí)現(xiàn)。
中途modelsim軟件又出現(xiàn)各種問題,庫文件不全,無法仿真,在網(wǎng)上找了很久找到一個(gè)笨辦法,每次仿真時(shí)都要手動(dòng)重新選擇自己生成的庫文件:
https://wenku.baidu.com/view/67f7dbcb05a1b0717fd5360cba1aa81144318f00.html
在枯燥的重復(fù)操作中算是熟悉了基本的編程以及仿真方法,百度了很多資料,采用讀取ROM的方法總算是生成了初步的正弦載波,踏出了第一步,仿真圖如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中使用到來自matlab生成的mif文件作為數(shù)據(jù)源,matlab代碼如下:
clear;
?
%生成數(shù)據(jù)
depth = 64;
width = 8;
index = 0:2 * depth - 1;
value = 0.5*sin(2*pi*index/depth) + 0.5;
value = im2uint8(value);
%===============================開始寫mif文件===============================
addr=0:2 * depth-1;
str_width=strcat('WIDTH=',num2str(width));
str_depth=strcat('DEPTH=',num2str(depth));
?
fid=fopen('data2.mif','w');? %打開或者新建mif,存放位置和文件名任意
???????????????????????? ?????%如果只寫文件名,則在當(dāng)前目錄下建立此文件
fprintf(fid,str_width);
fprintf(fid,';\n');
fprintf(fid,str_depth);
fprintf(fid,';\n\n');
fprintf(fid,'ADDRESS_RADIX=HEX;\n');? %因?yàn)橄旅娴臄?shù)據(jù)輸入我選的是16進(jìn)制,
?
fprintf(fid,'DATA_RADIX=HEX;\n\n');
fprintf(fid,'CONTENT BEGIN\n');
fprintf(fid,'\t%X : %X;\n',[addr;value]);? %開始寫數(shù)據(jù)了
fprintf(fid,'END;\n');
fclose(fid);
?
就是用128個(gè)點(diǎn)的數(shù)據(jù)去擬合一個(gè)周期的正弦波,同時(shí)這里用了數(shù)字圖像處理的一個(gè)函數(shù)im2uint8,將0~1的值直接轉(zhuǎn)化為0~255的8位二進(jìn)制值。
仿真結(jié)束后,實(shí)際電路我們打算用FPGA的鎖相環(huán)PLL將時(shí)鐘擴(kuò)展到128M,再去驅(qū)動(dòng)這個(gè)ROM模塊,這樣就能生成1MHz的正弦載波了。
調(diào)用的過程中,我們也了解到FPGA一大方便之處:調(diào)用IP核。很多常用模塊都可以直接通過調(diào)核來實(shí)現(xiàn)相應(yīng)功能,像之前實(shí)現(xiàn)的正弦載波其實(shí)可以直接調(diào)用NCO生成。
依靠著強(qiáng)大的百度,我們學(xué)會(huì)了調(diào)用PLL,成功生成128M時(shí)鐘驅(qū)動(dòng)ROM實(shí)現(xiàn)了1MHz正弦波,并初次使用到了FPGA強(qiáng)大的“內(nèi)置示波器signal tap”:
然后簡單實(shí)現(xiàn)了一個(gè)偽隨機(jī)序列,并編寫了選通輸出模塊,兩路載波分別為1M、2M,成功完成了2FSK的調(diào)制。
放假前夕,我們組拿到了ADDA子卡,可以通過DA輸出、信道傳輸后進(jìn)行AD采樣來模擬接收了。
假期討論中我們遇到了一個(gè)很嚴(yán)重的問題,DA發(fā)送沒問題,AD接收有問題,我們按照ADDA子卡文檔上進(jìn)行操作但觀察到的實(shí)際波形卻是:
第三行是調(diào)制輸出給DA口的,第二行是AD接收的,我們一度懷疑自己設(shè)置錯(cuò)誤了,或者時(shí)鐘沒給正確。經(jīng)過一系列排查,我們發(fā)現(xiàn)是頻率的問題。這個(gè)“信道”就像是一個(gè)低通濾波器,頻率越高衰減越嚴(yán)重。
因此我們不得不改變原來制定的1M、2M,將頻率降低到能夠演示的范圍。最后直接用10M時(shí)鐘驅(qū)動(dòng)ROM模塊得到78k、156k的兩路載波,而隨機(jī)序列則是10k,也能滿足要求。
其調(diào)制實(shí)際波形通過示波器查看:
可以看到測量頻率為78k,與設(shè)計(jì)相符,不過這個(gè)正弦波很明顯可以看出一些不連續(xù)(臺(tái)階),放大后觀察:
這是因?yàn)橐粋€(gè)周期實(shí)際上只用了128個(gè)點(diǎn)去近似模擬,這也是我們精度不高的原因。之后做MFSK的時(shí)候,已經(jīng)熟悉了各種操作,通過調(diào)用NCO數(shù)控振蕩器生成的載波就很平滑,如下:
解調(diào)部分我們使用的是非相干解調(diào),將AD接收的信號分兩路,分別通過對應(yīng)的帶通濾波器,經(jīng)過全波整流,再低通濾波即可提取出兩路信號的包絡(luò),對兩路信號進(jìn)行抽樣判決即可解調(diào)出原始基帶信號,就是按照書中原理實(shí)現(xiàn)的。
這里又牽扯到一個(gè)問題,濾波器的實(shí)現(xiàn),查了很多網(wǎng)上的資料,它們一般都是調(diào)用的FIR Compiler這個(gè)一代IP核,而quartus16給的已經(jīng)是FIR II這個(gè)IP核,有一些不同。
我們借助一代的資料再加上自己的摸索最終實(shí)現(xiàn)了FIR濾波器,它的實(shí)現(xiàn)同樣也要借助于matlab的數(shù)字濾波器設(shè)計(jì),好在matlab集成了一個(gè)fdatool可以方便地給出我們需要的濾波器參數(shù)。
一般工程上實(shí)現(xiàn)濾波器不是我們學(xué)過的窗函數(shù)等方法,用的最多的是等紋波法,這些都可以直接借助fdatool,十分方便。
利用matlab得到的濾波器系數(shù),設(shè)置好對應(yīng)的采樣頻率、輸出位數(shù)就成功地實(shí)現(xiàn)了FIR濾波器的調(diào)用:
最后得到的兩路波形,由于2FSK的特性,判決門限就設(shè)置為0,兩路信號比較就可以得到輸出的二進(jìn)制波形。
不過這里還有最后一個(gè)問題:實(shí)際應(yīng)用往往需要得到二進(jìn)制比特流,這就需要一個(gè)定時(shí)脈沖去抽樣輸出最終的二進(jìn)制比特流信息。
我們組參考了《數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)AlteraVerilog版》一書,利用我們判決輸出的二進(jìn)制波形,實(shí)現(xiàn)了一個(gè)簡單的“位同步定時(shí)”,能夠比較好地抽樣輸出,完成2FSK的解調(diào),最終效果如下:
第一行是模擬的基帶信號,第三行是DA輸出的調(diào)制波形,第二行是AD采樣進(jìn)來的信號(模擬接收端),第四、第五行分別是通過對應(yīng)帶通濾波器的信號,第六、第七行是上面兩行提取包絡(luò)(全波整流、低通)波形,第八行是六、七行相減,判決前的波形;以0為門限判決得到第九行的二進(jìn)制波形,但這并不是數(shù)據(jù)流。
調(diào)用位定時(shí)模塊,利用第九行的二進(jìn)制波形得到了位定時(shí)脈沖(第十行),可以發(fā)現(xiàn)它的相位并不是固定的,在超前和滯后之間來回跳變,不過下降沿是比較穩(wěn)定的,取下降沿抽樣輸出得到了最終的解調(diào)信號(最下面一行)!
做完這些后,整體流程就比較熟悉了,我們又做了一個(gè)簡單的4進(jìn)制FSK,原理基本相同,不再贅述,直接上signal tap波形:
唯一不同點(diǎn)就是用了四種頻率的載波:第一行基帶數(shù)據(jù)(四進(jìn)制),第二行DA輸出調(diào)制波形,第三行AD采樣波形(可以明顯發(fā)現(xiàn)頻率越大衰減越大),下面的還是帶通、提取包絡(luò)的波形,原理完全一樣。
最后解調(diào)出來的4進(jìn)制信號與原始基帶信號比較:
比較好地恢復(fù)了基帶數(shù)據(jù),完成了多進(jìn)制調(diào)制解調(diào)。
三、項(xiàng)目總結(jié)
這次項(xiàng)目算是大學(xué)以來最大的挑戰(zhàn)之一了。最開始目標(biāo)不明、軟件不會(huì),一點(diǎn)點(diǎn)自學(xué)軟件以及verilog語言,之后能熟練地使用軟件完全都是時(shí)間堆起來的,quartus、modelsim、matlab等軟件聯(lián)合使用,最終完成了這次的項(xiàng)目。
做這次項(xiàng)目還理解到了FPGA開發(fā)的流程和它“模塊化”設(shè)計(jì)的理念,可以進(jìn)行很好的分工、分模塊設(shè)計(jì),最后在頂層文件里調(diào)用小模塊搭建起整個(gè)系統(tǒng),這是不同于以往項(xiàng)目的。
在使用ADDA子卡之前我們?nèi)鞘褂玫?/span>modelsim來進(jìn)行仿真驗(yàn)證,而使用ADDA模塊后由于仿真無法實(shí)現(xiàn),我們換成了signal tap直接在板子上驗(yàn)證結(jié)果,也使得我們對這個(gè)“內(nèi)嵌示波器”有了充足的了解。
項(xiàng)目中也體會(huì)到一點(diǎn):書本上通俗易懂的原理在實(shí)際工程中往往不是那么好實(shí)現(xiàn)的。我們使用的是非相干解調(diào),也有“不會(huì)載波同步”的原因在里面,書中直接給出的同步載波卻是整個(gè)項(xiàng)目的最大難題,比較遺憾的是這個(gè)沒有實(shí)現(xiàn),只參考書后完成了“位同步定時(shí)脈沖模塊”。
最后做的4進(jìn)制調(diào)制解調(diào)也讓我們更深刻地理解了通信系統(tǒng)的“取舍難題”,我們做的MFSK,傳輸效率確實(shí)高了不少,但其耗費(fèi)的資源(濾波器、尤其是帶寬資源)增加的不是一點(diǎn)半點(diǎn)。尤其是高速通信的當(dāng)今,帶寬資源更是稀缺,也難怪MFSK實(shí)際中基本沒有應(yīng)用,而基于PSK發(fā)展起來的QDPSK、QAM等技術(shù)得到了廣泛的應(yīng)用,確實(shí)有著其優(yōu)勢所在。
四、小組分工
?
參考文獻(xiàn):
?
[1] ?? 杜勇. 《數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FPGA實(shí)現(xiàn)AlteraVerilog版》. 電子工業(yè)出版社,2015.3
[2] ?? 李穎潔等. 《現(xiàn)代通信原理——信息傳輸?shù)幕驹怼?/span>.清華大學(xué)出版社,2007.5
評論