VL23 格雷码计数器

描述

实现4bit位宽的格雷码计数器。 

电路的接口如下图所示。

输入描述:

   input   clk,
   input   rst_n

输出描述:

   output  reg [3:0] gray_out

题解主体

格雷码计数器,分为三部分进行设计,格雷码转二进制、加法器、二进制转格雷码。 

格雷码转二进制将格雷码转换为二进制,并将值输出用于加法器进行加法运算,然后将加法运算结果通过二进制转格雷码转换为格雷码,最后将格雷码进行输出,同时将结果输出到格雷码转二进制作为输入,形成一个计数功能。 

格雷码转二进制码的基本思路:

格雷码转二进制是从左边第二位起,将每位与左边一位二进制码的值异或,作为该位二进制码后的值(最左边一位依然不变)。

二进制码转格雷码的基本思路:

从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变。 

Verilog代码描述如下:

module gray_counter(

   input   clk,

   input   rst_n,

   output  reg [3:0] gray_out

);

//格雷码转二进制

reg  [3:0] bin_out;

wire [3:0] gray_wire;

always @(posedge clk or negedge rst_n)begin

   if(rst_n == 1'b0) begin

      bin_out <= 4'b0;

   end

   else begin

      bin_out[3] = gray_wire[3];

      bin_out[2] = gray_wire[2]^bin_out[3];

      bin_out[1] = gray_wire[1]^bin_out[2];

      bin_out[0] = gray_wire[0]^bin_out[1];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值