Verilog宏
Verilog对宏的定义如下:
定义的宏稍后将被引用,如下所示:
如果(请求=='TESTEQ1)
“ifdef”和“endif”构造执行以下操作:
•确定是否定义了宏。
•定义条件编译。
如果定义了“ifdef”调用的宏,则编译该代码。
•如果尚未定义宏,则编译'else命令后面的代码。
•'else不是必需的,但'endif必须完成条件语句。
使用Verilog宏命令行选项定义(或重新定义)Verilog宏。
•Verilog宏允许您在不修改HDL源代码的情况下修改设计。
•Verilog Macros可用于IP核心生成和流量测试
包括文件
Verilog允许您将HDL源代码分离到多个文件中。要引用中的代码另一个文件,在当前文件中使用以下语法。
`include<要包含的路径/文件>
前一行获取要包含的文件的内容,并将其全部插入当前文件中带有`include。
路径可以是相对路径,也可以是绝对路径。在相对路径的情况下,Verilog编译器在两个不同的位置查找要包含的文件。
•第一个是相对于带有`include语句的文件。编译器在那里查看,如果它可以找到文件,并在那里插入文件的内容。
•它看起来的第二个位置是相对于Verilog选项中的-include_dirs选项部分。
同一Verilog文件中允许使用多个`include语句。
行为Verilog评论
行为Verilog注释类似于C++等语言中的注释。
单行注释
单行注释以双正斜杠(//)开头。
//这是一条单行评论。
多行块注释
多行块注释以/*开头,以*/结尾。
/*这是一个多行注释。
*/
生成语句
行为Verilog生成语句:
•允许您创建:
○ 参数化和可扩展代码。
○ 重复的或可扩展的结构。
○ 以满足特定标准为条件的功能。
•在Verilog阐述过程中解决。
•有条件地实例化到您的设计中。
•在模块范围内进行了描述。
•从generate关键字开始。
•以endgenerate关键字结束。
使用Generate语句创建的结构
可能使用generate语句创建的结构包括:
•基元或模块实例
•初始块或始终程序块
•连续任务
•净声明和变量声明
•参数重新定义
•任务或功能定义
支持的生成语句
Vivado synthesis支持所有Behavioral Verilog生成语句:
•生成循环(为生成)
•生成条件(如果为其他则生成)
•生成案例(生成案例)
生成循环语句
使用generate for循环可以创建一个或多个可以放置在模块内的实例。
使用generate for循环的方式与使用普通Verilog for循环的方法相同,如下所示
局限性
•generate for循环索引有一个genvar变量。
•for循环控制中的赋值是指genvar变量。
•for循环的内容由begin和end语句括起来。
•begin语句使用唯一限定符命名。
生成条件语句
generate-if-else语句有条件地控制生成哪些对象。
•if-else语句的每个分支都由begin和end语句括起来。
•begin语句使用唯一限定符命名。
生成条件语句编码示例
此编码示例实例化了基于数据字的宽度。
生成案例陈述
generate case语句有条件地控制在哪些对象下生成条件
•generate case语句中的每个分支都由begin和end语句括起来。
•begin语句使用唯一限定符命名。
行为Verilog生成案例说明编码示例
此编码示例实例化了基于数据字的宽度。