格雷碼與二進位制之間轉換及VHDL實現

2021-09-10 17:16:43 字數 1980 閱讀 9533

格雷碼,又叫迴圈二進位製碼或反射二進位製碼,格雷碼是我們在工程中常會遇到的一種編碼方式,它的基本的特點就是任意兩個相鄰的**只有一位二進位制數不同,這點在下面會詳細講解到。格雷碼的基本特點就是任意兩個相鄰的**只有一位二進位制數不同,這點很重要。常用的二進位制數與格雷碼間的轉換關係如下表:

十進位制數

自然二進位制數

格雷碼十進位制數

自然二進位制數

格雷碼0

0000

0000

81000

1100

10001

0001

91001

1101

20010

0011

101010

1111

30011

0010

111011

1110

40100

0110

121100

1010

50101

0111

131101

1011

60110

0101

141110

1001

70111

0100

151111

1000

二進位製碼轉換成二進位制格雷碼,其法則是保留二進位製碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進位製碼的高位與次高位相異或,而格雷碼其餘各位與次高位的求法相類似。

vhdl實現:

function bin_to_gray_conv (

binary : in std_logic_vector(data_width - 1 downto 0)) return std_logic_vector is

variable bin_to_gray_conv : std_logic_vector(data_width - 1 downto 0);

begin

bin_to_gray_conv := '0' & binary(data_width - 1 downto 1) xor binary;

return (bin_to_gray_conv);

end function bin_to_gray_conv;

二進位制格雷碼轉換成二進位製碼,其法則是保留格雷碼的最高位作為自然二進位製碼的最高位,而次高位自然二進位製碼為高位自然二進位製碼與次高位格雷碼相異或,而自然二進位製碼的其餘各位與次高位自然二進位製碼的求法相類似。

vhdl實現:

function gray_to_bin_conv (

gray : in std_logic_vector(data_width - 1 downto 0)) return std_logic_vector is

variable i : integer;

variable gray_to_bin_conv : std_logic_vector(data_width - 1 downto 0);

begin

gray_to_bin_conv(data_width - 1) := gray(data_width - 1);

i := data_width - 2;

while (i >= 0) loop

gray_to_bin_conv(i) := gray_to_bin_conv(i + 1) xor gray(i);

i := i - 1;

end loop;

return (gray_to_bin_conv);

end function gray_to_bin_conv;

格雷碼二進位制轉換

在結構光編碼方法中,有一種格雷碼編碼方法 與二進位制編碼方法相比,格雷碼編碼方法能夠更好的乙隻雜訊干擾,方便糾錯。用格雷碼對三維測量空間進行編碼,在解碼時需要將格雷碼在此轉換成二進位制,方便計算。實現 如下 unsigned binarytogray unsigned num 將二進位制值右移一位,...

格雷碼與二進位製碼的轉換

gray code是1880年由法國工程師jean maurice emlle baudot發明的一種編碼,是一種絕對編碼方式,典型格雷碼是一種具有反射特性和迴圈特性的單步自補碼,它的迴圈 單步特性消除了隨機取數時出現重大誤差的可能,它的反射 自補特性使得求反非常方便。格雷碼屬於可靠性編碼,是一種錯...

格雷碼與二進位制的轉換

格雷碼,又叫迴圈二進位製碼或反射二進位製碼,格雷碼是我們在工程中常會遇到的一種編碼方式,它的基本的特點就是任意兩個相鄰的 只有一位二進位制數不同,這點在下面會詳細講解到。格雷碼的基本特點就是任意兩個相鄰的 只有一位二進位制數不同,這點很重要。常用的二進位制數與格雷碼間的轉換關係如下表 1 二進位製碼...