格雷码如何转换成二进制 (格雷码二进制转换器)

2023-03-04 5:07:51 密码用途 思思

最左边一位依然不变依次异或,直到最低位。依次异或转换后的值就是格雷码转换 后的二进制值。

 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。

典型的二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中。

法国电讯工程师波特(Jean-Maurice-Émile Baudot,18450911-19030328)在1880年曾用过的波特码相当于它的一种变形。1941年George Stibitz设计的一种8元二进制机械计数器正好符合格雷码计数器的计数规律。

二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。

数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。

格雷码与二进制之间的转换

module bin_to_gray(bin,gray);

parameterSIZE = 4;

input[SIZE-1:0] bin;

output[SIZE-1:0] gray;

assign gray= {1’b0,bin[SIZE -1:1]} ^ bin;

endmodule

module gray_to_bin(bin,gray);

parameterSIZE = 4;

input[SIZE-1:0] gray;

output[SIZE-1:0] bin;

reg[SIZE-1:0] bin;

integer i;

always@(gray)

for(i=0;i=SIZE-1;i=i+1)

bin[i]=^(grayi);

//bin[i]=^{{i{1’b0}},gray[SIZE -1:i]}

endmodule

什么是“格雷码”?

格雷码就是一种可靠性编码。在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码,另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码。在数字系统中,常要求代码按一定顺序变化。

例如,按自然数递增技术,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其他代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。

扩展资料:

格雷码发展历史:

格雷码(Gray Code)因Frank Gray 1947年申请、1953年获得批准的专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换中。法国工程师Jean-Maurice-Eacute;mlle Baudot在1880年曾用过的波特码是典型格雷码的一种变形。1941年George Stibitz设计过一种8元格雷码计数器。

格雷码的优点:

1、格雷码是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。

格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。

由于这种编码相邻的两个码组之间只有一位不同,因而在用于风向的转角位移量-数字量的转换中,当风向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。

2、格雷码是一种变权码,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。

解码的方法是用‘0’和采集来的4位格雷码的最高位(第4位)异或,结果保留到4位,再将异或的值和下一位(第3位)相异或,结果保留到3位,再将相异或的值和下一位(第2位)异或,结果保留到2位,依次异或,直到最低位,依次异或转换后的值(二进制数)就是格雷码转换后自然码的值.

参考资料:百度百科-格雷码

格雷码转二进制公式

格雷码转二进制公式:二进位码第n位=二进位码第(n+1)位+格雷码第n位。因为二进位码和格雷码皆有相同位数,所以二进位码可从最高位的左边位元取0,以进行计算。