Verilog语法generate_for的使用

目录

一、generate简介

二、generate_for循环语句

三、总结


一、generate简介

Verilog中的generate语句常用于编写可配置的、可综合的RTL的设计结构。它可用于创建模块的多个实例化,或者有条件的实例化代码块。generate有多种用法,一个是构造条件generate结构,用来在多个块之间最多选择一个代码块,条件generate结构包含if--generate结构和case--generate形式。常用的generate_for语句类似于c语言中常用for语句。

二、generate_for循环语句

  • 必须使用genvar申明一个正整数变量,用作for循环的判断。(genvar是generate语句中的一种变量类型,用在generate_for中声明正整数变量。)genvar声明的索引变量被用作整数用来判断generate循环。genvar声明可以是generate结构的内部或外部区域,并且相同的循环索引变量可以在多个generate循环中,只要这些环不嵌套。genvar只有在建模的时候才会出现,在仿真时就已经消失了。
  • 需要复制的语句必须写到begin_end语句里面。
  • begin_end需要有一个类似于模块名的名字,Verilog中generate循环中的generate块可以命名也可以不命名。如果已命名,则会创建一个generate块实例数组。如果未命名,则有些仿真工具会出现警告,因此,最好始终对它们进行命名。

我们来看个关于generate循环的例子:

Verilog语法generate_for的使用_第1张图片

 Verilog语法generate_for的使用_第2张图片

三、总结

通常,generate for循环和普通 for循环之间的主要区别在于generate for循环正在为每次迭代生成一个实例。这意味着在上述示例中将始终有2个实例块(与常规循环情况下的1个块相反)。 

 genvar与generate是Verilog 2001才有的,功能非常强大,可以配合条件语句、分支语句等做一些有规律的例化或者赋值等操作,对于提高简洁代码很有帮助,同时也减少了人为的影响。

参考链接:

链接1

链接2

你可能感兴趣的:(verilog,fpga开发,verilog)