Menu Close

曼彻斯特解码介绍

曼彻斯特编码(Manchester)是在通讯领域中一种常见的编码方式, 其优点是:编码简单,解码简单,抗干扰能力比较强, 在串行通讯领域, 无线遥控领域都有很多应用。 缺点是只有带宽 50% 左右的 编码效率。

相关的参考文章:

曼彻斯特编码介绍

曼彻斯特编码-参考代码(Verilog)

曼彻斯特解码-参考代码(Verilog)

 

曼彻斯特编码帧(包)组成:

起始定界符+数据 + 终止定界符 (这里我们以mvb 协议为例,其他的通讯方式,根据不同协议会有所不同,但这三个基本要素都是有的)

%title插图%num

在曼码的解码中,首先要找到起始定界符,之后对数据进行解码,最后找到终止定界符。 到此,整个曼码的解码结束。 如果没有找到起始定界符,则对帧中(包内)的任何波形进行解码,都是没有意义的。甚至都不能判断出当前的数据是0,还是1。

以mvb 协议为例,起始定界符由两种:主帧起始符,从帧起始符。

%title插图%num
%title插图%num

这里我们以mvb 协议中的的从帧起始定界符为例:

曼码的解码可以有很多种方式,没有一个强制的规定。 但原则是要正确的把数据解码出来即可。总体的原则是:

1)找到起始定界符,定界符的第一对bit(两个bit)中 一定有电平反转(边沿)根据这个边沿定位起始位开始,接下来就是解码出完整的定界符(mvb 协议是 起始位+8个BT )

2)解码数据段,将数据正确解码

3)找到终止定界符,完成整个数据包(帧)的解码

 

由于曼码的编码特点,线路上不会长期出现高电平或者低电平,这使得曼码的通讯抗干扰能力比较强,即使在长线传输中波形发生扭曲,变形,也可以通过边沿进行矫正,这也是曼码的优点。在一个包(帧)的数据段最多只会出现连续的两个0, 或者连续的两个1。(没有’NL‘ ’NH’)举例:

%title插图%num

上图中,以0.5BT 的比特率动态采样,我们会得到: 2’b10, 2’b10, 2’b01, 2’b10, 2’b10, 2’b10, 2’b01, 2’b10 16个bit, 根据曼码协议得到的数据为 (第一个棕色信号为接收到的波形, 第二个棕色信号为数据采样(0.5BT) )

2‘b10 = 1

2’b10 = 1

2’b01 = 0

2’b10 = 1

2’b10 = 1

2’b10 = 1

2’b01 = 0

2’b10 = 1

data = 8’hdd;

因为上图为数据段,可以看到,波形中只会连续出现两个1,或者两个0。 不会出现连续3个,3个以上的0,或者是1。

 

波形解码

在起始定界符中也最多会出现3个0 或者三个1 (0.5BT为采样单元),数据段最多是2个,所以整个的解码方式都是以0.5BT 作为采样单元。

在对整个波形(帧)解码过程中:

1)首先找到边沿(上升沿,或者下降沿),定位

2)在边沿之后的0.25BT 位置左右做第一次采样,之后在1.25BT 位置做第二次采样,在2.25BT 位置做第三次采样,以此类推。 直到出现下一个边沿(上升沿,或者下降沿)为止。因为出现边沿,就重新定位。

%title插图%num

这样phy层的解码就完成了。 举例: 一个8bit的数据会被0.5BT 采样下得到16个值;一个9bit的数据会被0.5BT采样下得到18个值。

之后我们会根据曼码的编码中的定义,一对一对的解码:

2‘b01 = 0

2’b10 = 1

2’b00 = ‘NL’ (数据段没有, 起始,终止段 有)

2’b11 = ‘NH’ (数据段没有, 起始,终止段 有)

接下来就可以对协议层解码了, 包括得到起始定界符,数据, 终止结束符等。

 

到此整个曼码的解码完成。

Posted in FPGA, FPGA, IP开发, RISC-V, RISC-V IPcore设计, Verilog, Verilog, 教材与教案, 文章

发表评论

相关链接