没有合适的资源?快使用搜索试试~ 我知道了~
首页MATLAB实现曼切斯特编码,密勒编码,CMI编码 以及译码
资源详情
资源评论
资源推荐
Manchester、Miller、CMI Encode
And Decode
电子信息科学与技术 3-2220133900-罗嘉文
一、使用曼切斯特编码
发送端
为了分析方便,先以模拟基带信号为正弦波为例说明。一个余弦模拟基带信号
v(t)=cos(2π*3*t),t∈(0,1)s ,当然,这个所谓的模拟基带信号也是数字的,因为在计
算机中只能表示数字信号,但是这个数字信号和原来的模拟信号十分接近,故在此认为是
与原来的模拟信号几乎一致的信号了。这个信号经过模数转换器,成为数字基带信号,这个
过程为对模拟信号的抽样。
在 MATLAB 中对原模拟基带信号降采样率(即使用 downsample()函数),在这里,
具体的采样过程为:对原信号 v 每隔 0.1 秒采样一个点,于是原信号经过抽样后变成了时间
上离散的信号 v_sampled,仅有 11 个采样点。采样前后如下图 1 图 2,原理框图如图
3。
经时间离散化后,由于对于不同的模拟基带信号,当时间离散化后,会有不同的离散
的幅值,故这个幅值是有“无限可能”的,所以需要对这个离散化后的 PAM 信号
v_sampled 的幅值变为“有限可能”即进行量化。在这里对这个信号采用 8 个量化等级来量
化,以使得彻底离散化 v 信号.(各量化等级见向量 quantisation_levels)。
各个量化等级:
quantisation_levels = [-2.1520 -1.3439 -0.7560 -0.2451 0.2451 0.7560 1.3439 2.1520]
具体的量化过程为构造一个量化误差矩阵errors,型为8行11列(8行指的是8个量化等
级,11列指的是11个离散信号点)。矩阵errors中,第n行的值是时间离散信号
v_sample与第n个量化等级值的相对大小(n∈(1,8))。所以这个 errors矩阵就是离
散信号与每个量化等级的量化误差值,对这个矩阵的每列求最小值,就可以得到信号
v_sampled的最小量化误差,而且还可以得到errors的每列最小值对应的行标号symbols
向量,此symbols向量的数值即为该点对应量化后的量化等级,而该量化等级又对应一个
0 200 400 600 800 1000 1200
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
图
1
原始的模拟基带信号
1 2 3 4 5 6 7 8 9 10 11
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
图
2
经采样率后为时间离散信号
图 2 的离散信号
v_sampled
图 1
的
图 3
v
5 10 15 20 25 30
0
0.5
1
1.5
对每个量化等级用三位二进制数表示
量化幅度值,所以symbols向量中的数值就代表值一个量化幅度,当然我们传输的时候可
以不直接传输量化后的幅度值,而是传输这个量化后的幅度值对应的量化等级(需3比特
表示)。为了让行标号从0开始数起,让symbols全体减1。
量化后,可以进行信源编码:脉冲编码调制(PCM)。因八个量化等级需要用 3比特
表示,所以这11点的离散信号每点会用到三比特表示。所以这个信号需要用到3*11=33
位二进制数来表示。先把量化等级symbols的十进制数用dec2bin()函数转化为三位二进
制字符型变量(每位均为ASCII码值),再把每位ASCII码值都减去48换算成为对应的二进
制数bits(如图5)。这样便完成了信源编码了。
所以从v_sampled信号经量化后到symbols(v_sampled信号各点对应的量化等
级)表示原信号的过程如下图5:
量化后,经信源编码的过程如下:
symbols
比特率R_b=R_B·H,又符号速率R_B=1/Ts=fs 每个码元用3比特表示。码速为
10Baud,故比特率R_b=10*3=30bps。
完成信源编码后,就可以进行基带信号的设计了。在这里用曼切斯特编码作为基带码。
接收端需要从接受数据中恢复时钟信息来保证同步,这就需要线路中所传输的二进制
码流有足够多的跳变,即不能有过多连续的高电平或低电平,否则无法提取时钟信息。
Manchester编码可以保证线路中码流有充分的跳变,因为它是用电平从1跳变到-1表示数
字‘1’,用电平从-1跳变到1表示数字‘0’。这样每一位的中间有一跳变,位中间的跳变即作时
钟信号,又作数据信号,在传输代码信息的同时也将时钟同步信号一起传输到对方,每位
编码中有一跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。但每一个
码元都被调成两个电平,所以数据传输速率只有调制速率的1/2.
由于在模拟基带信号(长度为0~1秒)每隔0.1秒抽样后,得到了11点的信号,这11点
1 2 3 4 5 6 7 8 9 10 11
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
图
2
经采样率后为时间离散信号
1 2 3 4 5 6 7 8 9 10 11 12
0
1
2
3
4
5
6
7
信号从零开始数起的量化等级
0 200 400 600 800 1000 1200
-1.5
-1
-0.5
0
0.5
1
1.5
信号经曼切斯特编码后
每点的间隔也是0.1s,而用了对应的量化等级表示后,bits中每连续的3位就为0.1秒。因
为码速为30Baud,即每秒钟可传30个码元,而这里有33个码元需要传输,所以传输的时
间要1.1s这个1.1秒就是曼切斯特编码后的序列的时间长度。若把0~1.1秒分成1000份,
则有1101个时间点,由于,1101个点需要传输33个码元,故编码后的每个码元的长度大
约为33到34个时间点。而这33到34个时间点则用于一位二进制数的曼切斯特编码,因为
曼切斯特编码每位有跳变,所以应该在1到17个时间单位为原电平,第18到34则为原电平
取反,这样就完成对一个码元的编码了,对剩余的32个码元同样方式地编码,则完成了曼
切斯特编码。因为曼切斯特编码是双相码,需要对原来的m函数
(func_manchester_encode())进行更改,让其变成双相码,在其编码后,整体波形
再作修改,成为峰峰值为2,无直流分量的双相码。
具体过程是:
func_manchester_encode()函数的u的波形向下移动0.5个单位,再放大2倍
u=2*(u-0.5).
代码如下:
这样信号经过曼切斯特编码后变为图6的波形u。
图6 信号u
5 10 15 20 25 30
-1.5
-1
-0.5
0
0.5
1
1.5
曼切斯特解码后
这样,在发送端就可以把数字基带信号由天线发射出去了。
信道:先假设信道是无噪声的情况下,在接收端进行接收;再给信道加入噪声。
接收端:
接收端接收到基带数字信号u后,就可以进行一些与发送端相反的过程进行恢复原信
号。
首先进行曼切斯特解码。
因为u信号每33位包含一位的信息,而且这33位中前半部分与后半部分极性相反,根
据他们的极性变化,若第1到第17点之间有值大于0,则对应点出为1,否则为-1,第18点
到第33点小于0,则对应点处也为1,否则为-1。这样取这33点的平均值,若大于0则为数
字1。
具体的曼切斯特解码函数的程序为如下。解码后的波形请见图7。
图7 信号recovered_bits
由于对接收信号解码后为双极性的波形,不便于解出对应的量化等级,需要把其变为0
到1之间的波形。因为转换回01后的波形bits每3位为三位二进制数(可以确定对应的量化
等级值)。bits中每位二制数+48转换为ASCII码,再用char()函数求出这个ASCII码对应
的数值,然后把这个三位二进制数用十进制来显示,便可以得到对应的量化等级
recovered_symbols了。
剩余16页未读,继续阅读
Libe_ration
- 粉丝: 25
- 资源: 59
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3