首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数字电路格雷码与二进制转化

数字电路格雷码与二进制转化

本帖最后由 look_w 于 2017-9-22 21:27 编辑

格雷码相邻数字间只相差一位,那么这样就可以做到比较低功耗。           FIFO中一般使用Gray code去表示地址。Gray码有反射特性和自补特性,它的循环和单步特性消除了随机数出现重大错误的可能性。

           转换关系:
           二进制转格雷码:

           G[ n-1 ] = b[ n - 1 ]     (最高位的转化)
           G[ i ] = b & b[ i+1 ]
          格雷码转二进制:
           b[ n-1 ] = G[ n-1 ]
           b[ i ] = G[ i ] ^ G[ i+1 ] ^ .....^G[ n -1 ]

                    = G[ i ] ^ b[ i + 1 ]


代码:
Gray->Binary



  • module Gray_to_Binary(
  •     iBin,
  •     oGray
  •     );
  •     input   wire[8:0]  iBin;
  •     output reg[8:0]  Gray;
  •     always@(*)begin
  •         oGray[8] <= iBin[8];
  •         oGray[7] <= iBin[7]^iBin[8];
  •         oGray[6] <= iBin[6]^iBin[7];
  •         oGray[5] <= iBin[5]^iBin[6];
  •         oGray[4] <= iBin[4]^iBin[5];
  •         oGray[3] <= iBin[3]^iBin[4];
  •         oGray[2] <= iBin[2]^iBin[3];
  •         oGray[1] <= iBin[1]^iBin[2];
  •         oGray[0] <= iBin[0]^iBin[1];
  •     end
  • endmodule

Binary->Gray[java] view plain copy


  • module Gray_to_Binary(
  •     iBin,
  •     oGray
  •     );
  •     input   wire[8:0]  oGray;
  •     output reg[8:0]  Gray;
  •     always@(*)begin
  •         iBin[8] <= oGray[8];
  •         iBin[7] <= oGray[7]^iBin[8];
  •         iBin[6] <= oGray[6]^iBin[7];
  •         iBin[5] <= oGray[5]^iBin[6];
  •         iBin[4] <= oGray[4]^iBin[5];
  •         iBin[3] <= oGray[3]^iBin[4];
  •         iBin[2] <= oGray[2]^iBin[3];
  •         iBin[1] <= oGray[1]^iBin[2];
  •         iBin[0] <= oGray[0]^iBin[1];
  •     end
  • endmodule
返回列表