← eetop.cn_Perl语言入门(第四版小骆驼书)

推荐答案 测试一下

3使用简单的模块 ................................ ................................ ................................ ...........…

问答题 中等 经典问答问答题

参考答案

设计一个简单的4位同步复位计数器模块,端口包括时钟clk、同步复位rst_n、计数使能en和计数输出q[3:0]。采用Verilog HDL实现,模块定义如下: module counter ( input clk, input rst_n, input en, output reg [3:0] q ); always @(posedge clk) begin if (!rst_n) q <= 4'b0000; else if (en) q <= q + 1'b1; else q <= q; end endmodule 分析:该模块使用同步复位(rst_n低有效),复位信号与时钟同步,避免异步复位带来的亚稳态问题。计数使能en为高时每时钟上升沿加1,否则保持不变。输出q为reg类型,在always块内赋值。注意使用非阻塞赋值(<=)以保证在同一个时钟沿多个赋值操作的正确顺序。若需要可加载初始值,可增加数据输入端口和加载控制信号。该设计体现了模块化、参数化思想,可扩展为任意位宽计数器。易错点:忘记将输出声明为reg、在多个always块中对同一变量赋值、漏掉else分支导致综合出锁存器、复位极性混淆等。

涉及知识点

  • 模块端口定义与数据类型
  • 同步复位与异步复位区别
  • 阻塞赋值与非阻塞赋值规则
  • 时序逻辑always块写法
  • 避免综合出锁存器
← 上一题
登录后反馈错题
下一题 →