什么是生成块
生成块能够动态的生成Verilog的代码,可以用于对矢量中的多个位进行重复操作、多个模块的实例引用并根据程序中的参数确定程序中是否包含哪段代码。生成语句可以控制变量的声明、任务和函数的调用。在编程时,可以使用关键字generate_endgenerate来表明生成块语句的范围。
生成块语句
生成块语句根据功能可以分为三种形式,它们分别是条件、case和循环。
if语句
generate
if(condition)
operation_1
else
operation_2
endgenerate
其中,“condition”是逻辑表达式作为判决条件。当判决条件为真时,就进行“operation_1”操作;否则,进行“operation_2”操作。
case语句
generate
case(constant_express)
value_1:operation_1
value_2:operation_2
....
value_n:operation_n
default:operation_default
endgenerate
循环语句
generate
genvar genvarvar
for(genvarvar=start_value:loop_condition:circle_express)
begin:instant_name
operations
end
endgenerate
在结构中,“start_value”、“loop_condition”、“circle_express”具有和一般for循环的相似。