独热码验证
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 3 课,共 38 课。
独热数据中恰好有一个置位位。解码器会生成这类数据,而验证会在使用输入数据前对其进行检查。对于已知的二进制值,当 bits & (bits - 1) 为零时,非零值就是独热值。本单元不会用这个快捷方法来判断 X 或 Z。
相关摘录;挑战中提供了周围的声明和连接。
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);非零检查会排除空闲状态;位运算技巧会排除多个置位的情况。
验证请求时,区分零个、恰好一个和多个置位。
挑战
中等对于已知的 4 位输入 bits,仅当恰好有一位为高电平时,才将 valid 设为有效。结合非零检查和 bits & (bits - 1) 使用。输出列:valid。所有激励值都是已知的二进制值。
完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在信号稳定后打印输出。它会使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印语句、延迟或仿真终止语句。预期输出为每次观测一行十进制值,值之间用一个空格分隔,并以换行符结尾。
亲手试试
module dut (input [3:0] bits, output valid);
// 用你的设计替换这个占位内容。
assign valid = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器