西电通信技术基础实验

news2025/8/12 21:13:39

实验一 基带传输常用编码

实验内容

数字编码技术:AMI码、曼彻斯特编码、HDB3码

实验目的

掌握几种基带传输常用码型的编码规则,如AMI码、HDB3码、曼彻斯特码。然后利用MATLAB设计并实现它们的编码。

实验环境

MATLAB程序设计、MATLAB Simulink仿真

原理简述

AMI码

定义:AMI码是传号交替反转码。其编码规则是将二进制消息代码“1”交替地变换为传输码的“+1”和“-1”,而“0”保持不变。

优点:无直流分量

缺点:当原信码出现连“0”串时,信号的电平长时间不跳变,造成提取定时信号的困难。

HDB3码

定义:HDB3码全称是高密度双极性码,是AMI码的一种改进型,其目的是为了保持AMI码的优点而克服其缺点,使连“0”个数不超过3个。

编码规则:

1) 先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码 ;
2) 若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,表示(+V,-V);
3) 为了不破坏极性交替反转,当相邻V码之间有偶数个非0符号时,再将该小段的第1个0变换成+B或 -B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。

例如:

消息代码: 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1

AMI码: -1 0 0 0 0 +1 0 0 0 0 -1 +1 0 0 0 0 -1 +1

HDB3码:-1 0 0 0 –V +1 0 0 0 +V -1 +1 -B 0 0 -V +1 -1

数字双相码(Manchester码)

定义:它用一个周期的正负对称方波表示“0”,而用其反相波形表示“1”。编码是:“0”码用“1 -1”两位码表示,“1”码用“-1 1”两位码表示。

例如:

消息代码 1 1 0 0 1 0 1

曼彻斯特编码:-1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1

仿真程序与实验结果及其分析:

AMI码

设计思路:

1、输入消息码;2、计算“1”的位置;3、偶数个1时输出1”,奇数时为“-1”。

关键步骤:统计“1”的个数,对奇偶不同的“1”进行区分。

matlab代码:

xn=[1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0];
tn=xn;
num=0;

%AMI部分
for k=1:length(xn)            %只对1进行变化
    if xn(k)==1
        num=num+1;          
    if num/2==fix(num/2)      %偶数位输出为1
        tn(k)=1;
    else
        tn(k)=-1;             %奇数位输出为-1
    end
    end
end
figure(1);                    %图一为原码,图二为AMI码
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid;
subplot(3,1,2);stairs([0:length(xn)-1],tn);axis([0 length(xn) -2 2]);grid;

实验结果及分析

对于输入的序列1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0经过AMI编码之后结果应是-1 0 1 -1 0 0 0 0 1 -1 1 0 0 0 -1 0,结果图像可知结果正确。

HDB3码

设计思路:

1、输入消息码,并将它转换为AMI码;

2、统计连零情况,如果4连0,让0000的最后一个0改变为与前一个非零符号相同极性的符号;

3、如果当前V符号与前一个V符号的极性相同,则让当前V符号极性反转,以满足V符号间相互极性反转要求,并且添加B符号,与V符号同极性,然后让后面的非零符号从V符号开始再交替变化。

matlab代码:

xn=[1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1];
tn=xn;
num=0;
 
%AMI部分
for k=1:length(xn)            %只对1进行变化
    if xn(k)==1
        num=num+1;          
    if num/2==fix(num/2)      %偶数位输出为1
        tn(k)=1;
    else
        tn(k)=-1;             %奇数位输出为-1
    end
    end
end

%HDB3部分
HDB3=tn;
num1=0;
l1=0;
lv=0;
for i=1:length(xn)
    if HDB3(i)==0
        num1=num1+1;
        if num1==4
            if lv==l1
                HDB3(i)=-l1;
                HDB3(i-3)=-l1;
            else
                HDB3(i)=l1;
            end
            lv=HDB3(i);
            l1=lv;
            num1=0;
        end
    else
        if HDB3(i)==l1
            HDB3(i)=-l1;
        end
        l1=HDB3(i);
        num1=0;
    end
end

figure(1);
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid;
subplot(3,1,2);stairs([0:length(xn)-1],HDB3);axis([0 length(xn) -2 2]);grid;

实验结果及分析

对于输入的序列1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1经过AMI编码之后结果应是-1 0 0 0 -1 +1 0 0 0 +1 -1 +1 -1 0 0 -1 +1 -1,结果图像可知结果正确。

Manchester码

设计思路:

1、输入消息码;2、计算消息码中“1”、“0”的位置;3、将消息码中的“1”输出为“-1 1”;将消息码中的“0”输出为“1 -1”。

关键步骤:将每个码元用两位码表示。

matlab代码:

xn=[1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1];
yn=zeros(1,2*length(xn));

for i=1:length(xn)
    if xn(i)==0
        yn(2*i-1)=1;
        yn(2*i)=-1;
    else
        yn(2*i-1)=-1;
        yn(2*i)=1;
    end
end

figure(1);
subplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid;
subplot(2,1,2);stairs([0:0.5:length(xn)-0.5],yn);axis([0 length(xn) -2 2]);grid;

实验结果及分析

对于输入的序列1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1经过AMI编码之后结果应是-1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 ,结果图像可知结果正确。

in

实验二 数字调制截调技术

实验内容

一、Simulink简介
二、2ASK系统的仿真设计与分析
三、2FSK系统的仿真设计与分析
四、2PSK系统的仿真设计与分析
五、2DPSK系统的仿真设计与分析

实验目的

在学习了几种数字调制的基础上,通过simulink仿真软件,实现对2ASK、2FSK、2PSK等数字调制系统的仿真,然后对以上系统有更深入的了解。

实验环境

Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。

Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。

为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。

2ASK系统的仿真设计与分析

2ASK系统的原理

ASK即“幅移键控”又称为“振幅键控”,2ASK是二进制振幅键控。发送为二进制符号“0”时,2ASK信号取值为0;发送为二进制符号“1”时,2ASK信号取值为载波对应的值。

解调算法:

上式中的第二项的频率远大于基带信号的频率,可以用低通滤波器滤掉。

具体如下图所示:

2ASK系统的仿真设计

2ASK系统仿真结果

2FSK系统的仿真设计与分析

2FSK系统的原理

数字键控法实现二进制移频键控信号的原理图:

2fsk非相干解调:

2fsk相干解调:

2FSK系统的仿真设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFq3L9aT-1669267493001)(C:\Users\拽叉叉\AppData\Roaming\Typora\typora-user-images\image-20221030121154411.png)]

2FSK系统仿真结果

2PSK系统的仿真设计与分析

2PSK系统的原理

2PSK称为二进制相移键控,是相移键控的最简单的一种形式,它用两个初相相隔为180的载波来传递二进制信息。2PSK即发送为二进制符号“1”时,取0相位;发送为二进制符号“0”时,取pi相位。或者也可以反过来。

相干解调法:

整个2PSK的调制与解调仿真,流程如下图:

2PSK系统的仿真设计

2PSK系统的仿真结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uf6eZJji-1669267493002)(通信技术基础第二次实验/image-20221121211159611.png)]

2DPSK系统的仿真设计与分析

2DPSK系统的原理

2DPSK信号的解调方法:差分相干解调(相位比较)法

2DPSK系统的仿真设计

2DPSK系统仿真结果


在这里插入图片描述

实验三 模拟信号的数字传输

实验内容

一、PCM系统及matlab的实现
二、增量调制系统及matlab的实现

实验目的

通过此次课程的学习我们能加深理解和巩固理论课上所学的有关PCM\DM编码和解码的基本概念、基本理论和基本方法,并且更加熟练的掌握和操作MATLAB。

实验环境

MATLAB程序设计

原理简述

脉冲编码调制

脉冲编码调制(PCM)简称脉码调制,它是一种用一组二进制数字代码来代替连续信号的抽样值,从而实现数字通信方式。由于这种通信方式刚干扰能力强,他在很多领域获得了极为广泛的应用。

PCM信号的形成是模拟信号经过“抽样、量化、编码”三个步骤实现的。

  • 抽样是对模拟信号进行周期性的扫描,把时间上连续的信号变成时间上离散的信号。我们要求经过抽样的信号应包含原信号的所有信息,既能无失真地恢复出原模拟信号,抽样速率的下限有抽样定理确定。
  • 量化是把经抽样得到的瞬间值进行幅度离散,即指定规定的电平,把抽样值用最接近的电平表示。
  • 编码是用二进制码组表示有固定电平的量化值。实际上量化是在编码过程中同时完成的。

增量调制

预测误差 e k = m k – m k ′ ek = mk – mk' ek=mkmk 被量化成两个电平 + σ +\sigma +σ − σ -\sigma σ σ \sigma σ值称为量化台阶。这就是说,量化器输出信号 r k rk rk 只取两个值 + σ +\sigma +σ − σ -\sigma σ 。因此, r k rk rk 可以用一个二进制符号表示。例如,用“1”表示“ + σ +\sigma +σ”,及用“0”表示“ − σ -\sigma σ ”。

当前抽样值和前一个抽样重构值比较,若大于前一个抽样重构值,则编为1,若小于,则编为0

增量调制的采样间隔为 T s T_s Ts ,量化阶距 δ δ δ ,前一个抽样量化值初始值为0。输入信号,求出20个采样点。

编码端:

  1. 先取差值;
  2. 量化器输出:差值大于0输出δ,差值小于0输出-δ ;
  3. 前一个抽样量化值状态更新:差值加上前一个抽样量化值
  4. 编码输出,差值大于0输出为1,小于等于0输出为0。

解码端:

  1. 前一个抽样量化值初始值为0
  2. 根据编码端的输出得到量化值,若编码值为1,则量化值= δ δ δ,否则为 − δ -δ δ
  3. 更新抽样量化值:前一个抽样量化值 + δ +δ +δ
  4. 输出图像

仿真程序与实验结果:

脉冲编码调制

%sympref('FloatingPointOutput',true);

signLen=4

%产生原始信号
syms x
originalFunction(x)=sin(2*pi*x)+sin(2*pi*5*x)
ts=0.01;
t=0:ts:signLen;
original=originalFunction(t)
subplot(4,1,1);
plot(original);
title('原始信号');


%用离散的周期序列对信号进行抽样
sampleNum=81
ts=signLen/(sampleNum-1);
t=0:ts:signLen;
sample=originalFunction(t)
subplot(4,1,2);
stem(sample);
title('抽样信号');


%均匀量化
maxY=2
minY=-maxY;
M=19 
delta=(maxY-minY)/M
dx=1:1:M;
q=dx*delta + (minY-delta/2)*ones(1,M)
index=zeros(1,sampleNum);
for i=1:sampleNum
    sp=sample(i);
    tempi=find((q-delta/2 <= sp) & (sp <= q+delta/2));
    index(i)=(tempi(1)-1-(M-1)/2)*2/(M-1)*maxY; 
end
subplot(4,1,3);
stem(index);
title('均匀量化信号');

oneSample = sample/maxY; 
ys=[];
A= 3;
lnA = log(A);

for j = 1:length(oneSample)
    ori = oneSample(j);
    if(abs(ori)<1/A)
        ys(end+1) = ori*A/(1+lnA);
    else
        ys(end+1) = sign(ori)*(1+log(A*abs(ori)))/(1+ lnA);
    end
end
ys

ys_max = max(ys);
ys_min = min(ys);
delta = (ys_max-ys_min)/M;
q2=dx*delta + (ys_min-delta/2)*ones(1,M)
index2=zeros(1,sampleNum);
for i=1:sampleNum
    sp=ys(i);
    tempi=find((q2-delta/2 <= sp) & (sp <= q2+delta/2));
    index2(i)=(tempi(1)-1-(M-1)/2)*2/(M-1); 
end

ans =[];
for j=1:length(index2)
    tempy = index2(j);
    if(abs(tempy)<1/(1+lnA))
        ans(end+1) = tempy*(1+lnA)/A;
    else
        ans(end+1) = sign(tempy)*(exp(abs(tempy)*(1+lnA)-1))/A;
    end
end
ans = ans*maxY; 
subplot(4,1,4);
stem(ans);
title('A律量化信号');

增量调制

syms x
originalFunction(x)=sin(2*pi*x);

signLen=1

delta=0.35;                          % 量化阶距

ts=0.01;                             % 采样间隔
t=0:ts:signLen;                      % 仿真时间序列
original=originalFunction(t)
subplot(3,1,1);
plot(t,originalFunction(t));

sampleLen=0.05
sampleNum=signLen/sampleLen+1;
t=0:sampleLen:signLen;
sample=originalFunction(t)
hold on;
stem(t,originalFunction(t));

tz=[];
base=0; 
for i=1:sampleNum-1
    flag=sample(i+1)-base
    if flag>0
        tz(end+1)=1;
        base=base+delta
    else
        tz(end+1)=0;
        base=base-delta
    end
end
tz(end+1)=tz(end);
tz
subplot(3,1,2);
stairs(t,tz);
ylim([-1 2]);

%解码端
jt=[];
jtBase=0;                           % 解码端预测器初始状态
for i=1:length(tz)-1
    if tz(i)==0
        jtBase=jtBase-delta;
    else
        jtBase=jtBase+delta;
    end
    jt(end+1)=jtBase;
end
jt(end+1)=jt(end);                  % 延迟器状态更新
jt
subplot(3,1,3);
stairs(t,jt);
ylim([-1.5 1.5]);
hold on;
plot(t,originalFunction(t));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IMX6ULL + SPI LCD(驱动IC ILI9341)显示简单的QT界面

1. 硬件&#xff1a; 使用正点原子的IMX6ULL Linux开发板 开发板底板原理图版本&#xff1a;V2.1 核心板原理图版本&#xff1a;V1.6 LCD &#xff1a;MSP2402 (IC ILI9341) 2. 查找可用引脚 开发板上引出的引脚是在JP6上&#xff0c;只看JP6会发现没有可用的SPI引脚&…

【前端内容学习】vue的引用,下载,语法

&#xff08;1&#xff09;vue的使用方式 原版本应该是三种使用方式&#xff0c;但是现在vue官网好像已经找不到关于本地下载的内容了 1&#xff0c;直接在官网上引用网络CDN文件&#xff0c;注意这种引用方式&#xff0c;要把这一段写在所有使用vue的部分前面 <script s…

蓝鲸研运体系在腾讯内的应用实践

蓝鲸是腾讯IEG十多年研运探索的经验与成果&#xff0c;积累了很多人的智慧与付出。由于腾讯IEG的业务特殊性&#xff0c;蓝鲸体系天生地展现出对异构业务的友好&#xff0c;避免了需要重复造轮子才能完成对多业务的支持。本次分享主要介绍蓝鲸研运体系在腾讯内的发展、应用及未…

【Linux】Linux常用命令

目录一.帮助命令1.man获取帮助信息2.help获取shell内置命令的帮助信息3.怎么判断命令的类型4.使用man查看内置命令5.常用快捷键二.文件目录类命令1.pwd 显示当前工作目录的绝对路径2.cd 切换路径3.ls 列出目录的内容4.mkdir 创建一个新的目录(文件夹)5.rmdir 删除目录(文件夹)6…

linux64/ubuntu20.04安装NVIDIA驱动详细过程

每次安装Nvidia驱动的时候都要查询&#xff0c;各种各样的教程可能也不大适合自己&#xff0c;故记录一下安装过程&#xff1b; 本人所使用的系统为ubuntu20.04&#xff0c;64bit&#xff1b; 1、查看是否存在nvidia的显卡信息 命令&#xff1a;lspci | grep NVIDIA 2、根据显…

奥迪Q3电瓶损坏问题解决思路

背景 最近自己的小Q3坏了&#xff0c;具体场景就是无钥匙进入感应不生效&#xff0c;所有钥匙按键失灵&#xff0c;通过机械钥匙可以开启门锁但是汽车完全无法启动&#xff0c;方向盘锁死&#xff0c;灯光没有反应。初步推断电瓶损坏&#xff0c;或者漏电导致完全亏电。 怎么判…

数理统计笔记6:假设检验

引言 数理统计笔记的第6篇先介绍了假设检验&#xff0c;给出了各种常用的假设检验的方法&#xff0c;最后介绍了用置信区间和p值来进行假设检验的方法。 引言假设检验描述什么是假设什么是假设检验假设检验的基本思想假设检验的步骤假设检验的原理假设检验的两类错误双侧检验和…

【微电网优化】粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)【含Matlab源码 2190期】

⛄一、粒子群算法求解电联供型微电网经济运行优化简介 0 引言 热电联供 (combined heat and power, CHP) 系统建立在能源梯级利用的概念基础上, 统一解决了电能和热能的供应问题, 是一种经济节能、环境友好的用能方式, 具有良好的社会和经济效益, 在国内外引起广泛关注。在发展…

ShareSDK for Flutter

前言 这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交平台的分享等功能。 Demo例子&#xff1a;https://github.com/MobClub/ShareSDK-For-Flutter 开始集成 引入…

C++ 语言学习 day11 复习(3)

1.第一个是昨天的作业&#xff1a; 用类实现一个双向循环链表&#xff0c; 完成对应的功能&#xff0c;&#xff08;增删查改 &#xff09; 代码&#xff1a; list.h #ifndef LIST_H #define LIST_H #include <iostream> #include <string.h> using namespace s…

WebRTC入门教学和一对一通话实现

WebRTC入门学习 简介 大体架构 互联网实时通信平台&#xff0c;html5标准之一&#xff0c;使用简单的API就可以实现音频通信。 紫色部分的是Web应用开发者需要关注的部门&#xff0c;也就是WebRTC提供给开发者的接口蓝色部分是提供给浏览器厂商的接口&#xff0c;浏览器厂…

2023年天津理工大学中环信息学院专升本专业课报名考试须知

天津理工大学中环信息学院 2023年高职升本科专业课考试须知 根据《2023年天津市高职升本科招生实施办法》的相关要求&#xff0c;为做好高职升本科专业考试的报考工作&#xff0c;全面服务考生&#xff0c;保障考生权益&#xff0c;结合疫情防控要求&#xff0c;现将考试具体事…

14天学习训练营之 入门Pygame

目录 学习知识点 pygame 的 “hello world” pygame 模块概览 事件 理解事件 事件检索 处理鼠标事件 处理键盘事件 事件过滤 产生事件 模板代码 写一个把所有发生的事件输出的程序 使用方向键来移动图片 产生一个完全自定义的全新事件 这个程序让 “hello world”…

Linux--信号量

1.信号量的定义: 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c; 获取资源时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为p操作。当信号量值为0时&#xff0c;代表没有资源可用&#xff0c;p操作会阻塞。释…

Flutter高仿微信-第31篇-单聊-表情

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取表情实现的…

骨感传导蓝牙耳机怎么样,骨感传导耳机对于我们耳道有保护吗

人们对于自身健康越来越重视&#xff0c;更多的人意识到传统耳机对于我们耳道的危害&#xff0c;纷纷加入了新型的骨感传导耳机阵容中&#xff0c;但还是存在不少对于骨传导耳机保持顾虑的小伙伴们&#xff0c;认为骨感传导对于耳道还是有损害&#xff0c;那么今天小编就和大家…

【Redis】Redis 的基础数据结构 以及 各种数据结构常用命令使用示例

本文主要介绍 Redis 基础&#xff0c;包括什么是 Redis 、Redis 数据结构有那些 以及 各种Redis 数据结构的常用操作命令 1. 初始 Redis 1.1 NoSQL 数据库 —— 非关系型数据库 SQL 1&#xff09; 结构化 -—— 例如 MySQL 中的表结构 &#xff08;不建议修改&#xff0c;初始…

锐捷MPLS跨域方案A、B实验配置

目录 MPLS域内配置 MPLS域1配置 MPLS域2配置 域间方式A配置 域间方式B配置 MPLS隧道——跨域解决方案A、B讲解_静下心来敲木鱼的博客-CSDN博客_跨域a方案https://blog.csdn.net/m0_49864110/article/details/127601807?spm1001.2014.3001.5501 MPLS域内配置 MPLS域内配置…

同态加密库Seal库的安装(win11+VS2022)

先说一下&#xff0c;seal库是微软开发的同态加密库&#xff0c;目前支持三种算法bfv&#xff0c;bgv和ckks。提供的语言版本是C艹和C#。 工具准备 这是github上提供的要求。 要准备的东西有 vs2022&#xff08;社区版就行了&#xff0c;网上一堆教程&#xff09;&#xff0c…

使用 Python 和 Matplotlib下载美股数据

介绍&#xff1a; 提示&#xff1a;例如 这是关于使用机器学习创建交易策略的系列文章中的第一篇。关于机器学习在交易中的实际应用&#xff0c;我主要参考的是 Marco Lopez de Prado 的金融机器学习进展。 尽管在人工智能方面有多年经验&#xff0c;但我从未将其应用于交易…