曼彻斯特码编解码原理以及Verilog实现
来源:互联网 发布:大一统理论 知乎 编辑:程序博客网 时间:2024/05/22 09:07
曼彻斯特编码,也叫做相位编码(PE),是一个同步时钟编码技术,在以太网媒介系统中,被物理层使用来编码一个同步位流的时钟和数据。它的每一个数据比特都是由至少一次电压转换的形式所表示的。曼彻斯特编码因此被认为是一种自定时码。自定时意味着数据流的精确同步是可行的。每一个比特都准确的在一个预先定义时间时期的时间中被传送。这样的编码方式可以在长时间没有电平跳变的情况下,仍然对任意的二进制数据进行编码,并且防止在这种情况下同步时钟信号的丢失以及防止低通模拟电路中低频直流飘移所引起的比特错误。同时,如果保证传送的编码交流信号的直流分量为零并且能够防止中继信号的基线漂移,那么就很容易实现信号的恢复和防止能量的浪费。另外,曼彻斯特码还具有丰富的位定时信息。
曼彻斯特编码是非常常见的编码,网线就是采用这种编码。课本上说的“含有丰富的时钟信息”。
编码的步骤,是用01表示0,用10表示1。正是因为用跳变沿表示电平,使得它的频率是信号的两倍。
以下是编码的程序:
仿真的波形:
从波形可以看出,曼码可以避免连0或者连1。
这里有问题,我默认了时钟信号的频率是曼码频率的两倍,因为我必须利用时钟沿编码。不太清楚实际情况是什么样的,因为网上都是时钟信号频率等于编码频率,很奇怪。
下面介绍译码。译码的难度不是01以为0,10译为1,而是确定是吗时候开始译码。参考了一些书,他们是从检测到00或11后开始译码,因为00后一定是1,11后一定是0,所以就可以确认开始,然后两个为一组译码。
代码如下:
仿真结果:
由图中可以看出,译码从检测到11开始,因为11后面跟着0,所以译01,按顺序来是10,所以输出1,后面每隔两个码译一次,因为不能和前一个码混在一起。这样如果传输过程没有误码,后面再也不会出现翻译00或11的情况。在这里我故意弄出了个11,让fail错误信号置了1。
- 曼彻斯特码编解码原理以及Verilog实现
- 曼彻斯特码编解码原理
- 基于verilog的曼彻斯特编译码
- m序列的原理以及verilog实现
- 哈夫曼树以及编解码
- 快速理解掌握node.js 字符编码,确码过程 以及base64编解码原理
- Base64编解码原理
- 视频编解码原理
- gif编解码原理
- base64编解码原理
- 视频编解码原理
- 视频编解码原理
- MPEG4编解码原理
- JPEG编解码原理
- H264编解码原理
- 音频编解码原理
- Base64编、解码原理,及代码实现(一)
- Base64编、解码原理,及代码实现(二)
- 在MDI/SDI 中实现 RictEdit 复制粘贴功能
- 自动布局笔记(学习)
- deque
- iOS新特性之扩展开发攻略 - Share Extension
- CodeForces 697B
- 曼彻斯特码编解码原理以及Verilog实现
- ubuntu16。04安裝谷歌等中文輸入法
- Jq通过td获取同行其它列td
- Android学习
- 如果用 Maven添加本地项目里的jar ?
- Codeforces Round #368 (Div 2) A,B,C,D,E
- PHP判断访客是否是手机端(移动端浏览器)访问的4种方法
- iOS_pch文件
- 20160723------JAVA初体验