← 美满电子——李锐博恩

推荐答案 测试一下

画出四位格雷码计数器状态转移图并写出设计代码?

题目配图 题目配图
编程题 中等 笔试真题

参考答案

四位格雷码计数器状态转移图:从初始状态0000开始,依次经历0001→0011→0010→0110→0111→0101→0100→1100→1101→1111→1110→1010→1011→1001→1000,最后回到0000,构成一个16状态的循环。每个相邻状态之间只有一位二进制位发生变化,体现了格雷码的典型特征。 设计代码(Verilog实现):采用二进制计数器加二进制转格雷码转换器的方式,简洁且易于综合。 ```verilog module gray_counter_4bit ( input clk, input rst_n, output reg [3:0] gray ); reg [3:0] bin; always @(posedge clk or negedge rst_n) begin if (!rst_n) bin <= 4'b0; else bin <= bin + 1'b1; end assign gray = bin ^ (bin >> 1); // 二进制转格雷码 endmodule ``` 也可直接使用状态机实现格雷码跳转,但上述方法代码量更少且可读性强。 易错点:1) 格雷码转换公式错误,常见误区是使用`gray = bin + (bin>>1)`(应使用异或);2) 状态转移图中相邻状态变化位数多于1位;3) 复位后初始状态未设置为0000;4) 未能理解格雷码计数器本质是16个状态循环,而非8状态或混淆二进制顺序。

涉及知识点

  • Verilog
  • 综合
  • verilog
  • 状态机
  • 复位
← 上一题
登录后反馈错题
下一题 →