zoukankan      html  css  js  c++  java
  • 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实现。

  • 相关阅读:
    Ubuntu下Anaconda3的安装
    在Ubuntu上安装微信
    HTTP Response Code 中文详解
    urllib.parse.urldefrag(url)的解释
    极大似然估计
    多序列比对后可视化之texshade
    Musle比对软件(windows)
    windows本地blast
    绘制pathway富集散点图
    计算相关性系数
  • 原文地址:https://www.cnblogs.com/chip/p/5084418.html
Copyright © 2011-2022 走看看