📄 geryandbin.txt
字号:
二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);
格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)
//***********************************************************************//
//***************************如下实例:*******************************//
====================================
1010
要将它变为自然二进制:
0 与第四位 1 进行异或结果为 1
上面结果1与第三位0异或结果为 1
上面结果1与第二位1异或结果为 0
上面结果0与第一位0异或结果为 0
因此最终结果为:1100,这就是二进制码即十进制12;
verilog Code:(gray to binary)
法一:
always @ (graycode)
begin
for(i=0;i<=n-1;i=i+1)
binarycode[i]=^(graycode>>i);//比较浪费空间
end
法二:
always @ (graycode)
begin
binarycode[n-1]=graycode[n-1];
for(i=1;i<=n-1;i=i+1)
binarycode[i-1]=graycode[i-1] ^ binarycode[i];//比较节省空间
end
====================================
1100
要将它变为格蕾码:
第一位0与其左位异或结果为0
第二位0与其左位异或结果为1
第三位1与其左位异或结果为0
第四位1保留结果为1
因此最终结果为:1010,也就是原始的格蕾码。
verilog Code:(bianry to gray)
binarycode=graycode^(graycode>>1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -