检测采样边沿
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 19 课,共 38 课。
一个电平可以在多个周期内保持高电平,而事件脉冲应持续一个周期。存储上一次采样的电平,并将其与当前电平进行比较。这个边沿检测器假设输入已经与此时钟同步;它不是时钟域交叉同步器。
相关代码片段;挑战中提供了周围的声明和连接。
previous <= sig;
rising <= sig & ~previous;旧的存储电平会在采样到电平变化时产生一个脉冲。
比较当前采样级别和之前采样的级别;此检测器只能用于同步输入。
挑战
中等对于已经与 clk 同步的信号 sig,在每次采样到 0 到 1 的跳变时,产生一个已寄存的单周期脉冲。同步 rst 会清除存储的前一电平和脉冲。因此,在非复位状态下的第一个时钟沿,如果 sig 为高电平,就会产生一个脉冲。输出列:pulse。所有控制信号和数据都在每个上升时钟沿之前保持稳定;之后观察结果。
完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在信号稳定后打印输出。它会使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印、延迟或模拟终止操作。预期输出是每次观测一行十进制数值,各值之间用一个空格分隔,行末以换行符结束。
亲手试试
module dut (input clk, input rst, input sig, output reg pulse);
// 用你的设计替换这里的占位内容。
initial pulse = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器