gray code(格雷码)

//3bits binary to gray code
//-----binary-------to--------gray------
//------000------------------- 000------
//------001--------------------001------
//------010--------------------011------
//------011--------------------010------
//------100--------------------110------
//------101------------------- 111------
//------110--------------------101------
//------111--------------------100------

module bin2gry(
input [2:0]      bin,
input            clk,
input            rstn,
output reg [2:0] gry
);

always@(posedge clk or negedge rstn)begin
  if(!rstn)
    gry[2:0] <= 3'b0;
  else begin
   //gry[i] <= bin[i]^bin[i+1];
    gry[2] <= bin[2];
    gry[1] <= bin[1]^bin[2];
    gry[0] <= gry[0]^bin[1];
  end
end



endmodule


//3bits gray to binary
//000   --->      000
//001   --->      001
//011   --->      010
//010   --->      011
//110   --->      100
//111   --->      101
//101   --->      110
//100   --->      111

module gry2bin(
         input clk,
         input rstn,
         input [2:0] gry,
         output reg [2:0] bin
              );

always@(posedge clk or negedge rst)begin
   if(!rstn)
     bin[2:0] <= 3'b0;
   else begin
     bin[2] <= gry[2];
     bin[1] <= bin[2]^ gry[1];
     bin[0] <= bin[1]^ gry[0];
   end
end
endmodule

 

      在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。

1.特点

    1.1 相邻码只有一位二进制不同。镜像对称 ,可靠性高。相邻码不会有多bit变化,否则数字电路中可能产生不必要的脉冲或者状态(若状态机编码)。

    1.2 最大数与最小数之间也仅有一位数不同。循环码 ,卡诺图有关联。

    1.3绝对编码方式

    1.4变权码

    1.5绝对编码方式的准权码

    1.6格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同。 

2.格雷码表

3.转行方法(b2g/g2b)

 


觉得GRAY CODE 最主要的:

 1.相邻状态跳转有且只有一位翻转。

 2.binary2gray 和gray2binary 的code实现。

 

转载于:https://www.cnblogs.com/chip/p/5084418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值