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实现。

  • 相关阅读:
    Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)
    Git 命令 操作
    vim常用快捷键
    离线数据分析流程介绍
    WebPack 简单使用
    React Native之React速学教程(下)
    puppet 部署 horizon server 所需的参数和部署逻辑
    jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
    12款优秀的 JavaScript 日历和时间选择控件
    mysql 去重
  • 原文地址:https://www.cnblogs.com/chip/p/5084418.html
Copyright © 2011-2022 走看看