← 2024 · NVIDIA · ASIC Design Intern(上海) 笔试

推荐答案 测试一下

Implement a module to delay a 1-bit sequence by 16 cycles:

编程题 中等 2024秋招笔试真题Online AssessmentNVIDIA ASIC Design I

参考答案

实现一个1位序列延迟16个时钟周期的模块,通常采用移位寄存器结构。输入信号din在时钟上升沿被移入寄存器的低位,同时寄存器整体左移一位,最高位作为输出dout。这样每个时钟周期输入数据会经过16级寄存器,从而实现16个周期的延迟。典型Verilog实现如下: module delay_16 ( input clk, input rst_n, input din, output reg dout ); reg [15:0] shift_reg; always @(posedge clk or negedge rst_n) begin if (!rst_n) shift_reg <= 16'b0; else shift_reg <= {shift_reg[14:0], din}; end assign dout = shift_reg[15]; endmodule 关键要点:使用非阻塞赋值保证移位操作正确;复位将寄存器清零,避免不确定状态;输出直接取自寄存器最高位。若需更低延迟可用异步复位,同步清零也可。注意输入与时钟同步,单比特无需额外握手。易错点:错误使用阻塞赋值导致组合反馈;忘记复位;寄存器位数误设为15位导致延迟周期数不对;将输出直接连到输入通过组合逻辑(如assign dout = ...)而非寄存器输出。本设计满足要求,延迟精确为16个时钟周期。

涉及知识点

  • 移位寄存器实现同步延迟
  • 非阻塞赋值在时序逻辑中的使用
  • 同步复位与异步复位设计
  • 时序电路中寄存器级数与延迟周期关系
  • Verilog模块端口与实例化规范
← 上一题
登录后反馈错题
下一题 →