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