Verilog描述——二进制码与格雷码的转换

BIN_GRAY_EX

二进制码和格雷码的相互转换。

bin2gray

二进制码转为格雷码(编码):从左右边一位起,一次将每一位与左边一位异或(XOR),做为格雷码对应位的值,最左边一位不变(相当于左边是0)。参考代码如下:

	graycode = binarycode ^ (binarycode >> 1);

gray2bin

格雷码转为二进制码(解码):从左边起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变):

always @ ( graycode ) begin
	for (i=0; i<n-1; i=i+1) begin
		binarycode[i] = ^(graycode>>1);
	end
end

为什么要用格雷码

格雷码属于可靠性编码,是一种错误最小化的编码方式。

它在相邻位之间转换时(例如加一或减一时),只有一位产生变化,大大地减少了由一个状态到下一个状态时的逻辑混淆。

由于这种编码中相邻的两个码组之间只有一位不同,与其他编码同时改变两位或多位的情况相比更为可靠,所以在异步处理或某些状态机编码中会经常使用格雷码。

为什么要转换

格雷码不是权重码,每一位码没有确定的大小,不能直接进行大小和算术运算比较,要经过一次码变化,变成自然二进制码,之后在再进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShareWow丶

前人栽树,分享知识,传播快乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值