通信工程实验报告-西南交通大学 - 图文

更新时间:2024-04-29 00:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

通信工程实验报告

班级: 姓名: 学号:

实验一BDPSK 调制解调器设计

一、实验目的

1. 掌握 BDPSK 的调制和解调原理。

2. 掌握倍频和分频的概念以及分频的实现方法。

3. 用 VerilogHDL 硬件描述语言建模,实现 BDPSK 基带调制解调系统。

二、实验说明

由于在 BPSK 解调中,相干载波恢复时可能出现相位模糊,所以在实际应用中经常采用 BDPSK(二进制差分相移键控)方式。BDPSK 方式不需要在解调端恢复相干参考信号,非相干接收机容易制造而且成本低,因此在无线通信系统中被广泛使用。

1.BDPSK 基带调制系统结构

在 BDPSK 调制系统中,输入的二进制序列先进行差分编码,然后再用 BPSK 调制器调制。一个基带的 BDPSK 调制系统如图 1 所示。

时钟 复位

时钟分频 伪随机序列 发生器 差分 编码 BPSK 调制 调制波形 (采样值)输出

BDPSK 基带调制系统 BDPSK 基带调制系统 图 1

2.差分编码差分编码原理为:

设计一个模二加法器和一个延迟单元,将当前时钟周期的绝对码信号和上一时钟周期经过一个码元延时的相对码信号进行模二加法(异或),得到当前时钟周期的相对码,并反复进行。延迟单元的功能可以用硬件电路中的寄存器来实现,用它作为保存上一次生成的相对码的容器,然后在下个时序到来时与当前的绝对码进行模二加得到输出。

绝对码

(伪随机序列 )

相对码 (差分码)

模二加 (异或) 延迟 Ts

图 2 差分编码原理

三、实验结果

1. 调制系统中各子模块的 VerilogHDL 代码及注释。

差分编码:

module Chafen(dataPN, clk1, reset_n, dataCF); input clk1; input dataPN; input reset_n; output dataCF; reg c;

always @( posedge clk1 or negedge reset_n ) begin

if(!reset_n) begin

c <= 1'b0; end else begin

c <= c^dataPN; end end

assign dataCF = c; endmodule 时钟分频器: module div( clk, reset_n, clk1 );

input clk; input reset_n; output clk1; reg [5 : 0] c; reg out;

always@(posedge clk or negedge reset_n) begin

if(!reset_n) begin out <= 0;

c = 6'b000000; end else begin

out <= c[5]; c <= c + 1; end end

assign clk1 = out; endmodule

伪随机序列发生器: module PN_Seq( clk1, reset_n, dataPN );

input clk1; input reset_n; output dataPN; reg [ 7 : 1 ] c;

always @( posedge clk1 or negedge reset_n ) begin

/* Your Design */ if(!reset_n) begin

c <=7'b0001111; end else

begin //7级M序列编码

c[1] <= c[2]^c[3]^c[4]^c[7]; c[7] <= c[6]; c[6] <= c[5]; c[5] <= c[4]; c[4] <= c[3]; c[3] <= c[2]; c[2] <= c[1]; end end

assign dataPN = c[7];

endmodule

2. 调制系统顶层模块的 VerilogHDL 代码及注释。 module BPSK( clk, reset_n, clk_DA, blank_DA_n, sync_DA_n, dataout

);

input clk ; input reset_n ; output clk_DA ; output blank_DA_n; output sync_DA_n ; output [ 7 : 0 ] dataout ; wire [ 4 : 0 ] address ; Controller CONTROLLER ( .clk ( clk ), .reset_n ( reset_n ),

.dataCF ( dataCF ), .address ( address ), .clk_DA ( clk_DA ), .blank_DA_n( blank_DA_n ), .sync_DA_n ( sync_DA_n ) );

LookUpTable LOOKUPTABLE ( .clk ( clk ), .reset_n ( reset_n ), .address ( address ),

.dataout ( dataout ) );

Chafen CHAFEN(

.dataPN ( dataPN ), .clk1 ( clk1 ), .reset_n ( reset_n ), .dataCF ( dataCF ) );

PN_Seq PN_SEQ(

.clk1 ( clk1 ), .reset_n ( reset_n ), .dataPN ( dataPN )

);

div DIV(

.clk ( clk ), .reset_n ( reset_n ), .clk1 ( clk1 )

); Endmodule

3.功能仿真和时序仿真结果的波形,至少要同时显示出伪随机序列、差分编码结果和 BDPSK 调制信号。

功能仿真:

时序仿真:

实验二CDMA调制与解调

一、 实验目的:

1、 了解 CDMA 的原理和调制解调过程。

2、 用 MATLAB 进行 CDMA 的调制解调过程的仿真。

二、实验原理:

扩频通信用伪随机编码把基带信号的频谱进行扩展,形成相当宽带的低功率谱密度的信号发射,接收端使用相关处理方式,也要把接受的宽带扩频信号恢复成基带信号。图 1 为典型扩频通信的基本原理图。

图 1 典型扩频通信的基本原理图

三、报告要求

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

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

四、实验结果

1.

shiyan2.m clear all; close all;

C2=1;C1=0;C0=1; %m序列初值 N=10^4;

MN=7*N; %重复MN遍的7位单极性m序列 EbNo=-20:5; %信噪比 L(MN)=0; M(MN)=0;

reds_sample(1:MN)=0; reds_judge(1:N)=0; err(length(EbNo))=0; message_ds(1:MN)=0; ds(1:MN)=0; for i=1:MN

TC0=C0; TC1=C1; TC2=C2; C0=C1; C1=C2; C2=xor(TC0,TC1); L(i)=TC0; end

for i=1:MN

M(i)=1-2*L(i); %将单极性m序列变为双极性m序列 end

M_ds=rectpulse(M,1000); %双极性m序列的扩频序列 message=rand(1,N)>0.5; %产生二进制随机数

for i=1:N k=7*i-6;

message_ds(k)=message(i);k=k+1; message_ds(k)=message(i);k=k+1; message_ds(k)=message(i);k=k+1; message_ds(k)=message(i);k=k+1; message_ds(k)=message(i);k=k+1; message_ds(k)=message(i);k=k+1; message_ds(k)=message(i); end

for i=1:MN

ds(i)=xor(L(i),message_ds(i)); end

fs=2000;

ts=0:0.00001:MN/100-0.00001; %为了使信号看起来更光滑,作图时采样频率为100kHz ds_b=rectpulse(ds,1000); %将冲激信号补成矩形信号? ds_bpsk=(1-2.*ds_b).*cos(2*pi*fs*ts); [b,a]=tf(lpf);%得到传递函数,b=Num;a=1; for k=1:length(EbNo)

ds_bpsk_awgn = awgn(ds_bpsk,EbNo(k),'measured'); ds_re=ds_bpsk_awgn.*cos(2*pi*fs*ts); ds_lpf=filter(b,a,ds_re);

%解扩

reds=M_ds.*ds_lpf(1:1000*MN);

%抽样 for i=1:MN

j=1000*i-500;

reds_sample(i)=reds(j); end

%判决 for i=1:MN

if (reds_sample(i)>0.2) reds_sample(i)=1;

elseif (reds_sample(i)<-0.2) reds_sample(i)=-1; else reds_sample(i)=0; end end

for i=1:N j=7*i-6;

if (reds_sample(j)==0)

reds_sample(j)=reds_sample(j+4); end end

for i=1:MN-2

if (reds_sample(i)==0)

reds_sample(i)=reds_sample(i+2); end end

for i=1:N

reds_judge(i)=reds_sample(i*7-3); if (reds_judge(i)==0)

reds_judge(i)=reds_judge(i)+1; end

reds_judge(i)=(1-reds_judge(i))/2; end

err(k)=length(find((reds_judge-message)~=0)); %计算误码个数 end

err=err./N; figure(1)

plot(EbNo,err);xlabel('EbNo/dB');ylabel('误码率');title('BPSK调制的CDMA误码率')

lpf.m

function Hd = lpf

%LPF Returns a discrete-time filter object.

% MATLAB Code

% Generated by MATLAB(R) 9.0 and the DSP System Toolbox 9.2. % Generated on: 26-Oct-2016 22:33:44

% FIR Window Lowpass filter designed using the FIR1 function.

% All frequency values are in Hz.

Fs = 2000; % Sampling Frequency

N = 30; % Order

Fc = 10; % Cutoff Frequency flag = 'scale'; % Sampling Flag

Beta = 0.5; % Window Parameter

% Create the window vector for the design algorithm. win = kaiser(N+1, Beta);

% Calculate the coefficients using the FIR1 function. b = fir1(N, Fc/(Fs/2), 'low', win, flag); Hd = dfilt.dffir(b);

% [EOF]

2.仿真结果

MATLAB实验 基于导频的信道估计仿真分析1

一、实验目的

1、 了解信道估计的作用、在无线通信中的地位以及基本原理; 2、 掌握LS信道估计的原理;

3、 用MATLAB对基于导频的信道估计进行仿真,在瑞利平坦信道下分析其MSE性能。

二、实验原理: 如图为纯导频信道估计实验流程框图。

图1 纯导频信道估计实验流程框图

二、报告要求

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

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

三、实验结果

1.

shiyan3.m

clear all;close all; NUM=10^5;

EbNo=0:30; %信噪比

datastream(1:NUM)=1; %全1数据 MSE(1:length(EbNo))=0;

%h瑞利分布

hb=unifrnd (0,2*pi,1,NUM); ha=raylrnd(1,1,NUM); h=ha.*exp(1i.*hb);

data_r=datastream.*h; %通过瑞利信道

for k=1:length(EbNo)

data_ra = awgn(data_r,EbNo(k),'measured'); %加高斯白噪声 h_est=data_ra./datastream; %计算MSE

for i=1:NUM

MSE(k)=MSE(k)+(abs(h(i)-h_est(i)))^2; end

MSE(k)=MSE(k)/NUM; end

plot(EbNo,MSE);xlabel('EbNo/dB');ylabel('MSE');title('基于导频信道的SNR与MSE的关系曲线')

2.仿真结果

实验四基于导频的信道估计仿真分析2

一、实验目的

1、 了解数据与导频同时发送时如何进行信道估计。

2、 用MATLAB对基于导频的信道估计进行仿真,在瑞利平坦信道下分析其MSE性能。

二、实验原理

图为导频与数据同时发送时进行信道估计的实验流程框图。

具体内容及信道估计准则请见前一实验。 帧结构:

红色部分为导频符号,有 m 个导频,用以估计系统信道响应;蓝色部分为数据部分,有 n 个数据,通过导频处的信道响应推出数据位置的信道响应,完成均衡处理,解调数据位信号,提升系统性能。

三、报告要求

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

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

三、实验结果

1.

shiyan4.m

clear all;close all; Nbit=2*10^4; %帧数

N=2*7*Nbit; %二进制比特流个数

M=3*Nbit; %导频个数 EbNo=0:35; %信噪比 err(length(EbNo))=0; %误码率

MSE(length(EbNo))=0; %信道估计MSE message = rand(1,N)>0.5; %二进制比特流 pf(1:M) = 1+i; %导频信号

%生成二进制比特流并qpsk调制

qpsk_IQ = [-1 1];

qpsk_I = qpsk_IQ(message(1:2:end)+1); qpsk_Q = qpsk_IQ(message(2:2:end)+1); qpsk=(qpsk_I+1j.*qpsk_Q);

MN=M+length(qpsk); frame(1:MN)=0; %帧信号 %组帧

k=1; j=1;

for i=1:length(qpsk) frame(j)=qpsk(i); j=j+1;

if( mod(i,7)==0 )

frame(j)=pf(k);j=j+1;k=k+1; frame(j)=pf(k);j=j+1;k=k+1; frame(j)=pf(k);j=j+1;k=k+1; end end

frame_rayl(1:length(frame))=0; %通过瑞利信道后的帧信号

%产生瑞利分布

hb=unifrnd (0,2*pi,1,Nbit); ha=raylrnd(1,1,Nbit); h=ha.*exp(1i.*hb);

%帧通过瑞利信道

j=1;

for i=1:length(h) for k=1:10

frame_rayl(j)=h(i)*frame(j);j=j+1; end end

pf_awgn(1:M)=0; %加高斯白噪声导频信号部分

qpsk_awgn(1:length(qpsk))=0; %加高斯白噪声qpsk信号部分 h_est(1:Nbit)=0; %根据导频信号计算出的信道估计

qpsk_est(1:length(qpsk))=0; %根据计算出的信道估计得到接收到的qpsk信号

%计算误码率与信道估计的MSE for kk=1:length(EbNo)

frame_awgn = awgn(frame_rayl,EbNo(kk),'measured'); %加高斯白噪声 %分离组帧中的数据信号与导频信号

jj=1;ii=1;

for j=1:length(frame_awgn)

if( mod(j,10)==0 || mod(j,10)==8 ||mod(j,10)==9 ) pf_awgn(jj)=frame_awgn(j);jj=jj+1; else

qpsk_awgn(ii)=frame_awgn(j);ii=ii+1; end end

%根据导频信号计算信道估计

h_awgn=pf_awgn./pf; for jjj=1:length(h_est)

h_est(jjj)=(h_awgn(jjj*3-2)+h_awgn(jjj*3-1)+h_awgn(jjj*3))/3; end k=1;

%根据计算出的信道估计,计算接收到的qpsk信号

for iii=1:length(qpsk_est)

qpsk_est(iii)=qpsk_awgn(iii)/h_est(k); if( mod(iii,7)==0 ) k=k+1; end end

%qpsk解调

qpsk_est_re=real(qpsk_est); qpsk_est_im=imag(qpsk_est); qpsk_IQD = [0 1];

qpsk_est_re(find(qpsk_est_re>1)) = 1; qpsk_est_re(find(qpsk_est_re<-1)) = -1; qpsk_est_im(find(qpsk_est_im>1)) = 1; qpsk_est_im(find(qpsk_est_im<-1)) = -1; qpsk_de=[zeros(1,N)];

qpsk_de(1:2:end) = qpsk_IQD(round((qpsk_est_re+1)/2) + 1); qpsk_de(2:2:end) = qpsk_IQD(round((qpsk_est_im+1)/2) + 1);

%计算误码率

err(kk)=length(find((qpsk_de-message)~=0)); err(kk)=err(kk)./N;

%计算信道估计的MSE

for imse=1:length(h)

MSE(kk)=MSE(kk)+(abs(h(imse)-h_est(imse)))^2; end

MSE(kk)=MSE(kk)/length(h); end

plot(EbNo,err);xlabel('EbNo/dB');ylabel('误码率'); figure(2)

plot(EbNo,MSE);xlabel('EbNo/dB');ylabel('MSE');

2.仿真结果

MSE曲线

BER曲线

实验五FPGA 实验 HDB3 编码器设计

一、实验目的

⒈ 深入理解 HDB3 编码原理。

⒉ 学习用 VerilogHDL 硬件描述语言建模较复杂时序逻辑电路。 ⒊ 学习 FPGA 设计中的 Testbench(测试平台)技术。 ⒋ 掌握 FPGA 设计中仿真与综合的概念。 ⒌ 学习编写仿真测试代码与可综合代码。

二、报告要求

⒈ 输入信号为全 全 0 码时,以下各时序仿真结果:(ModelSim 中截图)

⑴ 加 V 后; ⑵ 补 B 后;

⑶ 最终得到的 HDB3 码。

2. 改写 HDB3 编码器的测试文件代码,使测试文件能 连续产生伪随机序列,将改写后的 测试文件代码写在实验报告中。(可以参考教师提供的 VerilogHDL 教程中的第 10 章 10.3.8 部分的内容)

3. 思考:测试文件代码和编码器模块代码都是用 VerilogHDL 语言编写的,这两种代码在 语法上有什么区别?分别举一个例子进行比较。

三、实验结果

1.

data_v:加V信号 data_b:加B信号 dataout:最终信号 2. 测试文件

timescale 1ns/100ps

module HDB3_encoder_test; reg clk; reg reset_n; reg datain;

wire [2:0] dataout;

HDB3_encoder DESIGN (

.clk (clk),

.reset_n (reset_n), .datain (datain), .dataout (dataout) ); initial begin

clk=1'b0; end

always begin

#5 clk=~clk; end initial begin

#0 reset_n=1'b0; #20 reset_n=1'b1; end

datain=$dist_uniform(12,start,end); endmodule 3.

不允许在可综合的设计代码中使用`Define来定义参数,应该使用参数Parameter来定义。例如`Define只用于编写不可综合的仿真测试模块。

实验六宽带接入实验 非拨号方式上网

一、实验目的

⒈ 了解非拨号方式上网的基本原理和组网结构。 ⒉ 学习在 MA5300 上配置非拨号方式上网的方法。 ⒊ 在终端计算机上以非拨号方式连通外网。

二、报告要求

⒈ 参考图 1,简述非拨号方式上网的原理。

⒉ 简述实验成功后观测到的现象,并拍照粘贴到实验报告中。

三、实验结果

1.

配置路由器数据->在MA5300上建立业务VLAN->把ADSL端口划入业务VLAN->配置以太网端口参数->配置ADSL端口参数->把两台PC设在同一个IP网段里 ->把PC接在ADS端口上->PC自动获取IP。 2.

建立连接:

断开连接:

实验七光传输实验 链形传输组网

一、实验目的

⒈ 学习链形组网的连接方式。

⒉ 学习链形组网的电话业务和数据业务的配置方法。

二、报告要求

⒈ 参考图 2,画出 3 台交换机业务连接图,并标注你所选用的时隙。 ⒉ 简要描述最后的验证方法,以及误码仪上的现象。

三、实验结果

1.

交换机业务连接图

2.

用误码仪分别正向与反向测交换机1与交换机2,交换机2与交换机3的相应时隙,测出来的当前误码率都是0,无误码秒都在增加,说明三台交换机之间可以互相通信。

实验八光传输实验 环形传输组网

一、实验目的

⒈ 学习环形组网的交换机连接方式。

⒉ 学习环形组网的电话业务和数据业务的配置方法。

二、报告要求

⒈ 参考图 2,画出 3 台交换机的业务连接图,并标注所选用的时隙。 ⒉ 简要描述最后的验证方法,以及误码仪上的现象

三、实验结果

1.

交换机业务连接图

2.

用误码仪正向测交换机1与交换机2,交换机2与交换机3的相应时隙,测出来的当前误码率都是0,无误码秒都在增加,说明三台交换机之间可以互相通信。

用误码仪反向测交换机1与交换机2,交换机2与交换机3的相应时隙,测出来的当前误码率都是不为零,无误码秒不增加,说明三台交换机之间只能单向循环传输。

本文来源:https://www.bwwdw.com/article/q10g.html

Top