MIMO系統中射頻處理部分的研究與實現_第1頁
MIMO系統中射頻處理部分的研究與實現_第2頁
MIMO系統中射頻處理部分的研究與實現_第3頁
MIMO系統中射頻處理部分的研究與實現_第4頁
MIMO系統中射頻處理部分的研究與實現_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGEIMIMO系統中射頻處理部分的討論與實現摘要:傳統的無線電放射機大多依靠于硬件,但硬件部分操作實現比較麻煩,而且性能難以做到很好,現代技術一般用軟件來討論實現MIMO系統中的射頻處理部分。本設計以FPGA器件為核心,運用直接數字頻率合成技術,即DDS產生信號,用以實現數字基帶處理和數字上變頻,其電路系統具有較高的頻率分辨率,可以實現快速的頻率切換,并且在轉變時能夠保持相位的連續,很容易實現頻率、相位和幅度的數控調整。本設計還著重探討了具有數字調制功能的AM,FM,DSB,ASK,FSK,PSK,QPSK等基帶處理,給出了一種簡略的設計方法。關鍵詞:FPGADDSAMFMQPSK數字上變頻名目TOC\o”1-3"\h\z\uHYPERLINK3.1.1正弦信號的產生 0302\h2HYPERLINK\l"_Toc248070303"3.1.2FM信號的產生 PAGEREF_Toc248070303\h3HYPERLINK\l”_Toc248070304"3.1。3DSB信號的產生?PAGEREF_Toc248070304\h3HYPERLINK3。1.7PSK與QPSK信號的產生 PAGEREF_Toc248070308\h5HYPERLINK\l”_Toc248070309”3.2各種信號實現的FPGA設計?PAGEREF_Toc248070309\h6HYPERLINK3.2.5AM信號發生器的設計 PAGEREF_Toc248070314\h9HYPERLINK\l”_Toc248070315"3。2.6ASK信號發生器的設計?PAGEREF_Toc248070315\h10HYPERLINK\l”_Toc248070316"3.2。7FSK信號發生器的設計?PAGEREF_Toc248070316\h11HYPERLINK\l"_Toc248070317”3。2.8PSK與DPSK信號發生器的設計 PAGEREF_Toc248070317\h11HYPERLINK\l"_Toc248070318"3。2。9QPSK與QDPSK信號發生器的設計 PAGEREF_Toc248070318\h15HYPERLINK\l”_Toc248070319"3。3仿真結果及分析 PAGEREF_Toc248070319\h19HYPERLINK\l"_Toc248070320”3。3.1正弦信號部分 PAGEREF_Toc248070320\h19HYPERLINK\l”_Toc248070321"3.3.2FM信號部分?PAGEREF_Toc248070321\h20HYPERLINK\l”_Toc248070322"3。3.3DSB信號部分 PAGEREF_Toc248070322\h20HYPERLINK\l”_Toc248070323"3。3.4AM信號部分?PAGEREF_Toc248070323\h21HYPERLINK\l"_Toc248070324"3.3.5ASK信號部分?PAGEREF_Toc248070324\h21HYPERLINK\l"_Toc248070325”3。3。6FSK信號部分?PAGEREF_Toc248070325\h22HYPERLINK\l"_Toc248070326"3.3.7PSK信號部分?PAGEREF_Toc248070326\h22HYPERLINK\l"_Toc248070327”3.3.8DPSK信號部分?PAGEREF_Toc248070327\h23HYPERLINK5.1CIC單級濾波器的原理 PAGEREF_Toc248070331\h25HYPERLINK\l"_Toc248070332"5。2CIC低通濾波器的實現及仿真 PAGEREF_Toc248070332\h286總結 PAGEREF_Toc248070333\h29HYPERLINK\l"_Toc248070334"參考文獻:?PAGEREF_Toc248070334\h301引言隨著近年來軟件無線電理論和應用趨于成熟與完善,軟件無線電已經被廣泛地應用于雷達通信及各種軍用和民用的無線通信系統中,而其中軟件無線電射頻處理部分的討論也越來越受到重視。本設計所用到的基帶處理技術——直接數字頻率合(directdigitalfrequencysynthesizer,DDS),是一種新型的頻率合成技術,具有較高的頻率分辨率,可實現快速的頻率切換,并且在頻率變化時能夠保持連續相位,很容易實現頻率、相位和幅度的數控調制.目前各大芯片制造商相繼推出采納先進的CMOS工藝生產出的高性能的、多功能的DDS芯片川,如AD公司的AD985x系列。采納FPGA設計的DDS,頻率、相位設置更為便利靈敏。筆者著重討論商量了直接數字頻率合成正弦、調頻、調幅,ASK,FSK,PSK,QPSK,QDPSK等基帶處理原理,并給出了設計框圖和主要的程序代碼.2

軟件無線電放射機的基本體系結構抱負的軟件無線電是多頻段、多模式、開放式體系結構,其無線功能通過加載軟件來實現,從而供應多種無線電通信業務.軟件無線電放射機是軟件無線電兩大組成部分之一,它的主要功能是把需要放射或傳輸的信息(話音、數據和圖像)經基帶處理(完成諸如FM、AM、FSK、PSK、MSK、QAM等調制)和上變頻,調制到規定的載頻(中心頻率)fc上,通過數/模變換與濾波(目前一般還需加上一級模擬上變頻器),經過功率放大后送至天線,把電信號轉換為無線電信號,經空間傳播或經其它傳輸介質(如電纜、光纜等)送到接收方的接收機。軟件無線電放射機的基本組成如圖1所示。數字基帶調制數字基帶調制數字上變頻寬帶DA天線或其它放大介質在FPGA中實現CIC低通濾波器圖1軟件無線電放射機的基本組成軟件無線電放射機中的數字基帶調制是以FPGA為平臺,運用DDS技術產生的正弦信號為載波進行的調制,是本文著重介紹的部分。之后也以CIC濾波器商量了低通濾波器的實現.3基于FPGA的數字基帶處理部分3.1基于FPGA產生各種信號的原理3。1.1正弦信號的產生正弦信號的相位與頻率有如下關系:?兩邊對t取微分,得以差分近似上式,則有可以看到,當肯定時,一個頻率對應一個相位增量,即對應一個相位掌握字(或稱為頻率掌握字)m.從而可得正弦波產生的原理框圖如下:相位控制字相位控制字頻率控制字M相位寄存器∑∑正弦查找表DACLPF相位累加器圖2正弦信號產生原理框圖頻率掌握字掌握合成信號的頻率,波形存儲器中存儲了待合成信號一個周期的幅度離散量化信息,相位全加器和相位寄存器組成相位累加器,其輸出作為波形存儲器的尋址地址。在系統時鐘的同步下,相位累加器的抽出對波形存儲器尋址波形幅度信息被讀出,通過數/模轉換器和低通建波器后,得到所要求的合成信號。合成器的合成頗率由撅率掌握字、相位累加器的位數(模)和系統時鐘的頻率決定假設累加器的位數為N,模為M,則M=2N,系統時鐘的頻率為fc,頻率掌握字為m,則輸出信號的頻率為.其中k的計算將依據實現的信號不同而有所不同。頻率掌握字與輸出信號頻率成正比。由取樣定理,所產生的信號頻率不能超過時鐘頻率的一半,在實際運用中,為了保證信號的輸出質量,輸出頻率不要高于時鐘頻率的33%,以避開混疊或諧波落入有用輸出頻帶內。3.1.2FM信號的產生單一頻率余弦調制的調頻波電壓表示式為相位與頻率的關系為上式兩邊對t取微分,得以差分近似上式,則有式中:為載波頻率;為調制信號頻率;為頻偏。如下圖所示為FM信號發生器在FPGA中實現的框圖。頻率掌握字A掌握調制信號頻率,B掌握載波的中心頻率.相位累加器如圖5所示,它由加法器和寄存器組成,整個系統中的組合規律都要用流水線結構,也就是把一個大的組合規律分解成若干小的組合規律與寄存器,以此來保證系統速度。總的調制原理就是,用周期變化的調制信號作用于掌握載波頻率的相位累加器B原本固定的步長,使總的步長產生周期性變化,從而實現載波頻率在中心頻率四周的周期變化,得到FM信號。調制信號頻率控制字調制信號頻率控制字正弦信號發生器1載波頻率控制字數字變換正弦信號發生器2頻偏∑FM波形輸出圖3FM信號產生原理框圖3.1。3DSB信號的產生單一頻率余弦調制的抑制載波雙邊帶調幅波(DSB-SC)的信號表示式為所以,DSB—SC的實現可以看作是2個不同頗率的正弦(余弦)信號的直接求和。這兩個不同頻率的正弦信號可以用DDS的方法得到,并且直接將兩者尋址得到的正弦量化幅值直接相加求和可得.其原理實現框圖如下:頻率字加減器頻率字加減器正弦發生器1正弦發生器2正弦加法器正弦值正弦值頻率字之和頻率字之差載波頻率字調制信號頻率字圖4DSB信號產生原理框圖3.1.4AM信號的產生單一頻率余弦調制的一般調幅信號的表達式為對比抑制載波雙邊帶調幅的表達式,易知一般調幅的實現只需在DSB-SCDDS實現的基礎上增加一乘法器和一加法器。其原理實現框圖如下:DSB-SC模塊DSB-SC模塊8*8乘法器正弦值加法器正弦發生模塊載波頻率字調制信號頻率字載波頻率字調制系數m控制字圖5AM信號產生原理框圖3。1。5ASK信號的產生ASK信號就是依據輸入的m序列對載波進行振幅調制.其原理框圖如下:載波信號,由正弦發生器產生載波信號,由正弦發生器產生M序列輸出∑圖6ASK信號產生原理框圖這里商量其特例OOK信號。即當m序列的當前值為0時,輸出為0;當m序列的當前值為1時,輸出為載波的幅度。相當于數字開關。3.1。6FSK信號的產生從原理上來講,FSK與ASK相像,也是把m序列近似為數字開關。不同的是,FSK有兩個載波,當m序列的當前值為0時,輸出為載波1的幅度;當m序列的當前值為1時,輸出為載波2的幅度。若兩者的頻率不同,則實現了移頻鍵控。載波信號1載波信號1M序列輸出∑載波信號2∑抽樣判決圖7FSK信號產生原理框圖3.1.7PSK與QPSK信號的產生二進制肯定移相鍵控,即依據輸入的m序列的值來判定輸出信號的相位,如當m序列的當前值為0時,輸出載波的相位為0;當m序列的當前值為1時,輸出載波的相位為π。相對于PSK,DPSK的不同之處在于其輸出載波的相位是由m序列的前后相鄰碼元的異或值確定的。而產生的好處是可以盡量降低“倒π”現象的影響。QPSK是PSK的擴展,PSK的相位是二相的,而QPSK為四相。即輸出的信號會有四種不同的相位.其產生的優點是增強了系統的抗干擾能力,降低誤碼率。其實現原理框圖如下:串/并轉換串/并轉換邏輯選相電路輸出四相載波發生器45135225315圖8QPSK信號產生原理框圖3.2各種信號實現的FPGA設計3.2.1移位寄存器的設計如果用外部的掌握器來掌握FPGA,則掌握器與FPGA的連接需要大量的IO端口,為了削減兩者的IO端口的運用,節省端口資源,我設計了移位寄存器,其作用是將外部的串行掌握字轉換為并行掌握字。而在轉換的過程中起轉換時鐘與dclk轉換結束信號sclk皆由外部掌握器供應。其實現VerilogHDL語言如下:moduleShiftregister(dc,clr,ds,EN,date,Q);inputdc,clr,ds,EN,date;output[31:0]Q;reg[31:0]Q;reg[31:0]shift_date;always@(posedgedc)//轉換時鐘每來一個上升沿,移位寄存器向左移動一位beginif(clr==1)shift_date=0;//32'b00000000000000000000000000000000;elseif(EN)shift_date[31:0]={shift_date[30:0],date};//當EN=1,正常工作?elseshift_date[31:0]=shift_date[31:0];//當EN=0,暫停工作endalways@(posedgeds)//當轉換時鐘的上升沿來時,將轉換結果輸出beginQ[31:0]〈=shift_date[31:0];endendmodule3.2.2正弦信號發生器的設計正弦信號發生器主要由頻率字累加器,相位寄存器(累加),正弦查找表組成,其在FPGA中的原理圖實現如下:圖9正弦信號產生實現框圖各部分的程序如下:①頻率累加器moduleadd_fcw(clr,clk,fcw,sum);//此為累加器inputclr,clk;//clr清零信號clk時鐘信號input[31:0]fcw;//輸入頻率掌握字output[31:0]sum;reg[31:0]sum;always@(posedgeclk) begin?if(clr==0)sum<=0;//清零信號低電平有效,有效時寄存器值清零 elsesum<=sum+fcw;?endendmodule②相位寄存器(累加)moduleadd_pcw(clr,clk,pcw,data_in,address);//與上面程序不同之處在于有一個截短的過程,好處是削減存儲器的容量,而對精度并沒多大影響inputclr,clk;input[9:0]pcw;//輸入相位input[31:0]data_in;//頻率累加之和output[9:0]address;//輸出查詢正弦查詢表的地址reg[9:0]address;wire[9:0]data_in_10;assigndata_in_10=data_in[31:22];//對頻率累加器之和進行了截斷,其優點是引入可以忽視的誤差,存儲器地址長度減小,節省了存儲器大量資源always@(posedgeclk) begin?if(clr==0)address<=0; elseaddress<=data_in_10+pcw; endendmodule③正弦查找表可以用Matlab生成.保存為文檔格式,然后將文檔改為。coe格式。并在最前面加上memory_initialization_radix=10;memory_initialization_vector=程序如下:x=[0:6.28/1024:6。28]//取1024點? ?y=sin(x);? ??y=y*128;? ?p=fopen(sin_coe,"w”);? ? fwrite(y,1,1024,p);????fclose(p);3。2。3FM信號發生器的設計FM信號發生器主要由正弦信號發生器,數字映射模塊,加法器組成,正弦信號發生器,加法器在上面已經闡述,這里只介紹數值映射模塊.其在FPGA中的原理圖實現如下:圖10FM信號產生實現框圖f_a模塊的程序如下:modulef_a(clk,data,pinpian,k);inputclk;//系統時鐘input[7:0]data;//正弦發生器輸出值input[31:0]pinpian;//FM的頻偏掌握字,可以以此對正弦信號輸出值進行變換,從而實現調制深度的掌握output[31:0]k;//輸出變換值reg[31:0]k;reg[31:0]k_reg;reg[7:0]d_last;initialbegink_reg=0;d_last=0;end ?always@(posedgeclk) beginif(data〉d_last)k_reg〈=k_reg+pinpian;//將頻偏量化,依據前后值的大小決定是加頻偏還是減頻偏elseif(data<d_last)k_reg〈=k_reg-pinpian; ?? elsek<=k_reg;? ??d_last〈=data;endendmodule3.2.4DSB信號發生器的設計DSB信號發生器主要由頻率變換模塊,正弦信號發生模塊,加法器組成,正弦信號發生器,加法器在上面已經闡述,這里只介紹頻率變換模塊。其在FPGA中的原理圖實現如下:圖11DSB信號產生實現框圖頻率變換模塊:modulef_b(clk,dsb_zaibo,dsb_tiaozhi,max,min);inputclk;input[31:0]dsb_zaibo,dsb_tiaozhi;//DSB信號的載波,調制信號頻率的掌握字output[31:0]max,min;//輸出兩者之和,兩者之差reg[31:0]max,min;always@(posedgeclk)?begin?max=dsb_zaibo+dsb_tiaozhi;//載波,調制信號頻率之和?min=dsb_zaibo-dsb_tiaozhi;//載波,調制信號頻率之差?endendmodule3。2.5AM信號發生器的設計AM信號發生器主要由上面的DSB模塊,正弦信號發生模塊,乘法器,加法器組成,正弦信號發生器,加法器在上面已經闡述,乘法器調用的是FPGA的核,這里不再闡述。其在FPGA中的原理圖實現如下:圖12AM信號產生實現框圖3.2.6ASK信號發生器的設計ASK信號發生器主要由一個正弦信號發生模塊,一個波形選擇器組成,正弦信號發生器在上面已經闡述,這里只介紹波形選擇器模塊。其在FPGA中的原理圖實現如下:圖13ASK信號產生實現框圖波形選擇器:moduleselect_m(clk,EN,M,SINE1,SINE2,outwave);inputclk,EN,M;//M為輸入的信息序列input[7:0]SINE1,SINE2;//輸入的波形output[7:0]outwave;//輸出波形reg[7:0]outwave;always@(posedgeclk)beginif(EN!=0)?beginif(M==0)outwave<=SINE1;//依據M值的不同,選擇不同的波形輸出elseoutwave〈=SINE2;?endelseoutwave<=0;endendmodule3。2.7FSK信號發生器的設計FSK信號發生器主要由兩個正弦信號發生模塊,一個波形選擇器組成,相對于ASK只不過多了一個載波,所用模塊相同.其在FPGA中的原理圖實現如下:圖14FSK信號產生實現框圖3。2。8PSK與DPSK信號發生器的設計PSK與QPSK其與ASK,FSK的不同之處在于前者變化的是相位,后者變化的是頻率。兩者所用的模塊基本相同,原理圖可參考上面部分。其格外之處的簡略程序如下:①PSK模塊:modulepsk(clk,clr,fcw,angle,M,EN,psk_output);input[31:0]fcw;//載波頻率input[9:0]angle;//載波相位inputclk,clr;inputM,EN;//M為輸入的序列output[7:0]psk_output;//輸出波形reg[7:0]psk_output;wire[7:0]psk_zaibo;myddsdds_ask(.gclock(clk),?.clr(clr),。fcw(fcw),.pcw(angle),。outputwave(psk_zaibo));//正弦發生模塊,產生載波always@(posedgeclk)beginif(EN!=0)?beginif(M==0)psk_output〈=~psk_zaibo;//M=0時相位為180elsepsk_output<=psk_zaibo;//M=1時相位為0 endelsepsk_output<=0;endendmodule②DPSK模塊:方式一moduledpsk(clk,clr,fcw,angle,EN,dpsk_output,a,M);input[31:0]fcw;//載波頻率掌握字input[9:0]angle;//載波相位掌握字inputclk,clr;//系統時鐘,清零信號inputEN;//系統使能信號output[7:0]dpsk_output;//輸出波形outputa,M;//輸出產生的M序列與輸出波形相對比reg[7:0]dpsk_output;wire[7:0]dpsk_zaibo;rega;initial//初始化模塊begina=0;//a存放M序列上一碼元的值endm1m1( 。gclock(clk),?。EN(EN), 。M_code(M),?。clk(clk_M));//產生M序列myddsdds_ask(。gclock(clk),?.clr(clr),.fcw(fcw),.pcw(angle),。outputwave(dpsk_zaibo));//正弦發生模塊,產生載波 always@(posedgeclk)beginif(EN!=0)?begin ?if(M==a)dpsk_output<=~dpsk_zaibo;//當前后碼元相同時輸出波形相位為180? else??begin dpsk_output<=dpsk_zaibo;//當前后碼元不同時輸出波形相位為0??end?endelsedpsk_output〈=0;//當系統沒使能時,輸出為0endalways@(posedgeclk_M)//依據M序列的同步時鐘,來存儲M序列當前的值,以便與M序列下一值相比較begina=M;endendmodule③DPSK1模塊:方式二moduleDPSK1(clk,clr,angle,DPSK_zaibo,EN,DPSK_out,M);inputclk,EN,clr;input[31:0]DPSK_zaibo;//載波頻率掌握字input[9:0]angle;//載波相位掌握字output[7:0]DPSK_out;outputM;reg[7:0]DPSK_out;reg[9:0]address1,address2;reg[9:0]address3,address4;wire[9:0]address;reg[9:0]dpsk_zaibo1;wire[7:0]DPSK_out1;wire[31:0]data_in;rega;initial//初始化地址beginaddress1=0;address2=0;address2[9]=1;a=0;endm1m1( 。gclock(clk), .EN(EN), .M_code(M),?。clk(clk_M));//產生M序列 add_fcwadd_fcw(?。clr(clr), 。clk(clk),?.fcw(DPSK_zaibo),?.sum(data_in) );//頻率掌握字累加?add_pcwadd_pcw( 。clr(clr), .clk(clk),?.pcw(angle),?.data_in(data_in), .address(address) ); //與相位掌握字相加always@(posedgeclk)//依據前后碼元的異同來修正查詢地址begin?if(EN!=0) begin???address3=address1+address;???address4=address2+address;? if(M==a)dpsk_zaibo1<=address3;//前后碼元相同時,相位為0???else ?begin??? dpsk_zaibo1<=address4;;//前后碼元不同時,相位為180 ?? end? end elsedpsk_zaibo1〈=0;endsinromsinrom(?。a(dpsk_zaibo1),//Bus[9:0] 。clk(clk),?。qspo(DPSK_out1));//Bus[7:0]//查詢正弦查詢表?always@(posedgeclk_M)/依據M序列的同步時鐘,來存儲M序列當前的值,以便與M序列下一值相比較begina=M;endalways@(posedgeclk)beginDPSK_out=DPSK_out1;endendmodule比較PSK與DPSK,DPSK1模塊可以發現,相對于PSK,DPSK的不同之處在于其輸出載波的相位是由m序列的前后相鄰碼元的異或值確定的.故在DPSK中多了將前后碼元比較的部分。而DPSK與DPSK1之間的區分是,前者是產生載波后在進行相位處理,后者是把相位變化融入正弦查找表的查找地址中,然后產生正弦波.前者應用范圍較小,只適合0和180相位,而后者適用于任意相位的變化.故在下面的QPSK,QDPSK應用了此種方法.3.2.9QPSK與QDPSK信號發生器的設計QPSK與QDPSK其與PSK,DPSK的不同之處在于有四種相位來表達信息。故多了一個串并轉換模塊,而QDPSK相對于QPSK則有多了一個異或的過程,即將前兩個碼元與相鄰的后兩個碼元相異或,由異或值確定輸出波形的相位。其簡略程序如下:①QPSK模塊:moduleQPSK(clk,clr,QPSK_zaibo,angle,EN,QPSK_out,M);inputclk,clr,EN;input[31:0]QPSK_zaibo;//載波頻率掌握字input[9:0]angle;//載波相位掌握字output[7:0]QPSK_out;outputM;reg[7:0]QPSK_out;wire[7:0]QPSK_out2;reg[9:0]address1,address2,address3,address4,QPSK_out1;reg[9:0]address5,address6,address7,address8;reg[1:0]A;regb;wire[31:0]data_in;wire[9:0]address;regcounter;initial//初始化地址beginaddress1=0;address2=0;address3=0;address4=0;address1=0;address2[8]=1;address3[9]=1;address4[8]=1;address4[9]=1;counter=0;end ?m1m1(?.gclock(clk), .EN(EN),?.M_code(M),?。clk(clk_M));;//產生M序列 add_fcwadd_fcw(?.clr(clr), .clk(clk), 。fcw(QPSK_zaibo),?。sum(data_in)?);//頻率掌握字累加?add_pcwadd_pcw(?.clr(clr),?.clk(clk),?.pcw(angle), 。data_in(data_in),?.address(address) );?//與相位掌握字相加always@(posedgeclk_M)//進行串并轉換,并存儲上兩個碼元的值begincounter〈=counter+1;if(counter==0)b=M;//當counter為0時存儲第一個碼元的值//always@(negedgeclk_M)elseif(counter==1)? begin A[1]=M;A[0]=b;counter<=0;當counter為1時存儲其次個碼元的值,并對比較值進行更新,即每兩個碼元進行一次更新? endendalways@(posedgeclk)begin?if(EN!=0) ?begin address5=address1+address; ?address6=address2+address;? address7=address3+address; ?address8=address4+address;??case(A)//依據前后碼元的組合分別給予四種相位中的一種??2'b00:?QPSK_out1<=address5; 2’b01:?QPSK_out1<=address6;? 2'b10:?QPSK_out1<=address7;? 2'b11: QPSK_out1<=address8;? endcase ?end?elseQPSK_out1<=0;endsinromsinrom(?.a(QPSK_out1),//Bus[9:0] 。clk(clk),?。qspo(QPSK_out2));//Bus[7:0]//查詢正弦查詢表always@(posedgeclk)beginQPSK_out=QPSK_out2;endendmodule②QDPSK模塊:moduleQDPSK(clk,clr,QDPSK_zaibo,angle,EN,QDPSK_out,M);inputclk,clr,EN;input[31:0]QDPSK_zaibo;//載波頻率掌握字input[9:0]angle;//載波相位掌握字output[7:0]QDPSK_out;outputM;reg[7:0]QDPSK_out;wire[7:0]QDPSK_out2;reg[9:0]address1,address2,address3,address4,QDPSK_out1;reg[9:0]address5,address6,address7,address8;wire[31:0]data_in;wire[9:0]address;regcounter;reg[1:0]A,B,C;initial//初始化查詢地址beginaddress1=0;address2=0;address3=0;address4=0;address1=0;address2[8]=1;address3[9]=1;address4[8]=1;address4[9]=1;counter=0;A=0;end?? m1m1( .gclock(clk), 。EN(EN), 。M_code(M),?.clk(clk_M));//產生M序列?add_fcwadd_fcw(?.clr(clr),?.clk(clk),?.fcw(QDPSK_zaibo), .sum(data_in)?);//頻率掌握字累加?add_pcwadd_pcw(?.clr(clr),?.clk(clk),?。pcw(angle),?.data_in(data_in),?.address(address)?);?//與相位掌握字相加always@(posedgeclk_M)//進行串并轉換,并存儲上兩個碼元的值begincounter〈=counter+1;if(counter==0)C[0]=M;/當counter為0時存儲第一個碼元的值elseif(counter==1)beginC[1]=M;當counter為1時存儲其次個碼元的值,并對比較值進行更新,即每兩個碼元進行一次更新。并將前后碼元進行異或得到相位的表示組合,在后面與條件選擇語句相比較,從而取得不同的查詢地址。B[1]=A[1]^C[1];B[0]=A[0]^C[0];//前后碼元相異或counter<=0;A=C;endendalways@(posedgeclk)begin if(EN!=0)? begin??address5=address1+address; address6=address2+address;? address7=address3+address;? address8=address4+address;? case(B) ?2’b00:QDPSK_out1〈=address5; 2’b01:QDPSK_out1<=address6; 2’b10:QDPSK_out1<=address7; 2’b11:QDPSK_out1<=address8;???endcase? end elseQDPSK_out1<=0;endsinromsinrom(?。a(QDPSK_out1),//Bus[9:0] .clk(clk), .qspo(QDPSK_out2));//Bus[7:0]always@(posedgeclk)beginQDPSK_out=QDPSK_out2;endendmodule3。3仿真結果及分析3.3.1正弦信號部分設置正弦信號的頻率為1k,相位分別為0,225,315;實測頻率為1k,相位差為225,315;圖15正弦信號仿真實例之一由上可知,該正弦發生器可以實現相位的任意設置,頻率在0~1MHz之間誤差可以忽視,達到了一般信號的要求。3.3.2FM信號部分調制信號頻率為500Hz;載波頻率為10KHz.圖16FM信號仿真實例之一由上可知,該FM信號發生器載波,調制信號頻率可以在1M以下設置,這里實現的是載波頻率為10KHz,調制信號的頻率在100~1KHZ之間,達到了一般信號的要求。3.3。3DSB信號部分載波頻率為30KHZ,調制信號的頻率為1KHz。圖17DSB信號仿真實例之一由上可知,該DSB信號發生器載波,調制信號頻率可以在1M以下設置,這里實現的是載波頻率為30KHz,調制信號的頻率在100~1KHZ之間,達到了一般信號的要求。3。3.4AM信號部分載波頻率為30KHZ,調制信號的頻率為1KHz。調制系數m=0.5.圖18AM信號仿真實例之一由上可知,該AM信號發生器載波,調制信號頻率可以在1M以下設置,這里實現的是載波頻率為30KHz,調制信號的頻率在100~1KHZ之間,調制系數在0~1之間可變的信號,達到了一般信號的要求.3。3.5ASK信號部分輸入序列為:0101,載波頻率為1MHz圖19ASK信號仿真實例之一由上可知,該ASK信號發生器載波可以在1M以下設置,這里實現的是載波頻率為1MHz,輸入序列任意可變,達到了一般信號的要求。3.3。6FSK信號部分輸入序列為:0101,載波頻率分別為100KHz,1MHz圖20FSK信號仿真實例之一由上可知,該FSK信號發生器兩個載波可以在1M以下設置,這里實現的是載波頻率分別為1MHz,100KHZ,輸入序列任意可變,達到了一般信號要求。3.3.7PSK信號部分輸入序列為:01001011,載波頻率分別為1MHz。圖21PSK信號仿真實例之一由上可知,該PSK信號發生器載波可以在1M以下設置,這里實現的是載波頻率為1MHz,輸入序列任意可變,當M值為1時相位為0,為0時相位為180。達到了一般信號的要求.3。3.8DPSK信號部分輸入序列為10010010,序列速率為5kbps。載波頻率為10KHz.圖22DPSK(方式一)信號仿真實例之一輸入序列為10010010,序列速率為5kbps。載波頻率為10KHZ。圖23DPSK(方式二)信號仿真實例之一分析上面的方式一和方式二,兩者載波可以在1M以下設置,序列速率小于載波頻率即可.而兩種方式產生的波形大致相同,不同之處只不過是代表相同碼元的相位不同。從上面的圖可以看出不同的碼元對應的不同相位.總的來說,兩者都實現了DPSK這一調制功能.3.3.9QPSK與QDPSK信號部分輸入序列為01001011,序列速率為5kbps。載波頻率為10KHZ。圖24QPSK信號仿真實例之一由上可知,01的相位為90;00的相位為0;10的相位為180;11的相位為270。即四種不同的相位表示了四種不同的碼元組合,實現了QPSK調制。輸入序列為10010100,序列速率為5kbps。載波頻率為10KHZ。圖25QDPSK信號仿真實例之一由上可知,10與01相異或為11,其相位為270;01與01相異或為00,其相位為90;01與00相異或為01,其相位為180;00與10相異或為10,其相位為0;即四種不同的相位表示了四種不同的碼元組合,該碼元組合由前兩碼元與后兩碼元相異或而得,可見實現了QDPSK調制。4數字上變頻數字上變頻器(DigitalUpConverter,簡稱:DUC)通過對數字信號的處理,將基帶信號的頻譜,搬移到肯定頻率的中頻四周,放射機從DUC子系統獲得中頻信號后,經過數模轉換器將數字信號變為中頻模擬信號,然后再將模擬中頻信號經過濾波器濾波之后濾除在處理過程中產生的全部噪聲(干擾抑制),送入射頻放大器將信號放大到要求的放射電平,最后將信號饋送到天線,完成整個放射過程。其中,DUC的結構如圖26所示圖26數字上變頻原理框圖從上圖可以看出,數字上變頻器的基本單元包括采樣率變換單元、乘法器和數控振蕩器(NumericallyControlledOsiallator,簡稱NCO),采樣率變換單元實現數據速率的變換,數控振蕩器產生數字本振信號.這種電路簡化了很多,但是提高了對數字信號處理器的要求,要實現高性能的數控振蕩器也需要投入很大的精力與資源,數字信號處理器的成本也必將會增加。實際上數字上變頻的實現與信號的FM調制相像,都是進行頻譜搬移,其中FPGA中的實現可以參考FM調制,這里不再贅述。5CIC低通濾波器5.1CIC單級濾波器的原理積分梳狀(CascadeIntegratorComb,CIC)濾波器又稱為簡潔整系數梳狀濾波器,是在高速抽取或插值系統中格外在效的單元。它結構簡潔,處理速度高,最大優點是不需要進行乘法運算,可以對高速數據流進行低通濾波和抽取因子不是2的冪次倍的抽取處理。它常用在多級抽取的第一級。設抽取因子為D,則單級CIC濾波器具有如下特性:(1)式中,D即是CIC濾波器的階數(等于濾波器的抽取因子)。單級CIC濾波器的傳遞函數為:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論