Verilog宏、`include<要包含的路径/文件>

Verilog宏

Verilog对宏的定义如下:

'define TESTEQ1 4'b1101

定义的宏稍后将被引用,如下所示:

如果(请求=='TESTEQ1)

“ifdef”和“endif”构造执行以下操作:

•确定是否定义了宏。

•定义条件编译。

如果定义了“ifdef”调用的宏,则编译该代码。

•如果尚未定义宏,则编译'else命令后面的代码。

•'else不是必需的,但'endif必须完成条件语句。

使用Verilog宏命令行选项定义(或重新定义)Verilog宏。

•Verilog宏允许您在不修改HDL源代码的情况下修改设计。

•Verilog Macros可用于IP核心生成和流量测试

Macro Example One
'define myzero 0
assign mysig = 'myzero;
Macro Example Two
'ifdef MYVAR
module if_MYVAR_is_declared;
...
endmodule
'else
module if_MYVAR_is_not_declared;
...
endmodule
'endif

包括文件

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 Loop Statement 8-Bit Adder Example
generate genvar i;
for (i=0; i<=7; i=i+1)
begin : for_name
adder add (a[8*i+7 : 8*i], b[8*i+7 : 8*i], ci[i], sum_for[8*i+7 : 8*i],
c0_or[i+1]);
end
endgenerate

生成条件语句

generate-if-else语句有条件地控制生成哪些对象。

•if-else语句的每个分支都由begin和end语句括起来。

•begin语句使用唯一限定符命名。

生成条件语句编码示例

此编码示例实例化了基于数据字的宽度。

generate
if (IF_WIDTH < 10)
begin : if_name
multiplier_imp1 # (IF_WIDTH) u1 (a, b, sum_if);
end
else
begin : else_name
multiplier_imp2 # (IF_WIDTH) u2 (a, b, sum_if);
end
endgenerate

生成案例陈述

generate case语句有条件地控制在哪些对象下生成条件

•generate case语句中的每个分支都由begin和end语句括起来。

•begin语句使用唯一限定符命名。

行为Verilog生成案例说明编码示例

此编码示例实例化了基于数据字的宽度。

generate
case (WIDTH)
1:
begin : case1_name
adder #(WIDTH*8) x1 (a, b, ci, sum_case, c0_case);
end
2:
begin : case2_name
adder #(WIDTH*4) x2 (a, b, ci, sum_case, c0_case);
end default:
begin : d_case_name
adder x3 (a, b, ci, sum_case, c0_case);
end
endcase
endgenerate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL性能优化-数据库调优有哪些维度可以选择

数据库调优的目标 简单来说&#xff0c;数据库调优的目的就是要让数据库运行得更快&#xff0c;也就是说响应的时间更快&#xff0c;吞吐量更大。 不过随着用户量的不断增加&#xff0c;以及应用程序复杂度的提升&#xff0c;我们很难用“更快”去定义数据库调优的目标&#…

windows常用命令总结

Windows常用命令总结如下&#xff1a; 系统管理与维护&#xff1a; shutdown&#xff1a;用于关闭或重新启动计算机。例如&#xff0c;shutdown -s -t 60 表示60秒后关机&#xff0c;shutdown -r -t 60 表示60秒后重启。systeminfo&#xff1a;显示关于计算机及其操作系统的详细…

掘根宝典之C语言if,switch,break,continue,逻辑运算符(||,,!),?:运算符

if语句 C语言中的if语句用于执行给定条件下的一部分代码。 if语句的语法如下&#xff1a; if (condition) {// code to be executed if condition is true }在这里&#xff0c;condition是一个表达式&#xff0c;如果为真&#xff0c;则执行if语句块中的代码。如果条件为假&…

蓝桥集训之重新排序

蓝桥集训之重新排序 核心思想&#xff1a;差分 利用差分 在一段区间内 最终求和得到每个位置数计算的次数然后分别从大到小排序w[i]和s[i]数组 #include<iostream>#include<algorithm>using namespace std;typedef long long LL;const int N 100010;int w[N],s…

Python并发编程:协程-gevent模块

一 gevent模块 Gevent是一个第三方库&#xff0c;可以轻松通过gevent实现并发同步或异步编程。在gevent中用到的主要模式是Greenlet&#xff0c;它是以C扩展模块形式接入Python的轻量级协程。Greenlet 全部运行在主程序操作系统进程的内部&#xff0c;但它们被协作式地调度。 …

Stable Diffusion ———LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo等版本之间关系现原理详解

前言 2021年5月&#xff0c;OpenAI发表了《扩散模型超越GANs》的文章&#xff0c;标志着扩散模型&#xff08;Diffusion Models&#xff0c;DM&#xff09;在图像生成领域开始超越传统的GAN模型&#xff0c;进一步推动了DM的应用。 然而&#xff0c;早期的DM直接作用于像素空…

cmd模式下启动mysql

1.打开cmd输入services.msc&#xff0c;找到MYSQL&#xff0c;右击属性&#xff0c;找到可执行文件路径&#xff0c;加载到环境变量。 2.打开cmd&#xff0c;启动MYSQL&#xff1a;输入net start mysql; 3.登陆MYSQL&#xff0c;需要管理权限&#xff1b; 输入&#xff1a;my…

HALCON 快速入门手册

HALCON 快速入门手册 1 什么是 HALCON HALCON 是德国 MVtec 公司开发的一套完善的标准的机器视觉算法包&#xff0c;拥有应用广泛 的机器视觉集成开发环境。它节约了产品成本&#xff0c;缩短了软件开发周期——HALCON 灵活的 架构便于机器视觉&#xff0c;医学图像和图像分析应…

Docker容器化解决方案

什么是Docker&#xff1f; Docker是一个构建在LXC之上&#xff0c;基于进程容器的轻量级VM解决方案&#xff0c;实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发&#xff0c;遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

数据链路层----滑动窗口协议的相关计算

目录 1.窗口大小的相关计算 •停等协议&#xff1a; •后退N帧协议&#xff1a; •选择重传协议&#xff1a; 2.信道利用率相关计算 •停等协议的信道利用率&#xff1a; •连续ARQ&#xff08;后退N帧协议&#xff0c;选择重传协议&#xff09;的信道利用率&#xff1a;…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数&#xff0c;用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置&#xff0c;并返回该位置的指针。函数原型如下&#xff1a; char…

你都了解2024程序员拿捏高薪的新方式吗?

2024年&#xff0c;程序员该如何拿高薪呢&#xff1f; 道理是这么讲&#xff0c;那我们到底应该如何去践行呢&#xff1f;以我自身的经验来看&#xff0c;网络接单无疑是我们程序员来钱最快的方式&#xff0c;既可以做到兼顾本职工作和快点搞钱&#xff0c;又可以充分利用好每一…

云解析的高防DNS技术有哪些优势和作用?(国科云)

云解析作为一种更加智能安全的解析技术&#xff0c;开始替代传统解析技术&#xff0c;受到越来越多政府机关和企业的关注和信赖。相比传统解析技术&#xff0c;云解析具备智能解析、健康监测、全局流量管理等技术优点&#xff0c;有效提升DNS解析的效率和精度&#xff0c;而其所…

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境&#xff1a; https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…

信息安全系列04-安全启动介绍

本文框架 1. 基本概念1.1 基本概念回顾1.2 数字签名及验签流程 2. 安全启动实施2.1 信任根选择2.1.1 使用HSM作为信任根2.1.2 使用最底层Bootloader作为信任根 2.2 校验方法确认2.2.1 基于非对称加密算法&#xff08;数字签名&#xff09;2.2.2 基于对称加密算法 2.3 安全启动方…

llvm AST consumer 示例

示例源码 Makefile LLVM_CONFIG ? llvm-config #CXX : clang ifndef VERBOSE QUIET : endifSRC_DIR ? $(PWD) LDFLAGS $(shell $(LLVM_CONFIG) --ldflags) COMMON_FLAGS -Wall -Wextra CXXFLAGS $(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags) LCXX :$(shell $(L…

前端面试题 ===> 【JavaScript - 高级】

公众号&#xff1a;需要以下pdf&#xff0c;关注下方 2023已经过完了&#xff0c;让我们来把今年的面试题统计号&#xff0c;来备战今年的金三银四&#xff01;所以&#xff0c;不管你是社招还是校招&#xff0c;下面这份前端面试工程师高频面试题&#xff0c;请收好。 JavaScr…

【MGR】MySQL Group Replication 中文官方文档

MySQL 组复制官方文档翻译 背景&#xff1a; 由于中文版的官方文档应该是通过谷歌翻译直接进行翻译&#xff0c;读起来晦涩难懂&#xff0c;刚好最近在调研MGR&#xff0c;所以对官方文档进行了翻译&#xff0c;翻译版本是5.7。 翻译的英文官方文档&#xff1a; Chapter 17 …

百度AI千帆大模型示例代码 GO语言版

前端&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Sample</title> </head> <body><label for"textInput">Prompt&#xff1a;</label><i…