通信工程实验报告.docx

上传人:b****5 文档编号:6819571 上传时间:2023-01-10 格式:DOCX 页数:40 大小:497.23KB
下载 相关 举报
通信工程实验报告.docx_第1页
第1页 / 共40页
通信工程实验报告.docx_第2页
第2页 / 共40页
通信工程实验报告.docx_第3页
第3页 / 共40页
通信工程实验报告.docx_第4页
第4页 / 共40页
通信工程实验报告.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

通信工程实验报告.docx

《通信工程实验报告.docx》由会员分享,可在线阅读,更多相关《通信工程实验报告.docx(40页珍藏版)》请在冰豆网上搜索。

通信工程实验报告.docx

通信工程实验报告

 

班级:

通信2012-04班

学号:

20122211

姓名:

刘涛

 

实验一:

FPGA实验_BDPSK调制解调器设计

一、实验目的

⒈学习BDPSK原理的硬件实现方法。

⒉学习用VerilogHDL硬件描述语言建模时序逻辑电路的能力。

2、实验报告要求

由于在BPSK解调中,相干载波恢复可能出现相位模糊,所以在实际应用中经常采用BDPSK(二进制差分相移键控)方式。

BDPSK方式不需要在解调端恢复相干参考信号,非相干接收机容易制造而且成本低,因此在无线通信系统中被广泛使用。

在BDPSK系统中,输入的二进制序列先进行差分编码,然后再用BPSK调制器调制。

⒈BDPSK调制系统的结构图。

(MicrosoftVisio中截图)

⒉BDPSK调制器模块的VerilogHDL代码及注释。

⒊功能仿真和时序仿真结果的波形。

(ModelSim中截图)

⒋(选做)开发板验证后的波形。

(示波器上拍照)

三、实验结果

1、调制器和解调器的外引脚图和内部结构图

 

图1.1调制器的外部引脚

 

图1.2调制器的内部结构

图1.3解调器的外部引脚

 

图1.4解调器的内部结构

 

2、调制器模块和解调器模块的VerilogHDL代码及注释

(1)差分编码

modulechafen(reset_n,clk,a,b);

inputreset_n;

inputclk;

inputa;

outputb;

regc;

assignb=a^c;

always@(posedgeclkornegedgereset_n)

if(!

reset_n)

c<=0;

else

begin

c<=b;

end

Endmodule

(2)控制器

moduleController(

clk,

reset_n,

data,

address,

clk_DA,

blank_DA_n,

sync_DA_n

);

inputclk;

inputreset_n;

inputdata;

output[4:

0]address;

outputclk_DA;//数模转换器控制信号

outputblank_DA_n;//数模转换器控制信号

outputsync_DA_n;//数模转换器控制信号

reg[4:

0]address_data;

regc;

always@(posedgeclkornegedgereset_n)

begin

if(!

reset_n)

c<=1'bz;

else

c<=data;

end

always@(posedgeclkornegedgereset_n)

begin

if(!

reset_n)

address_data<=5'b00000;

elseif(c==data)

address_data<=address_data+5'b00001;

else

begin

case(data)

1'b0:

address_data<=5'b00000;

1'b1:

address_data<=5'b10000;

default:

address_data<=5'bzzzzz;

endcase

end

end

assignaddress=address_data;

assignclk_DA=clk;

assignblank_DA_n=1'b1;

assignsync_DA_n=1'b1;

Endmodule

(3)查找表

moduleLookUpTable(

clk,

reset_n,

address,

dataout,

);

inputclk;

inputreset_n;

input[4:

0]address;

output[7:

0]dataout;

reg[7:

0]LUT[0:

31];

always@(posedgeclkornegedgereset_n)

begin

if(!

reset_n)

begin

//用C编程计算出的查找表采样值填在这里

LUT[0]<=8'h7f;//0°

LUT[1]<=8'h97;

LUT[2]<=8'haf;

LUT[3]<=8'hc5;

LUT[4]<=8'hd9;

LUT[5]<=8'he8;

LUT[6]<=8'hf4;

LUT[7]<=8'hfc;

LUT[8]<=8'hfe;

LUT[9]<=8'hfc;

LUT[10]<=8'hf5;

LUT[11]<=8'hea;

LUT[12]<=8'hda;

LUT[13]<=8'hc7;

LUT[14]<=8'hb2;

LUT[15]<=8'h9a;

LUT[16]<=8'h81;//180°

LUT[17]<=8'h69;

LUT[18]<=8'h51;

LUT[19]<=8'h3b;

LUT[20]<=8'h27;

LUT[21]<=8'h17;

LUT[22]<=8'hb;

LUT[23]<=8'h3;

LUT[24]<=8'h0;

LUT[25]<=8'h1;

LUT[26]<=8'h8;

LUT[27]<=8'h13;

LUT[28]<=8'h22;

LUT[29]<=8'h35;

LUT[30]<=8'h4a;

LUT[31]<=8'h62;

end

end

assigndataout=LUT[address];

endmodule

 

⒊功能仿真和时序仿真结果的波形

 

图1.5功能仿真

 

图1.6时序仿真

实验二MATLAB实验_OFDM误码率仿真(AWGN)

一、实验目的:

1、掌握OFDM的基本原理。

2、掌握用Matlab搭建OFDM系统的基本方法

3、用MATLAB进行OFDM系统在AWGN信道下误码率分析。

二、实验内容

(1)发送部分

①对产生的0、1比特流进行16QAM调制,映射到星座图上,即将数据变为复平面内的数据;

②将变换后的数据进行串并转换进行IFFT变换后在进行并串转换。

为了避免多径造传播成的ISI干扰,要对每一个OFDM符号加循环前缀(CP)。

为了避免码间干扰,CP中的信号与对应OFDM符号尾部宽度为Tg的部分相同,Tg为人为设定。

本实验中为OFDM符号长度的1/4。

③加保护间隔。

为了最大限度的消除码间干扰,该保护间隔一般大于多径信道的最大时延,这样一个符号的多径干扰就不会对下一个符号造成干扰。

将产生的OFDM符号组成一个

串行序列,即组帧。

(2)信道部分:

AWGN信道

(3)接收部分:

①解帧,将接收的序列分解为一个个独立的OFDM符号。

②去掉保护间隔,将加在每个符号前的保护间隔去掉。

③将去掉保护间隔的OFDM符号进行串并转换,为下一步快速傅里叶变换做准备。

④将并行的信号进行快速傅里叶变换得到对应的时域信号。

⑤进行并串转换,再进行QAM解调,解调之前要进行均衡处理。

解调之后得到之前生成的0、1比特流。

设计仿真方案,得到在数据传输过程中不同信噪比的BER性能结论,要求得到的BER

曲线较为平滑。

四、实验报告要求

所有程序完整的源代码(.m文件)以及注释。

仿真结果。

对于所有的图形结果(包括波形与仿真曲线等),将图形保存成.tif或者.emf的格式并插入word文档。

三、实验结果

1、所有程序完整的源代码(.m文件)以及注释

clearall;

closeall;

fprintf('OFDM基带系统\n\n');

%%%%%%%%%%%%%%%%%%%%%%%%参数设置%%%%%%%%%%%%%%%%%%%%%%%

carrier_count=256;%FFT数目

number_symbol=1500;%OFDM符号数目()

Guard_count=carrier_count/4;%循环前缀

Pilot_interval=15;%导频间隔

Pilot_count=ceil(number_symbol/Pilot_interval);%每一行导频的个数

modulation_mode=16;%16QAM

SNR=-2:

35;

k=log2(modulation_mode);

%%%%%%%%%%%%%%%%%%%%%%%%主程序循环%%%%%%%%%%%%%%%%%%%%%%%

fornumber_snr=1:

length(SNR)

fprintf('\n\n\n仿真信噪比',SNR(number_snr));

%%%%%%%%%%%%%%%%%%%%产生发送的随机序列%%%%%%%%%%%%%%%%%%%%

Source_Bits=randi([01],1,k*(carrier_count*number_symbol));

%%%%%%%%%%%%%%%%%%%%%%%%16QAM调制%%%%%%%%%%%%%%%%%%%%%%%%

QAM_16_IQ=[-3-131];

QAM_input_I=QAM_16_IQ(Source_Bits(1:

4:

end)*2+Source_Bits(2:

4:

end)+1);%00:

-301:

-111:

110:

3

QAM_input_Q=QAM_16_IQ(Source_Bits(3:

4:

end)*2+Source_Bits(4:

4:

end)+1);%00:

-301:

-111:

110:

3

Modulated_Sequence_Tx1=QAM_input_I+1i*QAM_input_Q;

%%%%%%%%%%%%%%%%%%%%%串并变换%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Modulated_Sequence_Tx=reshape(Modulated_Sequence_Tx1,carrier_count,number_symbol);

%%%%%%%%%%%%%%%%%%%%%产生已知的导频序列%%%%%%%%%%%%%%%%%%%

Pilot_symbols=(round(rand(carrier_count,Pilot_count))*2-1);

%%%%%%%%%%%%%%%%%%%%%%%%导频符号的插入%%%%%%%%%%%%%%%%%%%%%%%

forkk=1:

Pilot_count

Modulated_Sequence_Tx_insert(:

(kk-1)*(Pilot_interval+1)+1)=Pilot_symbols(:

kk);

Modulated_Sequence_Tx_insert(:

(kk-1)*(Pilot_interval+1)+2:

(kk-1)*(Pilot_interval+1)+16)=Modulated_Sequence_Tx(:

(kk-1)*Pilot_interval+1:

(kk-1)*Pilot_interval+15);

end

%%%%%%%%%%%%%%%%%%%%%%%%IFFT变换%%%%%%%%%%%%%%%%%%%%%%%%%%

Time_signal_Tx1=ifft(Modulated_Sequence_Tx_insert);

%%%%%%%%%%%%%%%%%%%%%%%%加循环前缀%%%%%%%%%%%%%%%%%%%%%%%

Time_signal_Tx_cp1(1:

Guard_count,:

)=Time_signal_Tx1(carrier_count-Guard_count+1:

carrier_count,:

);

Time_signal_Tx_cp1(Guard_count+1:

Guard_count+carrier_count,:

)=Time_signal_Tx1(1:

carrier_count,:

);

%%%%%%%%%%%%%%%%%%%%%并串变换%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Time_signal_Tx_cp=reshape(Time_signal_Tx_cp1,1,(Guard_count+carrier_count)*(number_symbol+Pilot_count));

%%%%%%%%%%%%%%%%%%%%%%%%高斯信道和瑞利信道%%%%%%%%%%%%%%%%%%%%%%%

Time_signal_Tx_cp_channel1=awgn(Time_signal_Tx_cp,SNR(number_snr),'measured');

%%%%%%%%%%%%%%%%%%%%%串并变换%%%%%%%%%%%%%%%%%%%

Time_signal_Tx_cp_channel=reshape(Time_signal_Tx_cp_channel1,carrier_count+Guard_count,number_symbol+Pilot_count);

%%%%%%%%%%%%%%%%%%%%%%%%信号接收去循环前缀%%%%%%%%%%%%%%%%%%%%%%%

Time_signal_Rx_channel(1:

carrier_count,:

)=Time_signal_Tx_cp_channel(Guard_count+1:

carrier_count+Guard_count,:

);

%%%%%%%%%%%%%%%%%%%%%%%%FFT变换%%%%%%%%%%%%%%%%%%%%%%%

frequence_signal_Rx_channel1=fft(Time_signal_Rx_channel);

%%%%%%%%%%%%%%%%%%%%%%%%获取导频符号处的序列信道估计%%%%%%%%%%%%%%%%%%%%%%%

forkk=1:

Pilot_count

Pilot_symbols_channel(:

kk)=frequence_signal_Rx_channel1(:

(kk-1)*(Pilot_interval+1)+1);

frequence_signal_Rx_channel(:

(kk-1)*Pilot_interval+1:

(kk-1)*Pilot_interval+15)=frequence_signal_Rx_channel1(:

(kk-1)*(Pilot_interval+1)+2:

(kk-1)*(Pilot_interval+1)+16);

end

%%%%%%%%%%%%%%%%%%%%%并串变换%%%%%%%%%%%%%%%%%%%

frequence_signal_Rx_channel_desert=reshape(frequence_signal_Rx_channel,1,(carrier_count)*number_symbol);

%%%%%%%%%%%%%%%%%%%%%%%%16QAM解调%%%%%%%%%%%%%%%%%%%%%%%

QAM_input_I=real(frequence_signal_Rx_channel_desert);

QAM_input_Q=imag(frequence_signal_Rx_channel_desert);

fora=1:

(carrier_count*number_symbol)

ifQAM_input_I(a)<=-2

receive_Bits(a*k-3)=0;%,a*k-1,a*k

receive_Bits(a*k-2)=0;

elseif(QAM_input_I(a)>-2)&&(QAM_input_I(a)<=0)

receive_Bits(a*k-3)=0;

receive_Bits(a*k-2)=1;

elseif(QAM_input_I(a)>0)&&(QAM_input_I(a)<=2)

receive_Bits(a*k-3)=1;

receive_Bits(a*k-2)=1;

elsereceive_Bits(a*k-3)=1;

receive_Bits(a*k-2)=0;

end

end

fora=1:

(carrier_count*number_symbol)

ifQAM_input_Q(a)<=-2%&QAM_input_Q(a)<=-2

receive_Bits(a*k-1)=0;%,a*k-1,a*k

receive_Bits(a*k)=0;

elseif(QAM_input_Q(a)>-2)&&(QAM_input_Q(a)<=0)

receive_Bits(a*k-1)=0;

receive_Bits(a*k)=1;

elseif(QAM_input_Q(a)>0)&&(QAM_input_Q(a)<=2)

receive_Bits(a*k-1)=1;

receive_Bits(a*k)=1;

elsereceive_Bits(a*k-1)=1;

receive_Bits(a*k)=0;

end

end

%%%%%%%%%%%%%%%%%%%%%%%%误码率计算%%%%%%%%%%%%%%%%%%%%%%%

[Num,Rat]=biterr(Source_Bits,receive_Bits);

biterr_total(number_snr)=Rat;

fprintf('\n\n误码率为%f\n\n',biterr_total(number_snr));

end

%%%%%%%%%%%%%%%%%%%%%%%%画图%%%%%%%%%%%%%%%%%%%%%%%

figure

semilogy(SNR,biterr_total,'bp-','LineWidth',2);

axis([-23510^-50.9])

xlabel('SNR');

ylabel('BER');

title('OFDM基带系统(高斯信道)');

2、仿真结果

图2.1仿真结果

 

实验三、MATLAB实验_OFDM误码率仿真(衰落)

一、实验目的:

1、了解瑞利信道产生的原因及其特征。

2、用MATLAB进行OFDM系统在瑞利信道下误码率分析。

二、实验报告要求

1.所有程序完整的源代码(.m文件)以及注释。

2.仿真结果。

对于所有的图形结果(包括波形与仿真曲线等),将图形保存成.tif或者.emf

的格式并插入word文档。

三、实验结果

1、所有程序完整的源代码(.m文件)以及注释

clearall;

closeall;

fprintf('OFDM基带系统\n\n');

%%%%%%%%%%%%%%%%%%%%%%%%参数设置%%%%%%%%%%%%%%%%%%%%%%%

carrier_count=256;%FFT数目

number_symbol=1500;%OFDM符号数目()

Guard_count=carrier_count/4;%循环前缀

Pilot_interval=15;%导频间隔

Pilot_count=ceil(number_symbol/Pilot_interval);%每一行导频的个数

modulation_mode=16;%16QAM

SNR=-2:

35;

k=log2(modulation_mode);

%%%%%%%%%%%%%%%%%%%%%%%%主程序循环%%%%%%%%%%%%%%%%%%%%%%%

fornumber_snr=1:

length(SNR)

fprintf('\n\n\n仿真信噪比',SNR(number_snr));

%%%%%%%%%%%%%%%%%%%%产生发送的随机序列%%%%%%%%%%%%%%%%%%%%

Source_Bits=randi([01],1,k*(carrier_count*number_symbol));

%%%%%%%%%%%%%%%%%%%%%%%%16QAM调制%%%%%%%%%%%%%%%%%%%%%%%%

QAM_16_IQ=[-3-131];

QAM_input_I=QAM_16_IQ(Source_Bits(1:

4:

end)*2+Source_Bits(2:

4:

end)+1);%00:

-301:

-111:

110:

3

QAM_input_Q=QAM_16_IQ(Source_Bits(3:

4:

end)*2+Source_Bits(4:

4:

end)+1);%00:

-301:

-111:

110:

3

Modulated_Sequence_Tx1=QAM_input_I+1i*QAM_input_Q;

%%%%%%%%%%%%%%%%%%%%%串并变换%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Modulated_Sequence_Tx=reshape(Modulated_Sequence_Tx1,carrier_count,number_symbol);

%%%%%%%%%%%%%%%%%%%%%产生已知的导频序列%%%%%%%%%%%%%%%%%%%

Pilot_symbols=(round(rand(carrier_count,Pilot_count))*2-1);

%%%%%%%%%%%%%%%%%%%%%%%%导频符号的插入%%%%%%%%%%%%%%%%%%%%%%%

forkk=1:

Pilot_countModulated_Sequence_Tx_insert(:

(kk-1)*(Pilot_interval+1)+1)=Pilot_symbols(:

kk);Modulated_Sequence_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1