1原题复现
2解题
通过学习他人的博客之后,了解到本题的考察点是关于generate endgenerate 用来例化模块的语法知识点:
重新复习一下generate的循环语法:
1.在使用generate循环语法时候,必须现在genvar中声明循环中所使用到的索引变量名,然后才能使用generate块。 因为genvar声明的索引变量被利用作为整数在generate中来判断循环 一般将genvar声明放在generate过程块的外部区域,并且相同的循环索引变量可以在多个generate中使用。
代码
第二种用法:
把在generate外部的实例,也放到generate里面去
generate
generate的相关的语法
1.定义genvar,作为generate中的循环变量
2.generate语句中定义的for语句,必须要有begin,为后续增加标签做准备。
3.begin必须要有名称,也就是必须要有标签,因为标签会作为generate循环的实例名称。
4.可以使用在generate语句中的类型主要有:
module(模块)
- UDP(用户自定义原语)
- 门级原语
- 连续赋值语句
- initial或always语句
- 一般对应于generate的用法的结构基本如下:
genvar 循环变量名;
generate
// generate循环语句
// generate 条件语句
// generate 分支语句
// 嵌套的generate语句
endgenerate
下面将就generate常用的几种情况举例说明。
1.generate-loop语句
2.generate-条件语句
3.generate-case分支语句
generate-case分支语句与generate-条件语句类似,只不过将原来的分支语句换做了case语句。
关于generate的总结部分,摘自博客
https://blog.csdn.net/BBS_vip/article/details/46653749