← 2022 · 大疆创新 笔试

推荐答案 测试一下

预设clk为周期为10ns的时钟,以下选项中能正确特clk延时8ns的clk_dly信号是:

A、assign#8nsclk_dly-clk B、assign #8ns clk_dly<-clk C、a???@(clk) begin clk_dly-#8ns clk end D、always@(clk)begin clk_dly<=#8ns clk;end
单选题 中等 笔试真题单选

参考答案

正确选项:D。选项A语法错误,'assign#8nsclk_dly-clk'中缺少等号,且使用'-'符号错误,正确写法应为'assign #8ns clk_dly = clk;'。选项B中'<-'不是Verilog合法运算符,应为'='或'<='。选项C中存在非法字符'a???',且@(clk)后缺少过程块结构,无法构成合法语句。选项D使用always@(clk)敏感列表,每次clk变化时执行begin-end块,通过非阻塞赋值'<='结合延时控制'#8ns',将clk当前值延时8ns后赋给clk_dly。由于clk周期为10ns,延时8ns小于周期,不会与下一周期clk变化冲突,因此可正确生成延迟8ns的clk_dly信号。注意:非阻塞赋值中的延时是相对赋值时刻的延时,即当前clk值在8ns后更新clk_dly,而敏感列表@(clk)确保每次clk跳变(上升沿或下降沿)时采样并计划延时赋值,因此clk_dly每10ns变化一次,且相对clk边沿延迟8ns。

涉及知识点

  • Verilog中延时控制符#的使用
  • 非阻塞赋值与阻塞赋值的区别
  • always块敏感列表的触发机制
  • 硬件描述语言中信号延迟生成的常见错误
← 上一题
登录后反馈错题
下一题 →