【通信原理】实验三 数字基带码型产生实验

一、实验目的

1、掌握数字基带传输码型的特点;
2、掌握常用的数字基带传输码的产生方法;
3、能用matlab编写程序产生一些常用的码型,如RZ、NRZ、AMI、HDB3、双相码等。

二、实验器材

计算机,MATLAB软件

三、实验原理

1、数字基带信号

设消息代码由二进制符号0和1组成
(1)单极性码:基带信号的0电位及正电位分别与二进制符号的0与1对应;
(2)双极性码:二进制符号0、1分别与正、负电位相对应;
(3)单极性归零码:有电脉冲比码元宽度窄,每个脉冲都回到零电位;
(4)双极性归零码:相邻脉冲之间必定留有零电位的间隙。
(5)差分波形:用相邻码元的电平的跳变和不变来表示消息代码,以电平跳变表示“1”,以电平不变表示“0”。
在这里插入图片描述

2、基带传输码的要求

(1)能从其相应的基带信号中获取定时信息;
(2)相应的基带信号无直流成分和只有很少的低频成分;
(3)不受信源统计特性的影响,即能适应于信源的变化;
(4)尽可能地提高传输码型的传输效率;
(5)具有内在的检错能力。

3、基带传输常用码型

(1)AMI码-传号交替反转码
编码规则:“1” 交替变成“+1” 和“-1” ;“0” 仍保持为“0” 。

消息码 1 1 0 0 1 0 1
AMI码 +1 -1 0 0 +1 0 -1

特点:无直流成分,且只有很少的低频成分,编码简单,提取定时信号困难。
(2)HDB3码-三阶高密度双极性码
编码规则:先检查消息代码中的连0情况,当没有4个或4个以上连0时,按AMI码的编码原则;当有时则将每4个连0小段的第4个0变换成与前一个非0符号同极性的符号。但这可能会破“环极性交替反转”的规律。这个符号被称为破环符号,用V表示(即+1记为+V,-1记为-V)。为使附加V符号后原码仍为无直流分量,还必须保证相邻V符号也极性交替。这一点,当相邻V符号之间有奇数个非0符号时,是能保证的;当有偶数个非0符号时,则不能保证,这时再将该小段的第1个0变换成+B或-B,B符号的极性与前一个非0符号极性相反,并让后面的非0符号从V符号开始在交替变化。
在这里插入图片描述
(3)、双相码-曼彻斯特码
编码规则为:每个二进制代码分别用两个具有不同相位的二进制新码去取代的码。0→01;1→10。
在这里插入图片描述

(4) 差分双相码(差分曼彻斯特码):
编码方法:不仅与当前的信息有关,而且与前一个信息也有关,也就是说同一个码元的电平有关,即用中央时刻的电平跳变来表示信息。与绝对双相码的不同的是:对于信息1,则前半时间的电平与前一码元的后半时间电平相同,后半时间与本码元前半时间值相反;对信息0,则前半时间的电平与前一码元的后半时间值相反,后半时间值与本码元前半时间值相反。
(5)CMI码-传号反转码
编码规则:“1”码交替用“11”和“00”表示;“0”码用“01”表示。
在这里插入图片描述

四、实例演示

1、产生一组单极性不归零码和归零码,并绘制出其时域波形(10个);

(1)程序

方法一:

clear all
M=10;            %产生码元数    
Ts=1;     %每个码元的宽度,即码元的持续时间
L=200;    %每码元复制次数
dt=Ts/L;
TotalT=M*Ts;                     %总时间
wave=round(rand(1,M));   %产生单极性不归零码
% 产生单极性不归零波形 
t=0:dt:TotalT-dt;
for i=1:M
    if wave(i)==1
        for j=1:L
            dnrz((i-1)*L+j)=1;
        end
    else
        for j=1:L
            dnrz((i-1)*L+j)=0;
        end
    end
end
subplot(2,1,1)
plot(t,dnrz)
axis([0,TotalT,-0.1,1.1])
%产生单极性归零波形
for i=1:M
    if wave(i)==1
        for j=1:L/2
            drz((2*i-2)*L/2+j)=1;
            drz((2*i-1)*L/2+j)=0;
        end
    else
        for j=1:L
            drz((i-1)*L+j)=0;
        end
    end
end
subplot(2,1,2)
plot(t,drz)
axis([0,TotalT,-0.1,1.1])

在这里插入图片描述

方法二程序如下:

2)单极性不归零码

clear all
M=10;                      	%产生码元数    
L=100;                           %每码元复制L次
Ts=1;           %每个码元的宽度,即码元的持续时间
dt=Ts/L;                        %采样间隔
TotalT=M*Ts;                     %总时间
t=0:dt:TotalT-dt;                     %时间
%产生单极性波形
wave=round(rand(1,M));          %产生二进制随机码,M为码元个数
fz=ones(1,L);               %定义复制的次数L,L为每码元的采样点数
x1=wave(fz,:);   %复制的第1行复制L次
dnrz=reshape(x1,1,L*M);       %重排成1行 ,L*M列数组
subplot(2,1,1)
plot(t, dnrz)
axis([0 TotalT -0.1 1.1])
%产生单极性归零波形
N=M*L;						%总点数
zkb=0.5;                %zkb为占空比
drz=zeros(1,N);
for i=1:zkb*L                           
   drz(i+[0:M-1]*L)=wave; 
end
subplot(2,1,2)
plot(t, drz)
axis([0 TotalT -0.1 1.1])

在这里插入图片描述

2.双极性码型的部分程序

  (1)产生双极性码的函数:
    wave=sign(randn(1,M));
  (2) 产生双极性不归零波形
snrz=dnrz*2-1;          %由单极性不归零波形转换成双极性不归零的波形
   (3)产生双极性归零波形
     srz=zeros(1,N);
    for i=1:zkb*L                           
      srz(i+[0:M-1]*L)=snrz(i+[0:M-1]*L); %由双极性不归零波形转换成双极性归零的波形
end

3.AMI码的时域波形

程序如下:
clear all
M=10;            %产生码元数    
Ts=1;     %每个码元的宽度,即码元的持续时间
L=200;    %每码元复制次数
dt=Ts/L;
TotalT=M*Ts;                     %总时间
t=0:dt:TotalT-dt;
N=M*L;						%总点数
wave=round(rand(1,M));         %产生二进制随机码,M为码元个数
% 产生单极性不归零波形 
fz=ones(1,L);               %定义复制的次数L,L为每码元的采样点数
x1=wave(fz,:);   %复制的第1行复制L次
dnrz=reshape(x1,1,L*M);       %重排成1*L*M数组
subplot(2,1,1)
plot(t, dnrz)
axis([0 TotalT -0.1 1.1])
amiwave=zeros(1,N);
% 产生AMI码波形 
lastcode=1;
for i=0:M-1                            
    if (wave(i+1)==1)               %有跳变
        if (lastcode==1)
            amiwave(i*L+1:i*L+L)=1;
            lastcode=-1;
        else
            amiwave(i*L+1:i*L+L)=-1;
            lastcode=1;
        end
    else
         amiwave(i*L+1:i*L+L)=0;
    end
end

subplot(2,1,2)
plot(t,amiwave)
axis([0,TotalT,-1.1,1.1])

在这里插入图片描述

4. HDB3 码的部分程序

hdb3wave=zeros(1,N);
lastcode=1;                             %上一个1状态
vonevcount=0;                           %相邻V之间连1数目
zerocount=0;                            %连零数目
for i=0:M-1                             %
if (wave(i+1)==1)               %有跳变
   zerocount=0;
        if (lastcode==1)
            hdb3wave(i*L+1:i*L+L)=-1;
            lastcode=-1;
            vonevcount=vonevcount+1;
        else
            hdb3wave(i*L+1:i*L+L)=1;
            lastcode=1;
            vonevcount=vonevcount+1;
        end
    else
        zerocount=zerocount+1;
        if (zerocount==4)
            if (mod(vonevcount,2)==1)           %相邻V之间有奇数个1
                if (lastcode==1)        %插入000+V
                    hdb3wave(i*L+1:i*L+L)=1;
                else                    %插入000-V
                    hdb3wave(i*L+1:i*L+L)=-1;
                end
                vonevcount=0;
            else
                if (lastcode==1)        %插入-B00-V
                    hdb3wave((i-3)*L+1:(i-3)*L+L)=-1;
                    hdb3wave(i*L+1:i*L+L)=-1;
                    lastcode=-1;
                else                    %插入+B00+V
                    hdb3wave((i-3)*L+1:(i-3)*L+L)=+1;
                    hdb3wave(i*L+1:i*L+L)=1;
                    lastcode=1;
                end
                vonevcount=0;
            end
            zerocount=0;
        else
            hdb3wave(i*L+1:i*L+L)=0;
        end
    end
end

五、实验内容

1、产生一组双极性码和双极性不归零码,并绘制出其时域波形;
2、产生一组随机数字序列,并绘制该码对应的HDB3码和双相码的时域波形。

在这里插入图片描述
答疑资料qq群:1007576722

### 数字基带信号码型生成实验方法 #### 实验目的 掌握数字基带传输系统的基本组成和工作原理,熟悉各种常见数字基带信号的形成过程及其特点。 #### 所需设备与材料 - 计算机一台(安装MATLAB或其他仿真软件) - 信号发生器 - 示波器 - 连接线若干 - 编程环境准备完毕 #### 实验内容概述 在数字通信领域内,发送端通常先将原始数据序列转换成适合信道传输的形式—即所谓的“基带信号”。这些信号可以是单极性NRZ (Non Return to Zero),双极性RZ(Return to Zero), AMI(Alternate Mark Inversion)等形式。下面将以AMI为例说明具体操作流程[^1]。 #### 数据源设计 创建一个随机二进制比特流作为待处理的数据源,在此过程中可以通过编程语言中的rand函数来模拟实际应用场景下的消息传递情况: ```matlab % MATLAB Code Snippet for Generating Random Binary Sequence bitStream = randi([0, 1], 1, N); % Generate a random binary sequence of length N ``` #### 调制模块构建 对于所选的AMI编码方案而言,其核心在于依据当前位值决定输出电压电平的变化规律:遇到逻辑'1'时交替给出正负脉冲;而对于‘0’保持零状态不变。这一步可通过编写简单的条件判断语句实现: ```matlab function amiSignal = encodeAMI(bitStream) prevPolarity = true; % Initialize polarity flag amiSignal = zeros(size(bitStream)); % Preallocate output array for i=1:length(bitStream) if bitStream(i)==1 if prevPolarity amiSignal(i)=1; prevPolarity=false; else amiSignal(i)=-1; prevPolarity=true; end end end end ``` #### 波形显示分析 利用示波器观察上述程序运行后的结果图形化表示形式,并记录下关键参数比如周期Tb、幅度A等信息以便后续计算误码率性能指标之用。同时也可以借助FFT工具进一步探究频域特性变化趋势从而加深理解整个系统的运作机制[^2]。 #### 同步技术探讨 考虑到接收端需要准确恢复出原有时钟同步关系才能顺利完成解码任务,因此有必要引入诸如平方环法或者Costas环这样的自动频率/相位跟踪装置以确保最佳匹配效果。这类算法能够有效地克服由于多径效应等原因造成的定时偏差问题,提高链路稳定性及可靠性[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gopher-毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值