Menu
CoddyTech

检测采样边沿

本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 19 课,共 38 课。

一个电平可以在多个周期内保持高电平,而事件脉冲应持续一个周期。存储上一次采样的电平,并将其与当前电平进行比较。这个边沿检测器假设输入已经与此时钟同步;它不是时钟域交叉同步器。

相关代码片段;挑战中提供了周围的声明和连接。

previous <= sig;
rising <= sig & ~previous;

旧的存储电平会在采样到电平变化时产生一个脉冲。

比较当前采样级别和之前采样的级别;此检测器只能用于同步输入。

challenge icon

挑战

中等

对于已经与 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器