← 数字IC设计经典笔试题

推荐答案 测试一下

设计输入。Verilog或VHDL编写代码。

编程题 中等 笔试真题

参考答案

参考答案:设计一个通用的输入同步与边沿检测模块。Verilog代码如下: ```verilog module input_sync_edge ( input wire clk, input wire rst_n, input wire async_in, output wire pos_edge, output wire neg_edge, output wire sync_out ); reg [1:0] sync_reg; always @(posedge clk or negedge rst_n) begin if (!rst_n) sync_reg <= 2'b00; else sync_reg <= {sync_reg[0], async_in}; end assign sync_out = sync_reg[1]; reg sync_prev; always @(posedge clk or negedge rst_n) begin if (!rst_n) sync_prev <= 1'b0; else sync_prev <= sync_out; end assign pos_edge = sync_out & ~sync_prev; assign neg_edge = ~sync_out & sync_prev; endmodule ``` 解析:该模块实现异步输入信号的同步化及边沿检测。两级触发器(sync_reg)构成经典同步器,降低亚稳态传播概率。第三级触发器(sync_prev)延迟一拍,通过异或逻辑产生上升沿和下降沿脉冲。 考点:1. 同步器级数(至少两级)与亚稳态概率关系;2. 边沿检测的组合逻辑实现;3. 复位同步问题(异步复位同步释放虽未体现,但常考);4. 避免在同步链中使用组合逻辑反馈;5. 输入信号需满足setup/hold时间,仿真时需加延迟模型。 易错点:1. 将同步器输出直接用于组合逻辑,忽略建立时间;2. 同步器寄存器复位值未与逻辑对应;3. 边沿检测使用了非阻塞赋值但漏写触发器;4. 忽略了异步复位对亚稳态抑制的影响;5. 认为一级触发器足够消除亚稳态。 若题目要求VHDL:类似架构,使用std_logic_vector(1 downto 0)构成移位寄存器。核心原理相同,语言语法不同。

涉及知识点

  • Verilog
  • verilog
  • 组合逻辑
  • 复位
  • setup
← 上一题
登录后反馈错题
下一题 →