FPGA Verilog HDL格雷码的产生

//格雷码地址产生
integer I;
always @( RADDR ) begin
  BNEXT_R[A] = RADDR[A];                          //最左边的一位数保持不变
  for( I = A - 1; I >= 0; I = I - 1 )             //将格雷码转换为普通二进制
     BNEXT_R[I] = RADDR[I] ^ BNEXT_R[I + 1];      //将格雷码其左边第二个起解码后的值按位异或,即相同为0,不同为1
     BNEXT_R = BNEXT_R + 1'b1;                    //普通二进制码自增一
     GNEXT_R = ( BNEXT_R >> 1 ) ^ BNEXT_R;        //BNEXT_R右移一位,与自身异或,得到下一个输出的格雷码
end
其中RADDR是定义的输出地址,寄存器A为地址的长度,寄存器BNEXT_R用于存储解码后二进制码,寄存器GNEXT_R 用于存储运算得到的下一个格雷码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值