条件生成
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 14 课,共 38 课。
generate-if 使用常量 parameter 选择硬件结构。对于给定的实例,只会展开一个分支。过程式 if 或使用信号的条件表达式会在运行时选择行为;它不能替代 generate 配置。
相关摘录;挑战中提供了周围的声明和连接。
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateparameter 用于选择为此实例构建哪个驱动器。
对常量配置使用 generate-if,对运行时控件使用普通 RTL 选择。
挑战
中等使用条件式 generate:MODE=0 时,a 保持不变;MODE=1 时,a 的 8 个位全部取反。输入 b 未使用。MODE 的值为 0 或 1。testbench 会实例化这两种配置,并先输出 y0,再输出 y1。
完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输出稳定后打印输出。它使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印、延迟或模拟终止操作。预期输出是每次观测对应一行十进制值,值之间用一个空格分隔,行末以换行符结束。
亲手试试
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器