常见的编码方式有以下几种,

  1、NRZ(Not Return to Zero)不归零编码, 这是一种比较简单的编码方式,二进制数据“0”和“1”分别用高电平和低电平来表示,当1位数据传输完以后,信号电平

     不返回零所以称为不归零编码。

  2、BiPhase编码, 相比NRZ编码方式,这种编码稍微复杂了一点,他是这样规定,在每一位数据传输时,电平都会跳变(高电平变低电平,或者低电平变高电平),

同时当数据为“1”时(按照规定也可以是“0”),在数据位中间也会跳变。

3、曼彻斯特编码方式, 这种编码方式利用信号的边沿来表示二进制数据“0”和“1”,比如信号的上身沿表示“1”,下降沿表示“0”,而这种跳变一般发生在位帧的中间。

  以上3中编码方式的波形如下图所示,

    

        图1  常见编码方式波形图

  曼彻斯特编码

  假设信号的上升沿表示“0”, 下降沿表示“1”,同时假设数据的波特率为f, 那么一个位的时长为1/f,那么位帧的中间时长为1/2f,我们用T来表示这个半个位帧的时长。

  有了以上的假设条件,那么曼彻斯特的编码流程如下,

    1. 首先I/O口输出高电平。

    2. 检查数据是否发送完成,如果是,跳到步骤7。

    3. 检查下一个数据位的值。

    4. 如果是“1”,调用发送1的函数ManchesterOne(T)。

    5. 如果是"0",调用发送0的函数ManchesterZero(T)。

    6. 返回到步骤2。

    7. I/O输出为高电平并返回。

    ManchesterOne(T)的执行过程

      1. I/O 输出低电平。

      2. 等待半位帧时间T。

      3. I/O输出高电平。

      4. 等待半位帧时间T。

      5. 返回。

    ManchesterZero(T)的执行过程

      1. I/O 输出高电平。

      2. 等待半位帧时间T。

      3. I/O输出低电平。

      4. 等待半位帧时间T。

      5. 返回。

  曼彻斯特解码

  曼彻斯特解码过程要比编码复杂,一般的,解码过程有以下步骤:

    1. 获取数据流的波特率(或者已知数据流的波特率)。

    2. 同步数据流的时钟信号(实质是区分位帧边沿和半位帧边沿)。

    3. 根据上面两步对数据流进行解码。

  假设的条件和编码时一样,具体的实现步骤如下,

    1. 将定时器的捕获中断设置为所有边沿(对于没有上升沿和下降沿同时捕获的MCU,需要在中断处理函数里改变捕获沿)。

    2. 中断函数里处理捕获标志位和捕获值。

    3. 开启定时器,捕获第一个边沿并丢弃。

    4. 捕获下一个边沿,检查捕获值是否等于2T(T = 1/2f,其中f为数据流的波特率。

    5. 重复步骤4,直到捕获值等于2T(此时就和数据流的时钟同步了)。

    6. 读取当前I/O信号的电平值,并保存为当前位的值(0或者1)。

    7. 捕获下一个边沿

      a. 捕获值和T比较

      b. 如果捕获值等于T

        i.  捕获下一个边沿同时确定该捕获值也等于T(如果不等说明编码错误)

        ii. 下一位的值和当前值相同

        iii. 返回该值

      c. 如果捕获值等于2T

        i. 下一位的值和当前值相反

        ii. 返回该值

      d. 否则返回错误

    8. 保存下一位的值到缓存

    9. 如果接收到的数据位达到要求,返回对数据做进一步处理

    10. 否则更新当前值(设置为下一位的值),重复步骤7

    下图展示的是这种解码方式的一个示意图,

  

  图2 曼彻斯特解码示意图

  总结

  总的来说,编码和解码还是比较简单的,曼彻斯特的典型应用是在RFID领域里标签读取。另外,上面假设上升沿表示“1”,下降沿表示“0”,对于相反的情况(即上升

  沿表示“0”,下降沿表示“1”),解码过程处理不同的地方在步骤6,假如同步到数据流的时钟,对于上升沿表示“1”,下降沿表示“0”的情况,当前位的值和读取到的I/O

  的值相同;对于上升沿表示“0”,下降沿表示“1”的情况,当前位的值和读取到的I/O的值相反。

[编码] 曼彻斯特编码与解码相关推荐

  1. 一篇文章让你读懂-曼彻斯特编码

    目录 写在前面的话 1 what?什么是曼彻斯特编码 2 how?怎么使用曼彻斯特编码 2.1 曼彻斯特的编码: 2.2 曼彻斯特的译码: 3 why?为什么推荐曼彻斯特编码?这种编码方式的优缺点 写 ...

  2. 嵌入式系统——曼彻斯特编码

    1. 曼彻斯特编码   曼彻斯特编码是一种双相编码,即每个码元均用两个不同相位的电平信号表示,用电平跳变的方法表示"0"或"1". 传输"0" ...

  3. 几种编码方式(RZ、NRZ、NRZI、曼彻斯特编码)

    此文转自:http://blog.sina.com.cn/s/blog_78e87ba10102wj9g.html 在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU.DSP.MCU甚至是个 ...

  4. 曼彻斯特编码|查分曼彻斯特编码|不归零码

    从网上搜集的资料 不是我原创    曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据.曼彻斯特编码被用 ...

  5. RZ、NRZ、NRZI、曼彻斯特编码

    转自:http://blog.sina.com.cn/s/blog_78e87ba10102wj9g.html 在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU.DSP.MCU甚至是个数字 ...

  6. RZ、NRZ、NRZI、曼彻斯特编码(针对)

    (2016-09-26 20:05:56) 正在上传-重新上传取消​转载▼ 标签: 杂谈 it 分类: Electronic 在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU.DSP.MC ...

  7. 数据通信基础 - 数据编码(曼彻斯特编码 和 差分曼彻斯特编码)

    文章目录 1 概述 2 常见编码方案 2.1 曼彻斯特编码 和 差分曼彻斯特编码 2.2 4B/5B 编码 2.3 各种编码效率 3 扩展 3.1 单极性码 和 极性码 3.2 双极性码 3.3 归零 ...

  8. 曼彻斯特编码,差分曼彻斯特编码和NRZI编码

    曼彻斯特编码 曼彻斯特编码(Manchester Encoding),也叫做相位编码( Phase Encode,简写PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据. 在曼 ...

  9. 不归零法编码、曼彻斯特编码和差分曼彻斯特编码

    数字信号和数位化编码的数据之间存在着自然的联系.数位化存储的数据表现为0和1的序列.由于数字信号能够在两个恒量之间交替变换,所以可以简单地把0赋予其中的一个恒量,而把1赋予另一个恒量.这里恒量的具体取 ...

最新文章

  1. 佛经上181条做人的道理
  2. 重新学习的HTTP协议
  3. Apache + Tomcat 配置多个应用
  4. 一加到1亿。C语言_可能是今年最难选的2部手机:小米10详细对比一加8T
  5. 分布式理论(3):Paxos Made Simple
  6. libz mysql_Docker和Mysql:libz.so.1:无法打开共享对象文件:权限被拒绝
  7. mysql没有group by_MySQL:不在GROUP BY中
  8. 深度学习(二)神经网络中的卷积和反卷积原理
  9. 搭建完全分布式的hadoop[转]
  10. atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
  11. 无线通信与编码_MATLAB实现Turbo码的仿真_含仿真代码_Dr.WuYufei
  12. 直线端点画垂线lisp_AutoCAD中利用AutoLISP开发小程序,实现快速画直线对称中心线...
  13. 【Paper Reading】Improving Availability of Vertical Federated Learning Relaxing Inference on Non-overl
  14. Unity3D手机斗地主游戏开发实战(01)_发牌功能实现
  15. 进了小公司的应届程序员如何翻身进入大公司?
  16. directive 自定义指令
  17. 听歌识曲java_Android自定义View之继承扩展(仿网易云音乐听歌识曲)
  18. 1010001b 1101110b怎么用计算机,计算机组成原理计算题
  19. Cadence(virtuoso)集成电路设计软件基本操作——库和库文件
  20. nvenc vs x264 对比(2)

热门文章

  1. 6.S081——Lab2——system calls
  2. LightGBM 调参要点
  3. histeq的原理和用法
  4. 关于FTP主动模式与被动模式的一点理解
  5. 邮箱申请163,163手机邮箱如何登录?
  6. 32位mips指令说明
  7. 致小白的K210模型训练与运用
  8. 608E出入栈卡特兰数不理解
  9. G8期刊《全体育》期刊简介及投稿要求
  10. Java8中@Contended和伪共享