电子学杂记篇4-格雷码介绍

学过晶体管知识的朋友们都知道,数据位跳变就相当于硬件电路中的晶体管翻转。许多位同时跳变就相当于多个晶体管同时翻转,会导致电路中出现很大的尖峰电流脉冲,从而导致0 或1 电平的数字信号不稳定。

格雷码(Gray Code)不同于我们常用的二进制编码,它只是一种无权码,连算术编码都算不上。其重要特征是一个数变为相邻的另一个数时,只有一个数据位发生跳变,由于这种特点,就可以避免电路中出现亚稳态。

简而言之,格雷码的一位改变特征减小了电路出错概率,实际很多场合也用到了格雷码。

下表举例了4位格雷码、4位二进制码以及十进制码的对应关系

十进制

二进制

格雷码

十进制

二进制

格雷码

0

0000

0000

8

1000

1100

1

0001

0001

9

1001

1101

2

0010

0011

10

1010

1111

3

0011

0010

11

1011

1110

4

0100

0110

12

1100

1010

5

0101

0111

13

1101

1011

6

0110

0101

14

1110

1001

7

0111

0100

15

1111

1000

二进制到格雷码转换的固定规律为:

1)格雷码中的最高有效位(最左边)等同于二进制数中相应的最高有效位。

2)从左到右,加上每一对相邻的二进制编码位,从而得到下一个格雷码位,舍去进位。

 

例如二进制数10110到格雷码的转换如下,格雷码是11101:

275cd86c5f3443279910e8c2f6c61b1c.jpeg

 

下面博主小飞给出任意位宽的二进制转格雷码verilog代码:

 

e546f902494f40dcae45b6b773d5b99f.jpeg

 

格雷码到二进制转换的固定规律为:

1)二进制码的最高有效位(最左边)等同于格雷码中相应的最高有效位。

2)将所产生的每个二进制码位加下一个相邻位置的格雷码位,从而得到下一个二进制位。舍去进位。

 

例如格雷码11011到二进制数转换如下,二进制数是10010:

96c2696e1a624e6e9e429bdea7d60710.jpeg

下面博主小飞给出任意位宽的格雷码转二进制verilog代码:

0d788a48b40b405ebc1f06b9ca04dfcd.jpeg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值