当前位置:文档之家› 实验三 数字基带传输系统

实验三 数字基带传输系统

实验三数字基带传输系统一、设计目的1.利用MATLAB画出数字基带信号的波形图。

2.利用MATLAB画眼图。

3.利用MATLAB分析无码间干扰基带系统的抗噪性能。

4.掌握无码间干扰系统的频谱特性。

二、设计原理1.数字基带信号数字基带信号就是消息代码的电波形,它是用不同的电平或脉冲来表示相应的消息代码。

数字基带信号的波形和码型很多,最常用的由矩形脉冲组成的基带信号有:单极性归零及不归零波形,双极性归零及不归零波形,差分波形和多电平波形等。

2.无码间干扰系统满足无码间干扰时、频域条件的基带系统有3类,分别是理想LPF系统、滚降系统和部分响应系统。

前两个系统的理论基础是奈奎斯特第一准则,第三个系统的理论基础是奈奎斯特第二准则。

理想LPF系统可达到理论最大频带利用率,但是难以实现,且对位定时精度要求高。

滚降系统可实现,且对位定时精度要求降低,但频带利用率降低。

部分响应系统兼具了前两个系统的优点,即频带利用率高和低位定时精度,但其可靠性降低。

3.基带信号的眼图眼图是指利用实验的方法估计和改善基带系统性能时,在示波器上所观察到的像人的眼睛一样的图形。

①MATLAB函数在MATLAB中,eyediagram函数用来绘制眼图,其调用格式如下:eyediagram(x,n,period,offset,plotstring)其中x是信号;n是每个轨迹包括的采样点数;period是指水平轴的坐标范围,即[-period/2,period/2];offset是偏置因子,信号的第(offset+1)个采样点之后每n个值为一周期,且该周期为period的整数倍,offset必须是非负整数,其范围是[0,n-1];plotstring 是绘制眼图时采用的符号、线形和颜色,其格式与plot函数相同,如不设置,采用系统缺省值。

②Simulink模块在Simulink模块库中,显示眼图的模块为“Discrete-Time Eye Diagram Scope”,图形及参数设置界面如图3.3所示。

图3.3 眼图模块及其参数设置4.无码间干扰基带系统的抗噪性能在0、1等概的条件下,双极性信号和单极性信号的误码率计算公式分别如下:12e P erfc =双12e P erfc =单 可以看出,在相同条件下,双极性误码率比单极性低,抗噪性能好。

三、设计内容1.当输入二元信息序列为101001110001时,画出单极性不归零码和双极性不归零码的波形示意图,当占空比分别为1/2、1/3时,画出单极性归零码和双极性归零码的波形示意图。

主程序:clear all;t=[1 0 1 0 0 1 1 1 0 0 0 1];srzb(t);子程序:function y=srzb(x)% 本函数实现将输入的一段二进制代码变为相应的单极性不归零码输出% 输入x 为二进制码,输出y 为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/2y(grid/2*(2*i -2)+j)=1; % 定义前半时间值为1y(grid/2*(2*i -1)+j)=1; % 定义后半时间值为1endelsefor j=1:grid/2 % 反之,输入信息为0y((i -1)*grid+j)=0; % 定义所有时间值为0endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('单极性不归零');axis([0,i,m-0.1,M+0.1]);运行结果如图:单极性不归零就是将1编码为高电平。

主程序:clear all;x=[1 0 1 0 0 1 1 1 0 0 0 1];% 本函数实现将输入的一段二进制代码变为相应的双极性不归零码输出% 输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:gridy((i-1)*grid+j)=1;endelsefor j=1:grid % 反之,输入信息为0y((i-1)*grid+j)=-1; % 定义所有时间值为-1endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('双极性不归零')axis([0,i,m-0.1,M+0.1]);如图:双极性不归零就是将1编码成1,0编码成-1。

主程序:clear all;x=[1 0 1 0 0 1 1 1 0 0 0 1];% 本函数实现将输入的一段二进制代码变为相应的单极性归零码输出% 输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/2y(grid/2*(2*i-2)+j)=1; % 定义前半时间值为1y(grid/2*(2*i-1)+j)=0; % 定义后半时间值为0endelsefor j=1:grid/2 % 反之,输入信息为0y((i-1)*grid+j)=0; % 定义所有时间值为0endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('1/2单极性归零')axis([0,i,m-0.1,M+0.1]);程序运行如下:1/2单极性归零就是将1编码成10,将0编码成00。

主程序:clear all;x=[1 0 1 0 0 1 1 1 0 0 0 1];% 本函数实现将输入的一段二进制代码变为相应的单极性归零码输出% 输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/3y(grid/3*(3*i-3)+j)=1; % 定义前1/3时间值为1y(grid/3*(3*i-2)+j)=0;y(grid/3*(3*i-1)+j)=0;% 定义后2/3时间值为0endelsefor j=1:grid/3 % 反之,输入信息为0y((i-1)*grid+j)=0; % 定义所有时间值为0endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('1/3单极性归零')axis([0,i,m-0.1,M+0.1]);程序运行如下:1/3单极性归零就是将1编码成100,将0编码成000。

主程序:clear all;x=[1 0 1 0 0 1 1 1 0 0 0 1];% 本函数实现将输入的一段二进制代码变为相应的单极性归零码输出% 输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/3y(grid/3*(3*i-3)+j)=1; % 定义前半时间值为1 y(grid/3*(3*i-2)+j)=0;y(grid/3*(3*i-1)+j)=0;% 定义后半时间值为0endelsefor j=1:grid/3 % 反之,输入信息为0y(grid/3*(3*i-3)+j)=-1; % 定义前半时间值为-1 y(grid/3*(3*i-2)+j)=0;y(grid/3*(3*i-1)+j)=0;% 定义后半时间值为0endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('1/3双极性归零')axis([0,i,m-0.1,M+0.1]);程序运行如下:1/3双极性归零就是将1编码成100,将0编码成-100。

主程序:clear all;x=[1 0 1 0 0 1 1 1 0 0 0 1];% 本函数实现将输入的一段二进制代码变为相应的单极性归零码输出% 输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/2y(grid/2*(2*i-2)+j)=1; % 定义前半时间值为1y(grid/2*(2*i-1)+j)=0; % 定义后半时间值为0endelsefor j=1:grid/2 % 反之,输入信息为0y((i-1)*grid+j)=-1;endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);title('1/2双极性归零')axis([0,i,m-0.1,M+0.1]);程序运行如下:1/2单极性归零就是将1编码成10,将0编码成-10。

3.当输入的二元信息序列为100110000101时,画出数字双相码的波形示意图。

主程序:clear all;close all;x=[1 0 0 1 1 0 0 0 0 1 0 1];grid=300;t=0:1/grid:length(x); % 定义对应的时间序列for i=1:length(x) % 进行码型变换if(x(i)==1) % 如果输入信息为1for j=1:grid/2y(grid/2*(2*i-2)+j)=1; % 定义前半时间值为1y(grid/2*(2*i-1)+j)=0; % 定义后半时间值为0endelsefor j=1:grid/2y(grid/2*(2*i-2)+j)=0; % 定义前半时间值为0y(grid/2*(2*i-1)+j)=1; % 定义后半时间值为1endendendy=[y,x(i)]; % 给序列y加上最后一位M=max(y);m=min(y);plot(t,y);axis([0,i,m-0.1,M+0.1]);程序运行如下:双相码就是将1编码成10,将0编码成01。

相关主题