前言
Verilog中的if或者case语句十分简单,但确实十分重要,我们的逻辑设计可以说一定离不开它,我们时时刻刻使用它,我们使用它进行建模,通常对应的是多路选择器这样的硬件单元或者变种。
我们通常将if语句或者case语句与generate语句中的generate if与generate case语句相比较,因为都有if和case,实在太像了,但是它们之间其实有着本质的区别,本系列前面的generate有关的文章就讲到过,generate if的条件是常量,它综合出来的语句其实就是分支中的一条,满足if条件的那一条,而if语句综合出来的电路,则每个分支都包含在内,是一个选择的关系。
而且generate语句一般在always块外部,它用于判断哪个块有效,例如:
// Use a parameter to control our build
parameter debug_build = 0;
// Conditionally generate a counter
generate
if (debug_build) begin
// Code for the counter
always @(posedge clock, posedge reset) begin
if (reset) begin
count <= 4'h0;
end
else begin
count <= count + 1;
end
end
end