推荐答案
测试一下
题目
下面的 verilog代码:
A. 5MHz
B. 10 MHz
C. 100MHz
D. 50MHz
参考答案与知识点
参考答案
正确答案是 A. 5MHz。
代码中 `timescale 1ns/100ps` 设定时间单位为 1ns,精度为 100ps。`#100` 表示延迟 100 个时间单位,即 100ns。`always #100 clk<=~clk` 每 100ns 翻转一次时钟信号,因此时钟周期为 2×100ns=200ns。频率 = 1/周期 = 1/(200×10⁻⁹) = 5×10⁶ Hz = 5MHz。
易错点:1) 误将延时 `#100` 当作时钟周期,从而错选 B.10MHz;2) 忽略 `timescale` 中时间单位与延迟数字的乘法关系;3) 误认精度 100ps 影响延迟计算(精度仅影响仿真舍入,不改变延迟长度)。
涉及知识点
- timescale 指令的含义
- 时钟周期与频率的计算
- always 块中延时语句的执行机制
- 阻塞与非阻塞赋值的区别(本题不涉及)
- 仿真时间单位与延迟数值的乘积关系