格雷碼的特點(diǎn):相鄰的兩個(gè)碼組之間僅有一位不同。
普通二進(jìn)制碼與格雷碼之間可以相互轉(zhuǎn)換。下面將作簡(jiǎn)要的介紹。
8位二進(jìn)制碼轉(zhuǎn)格雷碼
二進(jìn)制碼轉(zhuǎn)換為格雷碼:從最右邊一位起,一次與左邊一位“異或”,作為對(duì)應(yīng)格雷碼該位的值,最左邊的一位不變(相當(dāng)于最左邊是0)。
1 modele bin2gry(Gry,Bin)
2 parameter length =
8;
3 output [length-
1:
0] Gry;
4 input [length-
1:
0] Bin;
5 6 reg [length-
1:
0] Gry;
7 integer i;
8 9 always @ (Bin)
10 begin
11 for(i=
0;i<length-
1;i++)
12 Gry[i]=Bin[i]^Bin[i+
1];
13 Gry[i]=Bin[i];
14 end
15 endmodule
8位格雷碼轉(zhuǎn)二進(jìn)制碼
格雷碼轉(zhuǎn)換為二進(jìn)制碼:從左邊第二位起,將每一位與左邊一位解碼后的值“異或”,作為該解碼后的值(最左邊的一位依然不變)。
1 modele gry2bin(Gry,Bin)
2 parameter length =
8;
3 output [length-
1:
0] Gry;
4 input [length-
1:
0] Bin;
5 6 reg [length-
1:
0] Bin;
7 integer i;
8 always @ (Gry)
9 begin
10 Bin[length-
1]=Gry[length-
1];
11 for(i=length-
2;i>=
0;i--)
12 Bin[i]=Bin[i+
1]^Gry[i];
13 end
14 endmodule