1、module fre_div(clk,cp0);/分频器input clk;output reg cp0;parameter N=32;integer i=0;initialbegin cp0=0;endalways(posedge clk) begin if(iN/2-1) i=i+1; else begin i=0;cp0=cp0; end endmodule随机码序列产生器(m序列):module PN_Seq(clk,reset_n,dataout); input clk; input reset_n; output dataout; reg 7 : 1 c; always ( pos
2、edge clk or negedge reset_n ) if (!reset_n) c = 7b1001110; else c7=c6; c6=c5; c5=c4; c4=c3; c3=c2; c2=c1; c1= c2c3c4c7; end assign dataout = c7;差分编码器:module dif(clk,reset_n,in,out); input in; output out; reg 1:0 o;always (posedge clk or negedge reset_n) if(!reset_n) o = 1; else o = ino; end assign o
3、ut = o;控制器:module Controller(clk,reset_n,s,address,cp);input reset_n;input cp;input s; /相对码output 4 : 0 address;reg 4 : 0 address_data; 0 count;reg sign ;always (posedge cp)begin if(s=0) count= 5b10000; else if(s=1) count=5b00000; sign address_data else begin if(sign=1)=count;=address_data+1b1; if(a
4、ddress_data=32) address_data assign address = address_data;正弦波形查找表:module LookUpTable(clk,reset_n,address,dataout);/正弦载波采样表 input 4 : output 7 : 0 dataout; 0 LUT 0 : 31 ; if( !reset_n ) begin LUT 0 =128 ; /用C编程计算出的查找表采样值填在这里 LUT 1 =152 ; LUT 2 =176 ; LUT 3 =198 ; LUT 4 =218 ; LUT 5 =234 ; LUT 6 =245
5、 ; LUT 7 =253 ; LUT 8 =255 ; LUT 9 LUT 10 LUT 11 LUT 12 LUT 13 LUT 14 LUT 15 LUT 16 LUT 17 =103 ; LUT 18 =79 ; LUT 19 =57 ; LUT 20 =37 ; LUT 21 =22 ; LUT 22 =10 ; LUT 23 =2 ; LUT 24 =0 ; LUT 25 LUT 26 LUT 27 LUT 28 LUT 29 LUT 30 LUT 31 assign dataout = LUT address ;3、功能仿真和时序仿真结果的波形功能仿真:时序仿真:实验二 MATL
6、AB 实验OFDM误码率仿真(AWGN)一、实验目的:1、 掌握OFDM 的基本原理。2、 掌握用Matlab 搭建OFDM 系统的基本方法3、 用MATLAB 进行OFDM 系统在AWGN 信道下误码率分析。1. 所有程序完整的源代码(.m 文件)以及注释。2. 仿真结果。对于所有的图形结果(包括波形与仿真曲线等),将图形保存成.tif 或者.emf的格式并插入word 文档。1、所有程序完整的源代码(.m 文件)以及注释:%16QAM的调制函数function complex_qam_data=qam16(bitdata)%modulation of 16QAM,modulate bitd
7、ata to 16QAM complex signalX1=reshape(bitdata,4,length(bitdata)/4);d=1;%min distance of symble for i=1:length(bitdata)/4; for j=1:4 X1(i,j)=X1(i,j)*(2(4-j); source(i,1)=1+sum(X1(i,:);%convert to the number 1 to 16mapping=-3*d 3*d; -d 3*d; d 3*d; 3*d 3*d; -3*d d; -d d; d d; 3*d d; -3*d -d; -d -d; d -
8、d; 3*d -d; -3*d -3*d; -d -3*d; d -3*d; 3*d -3*d; for i=1:length(bitdata)/4 qam_data(i,:)=mapping(source(i),:);%data mapping complex_qam_data=complex(qam_data(:,1),qam_data(:,2);%16QAM的解调函数。function demodu_bit_symble=demoduqam16(Rx_serial_complex_symbols)%将得到的串行16QAM数据解调成二进制比特流complex_symbols=reshape
9、(Rx_serial_complex_symbols,length(Rx_serial_complex_symbols),1); complex_mapping=complex(mapping(:,1),mapping(:length(Rx_serial_complex_symbols);16; metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1); min_metric decode_symble(i)= min(metrics) ; %将离某星座点最近的值赋给decode_symble(i) decode_bit_symble=d
10、e2bi(decode_symble-1),left-msb demodu_bit_symble=reshape(decode_bit_symble,1,length(Rx_serial_complex_symbols)*4);%加窗函数function rcosw=rcoswindow(beta, Ts)%定义升余弦窗,其中beta为滚降系数,Ts为包含循环前缀的OFDM符号的长度,Ts为正偶数t=0:(1+beta)*Ts;rcosw=zeros(1,(1+beta)*Ts);beta*Ts;rcosw(i)=0.5+0.5*cos(pi+ t(i)*pi/(beta*Ts);rcosw(beta*Ts+1:Ts)=1;for j=Ts+1:(1+beta)*Ts+1; rcosw(j-1)=0.5+0.5*cos(t(j)-Ts)*pi/(beta*Ts);rcosw=rcosw
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1