85,Verilog-2005标准篇:generate结构体简介

generate结构体用于有条件地或多重地将生成块例化到模型中。generate块可以是一个或多个模块的集合。generate块不能包含端口声明、参数声明、specify块或 specparam 声明。generate块中允许包含所有其他模块,也包括其他generate结构体。generate结构体使参数值能够影响这个模型的结构,它们还允许对具有重复结构的模块进行更简洁的描述,并使递归模块例化成为可能。

generate结构体有两种:循环(loop generate)结构体条件(conditional generate) 结构体。循环结构体允许将单个generate块多次例化到模型中,条件结构体则包括 if- generate结构体和 case - generate结构体。

generate编译方案是在verilog系统模型的elaboration阶段中进行评估的,而elaboration发生在解析 HDL 代码之后和仿真之前,elaboration阶段包括扩展模块实例、计算参数值、解析module层级名称、建立信号连接以及为仿真模型做初步准备。虽然generate方案使用的语法与行为语句相似,但我们必须认识到它们在仿真时并不执行。它们只在elaboration阶段进行评估,并在仿真开始前确定结果。因此,generate方案中的所有表达式都应是常量表达式,并在elaboration阶段确定。

generate方案在elaboration阶段会产生指定个数的generate块实例。generate块实例在某些方面类似于模块实例,但generate创建了一个新的module层级结构,使generate块中的对象、行为构造和模块实例得以存在。

模块中可以使用关键字 generateendgenerate 来定义generate区域。generate区域是module中可能出现generate结构体的文本跨度,如果使用了generate关键字,它应与 endgenerate 关键字相匹配。

generate结构体的标准语法如下表1所示:

表1:generate标准语法

点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值