回顾:时序控制
本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 72 课,共 90 课。
挑战
这个挑战会测试你对延迟、门延迟、赋值延迟、时间刻度和时钟生成的理解。
你需要做什么:
- 添加一个
timescale指令,值为1ns / 1ps - 生成一个每隔 5 个时间单位切换一次的时钟
- 添加一个门延迟为 3 个时间单位的 AND 门
- 使用赋值延迟,在 2 个时间单位后将
a赋给b(立即读取a)
亲手试试
// TODO: 添加时间刻度指令(1ns / 1ps)
module timing_challenge;
reg clk;
reg a, b;
wire out;
initial begin
clk = 0;
end
// TODO: 生成每隔 5 个时间单位翻转一次的时钟信号
// TODO: 添加延迟 3 个时间单位的与门(输入为 a、b,输出为 out)
initial begin
$monitor("Time %0t: clk=%b, a=%b, b=%b, out=%b", $time, clk, a, b, out);
a = 1;
// TODO: 使用赋值延迟,在 2 个时间单位后将 a 的值赋给 b
// 现在读取 a,2 个时间单位后将其值赋给 b
#20;
$finish;
end
endmodule基础知识中的所有课
自己练习: Verilog 在线编译器