自然二进制与格雷码的转换

自然二进制:Bn-1Bn-2….B2B1B0

格雷码      :Gn-1Gn-2…G2G1G0

自然二进制转格雷码公式: Gi = Bi ,i = n-1

                                              Gi = Bi xor Bi+1 ,i = 0:n-2

格雷码转自然二进制:Bi = Gi,i = n-1

                                      Bi-1 = Gi-1 xor Bi,i = 1:n-1

 一般的,普通二进制码与格雷码可以按以下方法互相转换: 
  二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR)(http://bk.7tmusic.com/lemma-php/dispose/view.php/379209.htm),作为对应格雷码该位的值,最左边一位不变(相当于左边是0); 
  格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变).

 

modele bin2gry(Gry,Bin)
parameter length = 8;
output [length-1:0] Gry;
input [length-1:0] Bin;

reg [length-1:0] Gry;
integer i;

always @ (Bin)
begin
    for(i=0;i<length-1;i++)
        Gry[i]=Bin[i]^Bin[i+1];
    Gry[i]=Bin[i];
end
endmodule

 

modele gry2bin(Gry,Bin)
parameter length = 8;
output [length-1:0] Gry;
input [length-1:0] Bin;

reg [length-1:0] Bin;
integer i;
always @ (Gry)
begin   
    Bin[length-1]=Gry[length-1];   
    for(i=length-2;i>=0;i--)       
        Bin[i]=Bin[i+1]^Gry[i];
end
endmodule

转载于:https://www.cnblogs.com/lueguo/p/3357031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值