曼彻斯特编码

曼彻斯特编码和差分曼彻斯特编码

简介

(Manchester Encoding),也叫做相位编码(PE)是一个同步时钟编码技术,被物理层用来编码一个同步位流的时钟和数据;常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号,就是说主要用在数据同步传输的一种编码方式

曼彻斯特编码图解

曼彻斯特编码

但在不同的书籍中,曼彻斯特编码中,电平跳动表示的值不同,这里产生很多歧义:

1、电平从高到低跳变表示"bit:0";电平从低到高跳变表示"bit:1"。

在 网络工程师考试以及与其相关的资料中,如:雷振甲编写的《网络工程师教程》中对曼彻斯特编码的解释为:从低电平到高电平的转换表示1,从高电平到低电平的转换表示0,模拟卷中的答案也是如此,张友生写的考点分析中也是这样讲的。

2、电平从低到高跳变表示"bit:0";电平从高到低跳变表示"bit:1"。

在一些《 计算机网络》书籍中,如《计算机网络(第4版)》中(P232页)则解释为高电平到低电平的转换为1,低电平到高电平的转换为0,《数据通信与网络(第三版)》,《计算机网络(第4版)》采用如下方式:

在清华大学出版的《计算机通信与网络教程》也是这么说的,就以此为标准,我们就叫这为 **标准曼彻斯编码**。至于第一种,我们在这里就叫它 **曼彻斯特编码**。 但是要记住,在不同的情况下懂得变通哦,否则会被老师扣分数的哦。这两者恰好相反,千万别弄混淆了。

【关于数据表示的约定】
  事实上存在两种相反的数据表示约定。
  第一种是由G. E. Thomas, Andrew S. Tanenbaum等人在1949年提出的,它规定0是由低-高的电平跳变表示,1是高-低的电平跳变。
  第二种约定则是在IEEE 802.4(令牌总线)和低速版的IEEE 802.3 (以太网)中规定, 按照这样的说法, 低-高电平跳变表示1, 高-低的电平跳变表示0。
  由于有以上两种不同的表示方法,所以有些地方会出现歧异。当然,这可以在差分曼彻斯特编码(Differential Manchester encoding)方式中克服.

差分曼彻斯特

在信号位 开始时不改变信号极性,表示辑"1"
在信号位 开始时改变信号极性,表示逻辑"0" ;
【 注意】:如果在最初信号的时候,即 第一个信号时:
如果中间位电平从低到高,则表示0;
如果中间位电平从高到低,则表示1;
后面的(从第二个开始)就看每个信号位开始时有没有跳变来决定:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
曼彻斯特编码是一种数字数据传输编码方式,它通过在信号的每个时钟周期中改变信号的电平来表示数据位的变化。在曼彻斯特编码中,一个比特由两个时钟周期组成,每个时钟周期中信号的电平改变代表1或0的变化。 在Verilog中实现曼彻斯特编码需要使用状态机和时钟控制信号。首先,我们需要定义两个状态:数据位0和数据位1。接下来,我们需要根据输入的数据位和当前状态生成输出信号。 下面是一个简单的Verilog代码实现曼彻斯特编码: ``` module manchester_encoding ( input clk, input data_in, output reg encoded_data ); reg [1:0] state; always @(posedge clk) begin case(state) 2'b00: begin if (data_in) encoded_data <= 1'b0; state <= 2'b01; end 2'b01: begin if (data_in) encoded_data <= 1'b1; state <= 2'b10; end 2'b10: begin if (data_in) encoded_data <= 1'b1; state <= 2'b00; end endcase end endmodule ``` 在这个代码中,我们使用了一个状态寄存器(state)表示当前状态。在时钟(posedge clk)的上升沿触发时,根据当前的状态和输入数据(data_in),我们生成相应的输出信号(encoded_data)。 该代码中使用了一个case语句来根据信号的电平和当前状态生成输出结果。具体来说,当状态为00时,如果输入数据为1,则输出信号为0,并将状态变为01;当状态为01时,如果输入数据为1,则输出信号为1,并将状态变为10;当状态为10时,如果输入数据为1,则输出信号为1,并将状态变为00。 通过这种方式,我们可以将输入的数字数据进行曼彻斯特编码,并将生成的编码信号输出到encoded_data信号上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值