Menu
CoddyTech

条件生成

本课属于 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
endgenerate

parameter 用于选择为此实例构建哪个驱动器。

对常量配置使用 generate-if,对运行时控件使用普通 RTL 选择。

challenge icon

挑战

中等

使用条件式 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
quiz icon自我测试

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

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器