Behavioral Verilog

news/2024/7/27 10:58:25/文章来源:https://blog.csdn.net/cckkppll/article/details/136462034

行为Verilog

Vivado synthesis支持行为Verilog硬件描述语言(VHDL),除了如另外指出的。

行为Verilog中的变量

•行为Verilog中的变量声明为整数。

•这些声明仅用于测试代码。Verilog提供诸如reg和用于实际硬件描述的导线。

•reg和wire之间的差异取决于变量是否在过程块(reg)或在连续分配(wire)中。

○ reg和wire的默认宽度都是一位(标量)。

○ 要为声明的reg或导线指定N位宽度(矢量),请使用左右位位置用冒号分隔的方括号定义。

○ 在Verilog-2001中,reg和wire数据类型可以是有符号的,也可以是无符号的。

变量声明示例

reg [3:0] arb_priority;
wire [31:0] arb_request;
wire signed [8:0] arb_signed;

初始值

在Verilog-2001中声明寄存器时对其进行初始化。

•初始值:

○ 是一个常数。

○ 不能依赖于早期的初始值。

○ 不能是函数或任务调用。

○ 可以是传播到寄存器的参数值。

○ 指定矢量的所有位。

•当您在声明中将寄存器指定为初始值时,Vivado synthesis会设置此值在全局复位或通电时在寄存器的输出上。

•当以这种方式分配值时:

○ 该值在Verilog文件中作为寄存器上的INIT属性携带。

○ 该值与任何本地重置无关。

将初始值分配给寄存器

将设置/重置(初始)值分配给寄存器。

•当寄存器复位线变为适当值时,将值分配给寄存器。看见下面的编码示例。

•将初始值分配给变量时:

○ 该值被实现为触发器,其输出由本地重置控制。

Initial Values Example One
reg arb_onebit = 1'b0;
reg [3:0] arb_priority = 4'b1011;
Initial Values Example Two
always @(posedge clk) begin
if (rst)
arb_onebit <= 1'b0;
end

Reg和Wire的阵列

Verilog允许reg和wire的阵列。

数组示例一

这个编码示例描述了一个由32个元素组成的数组。每个元素都有4位宽。

reg[3:0]mem_array[31:0];

阵列示例二

该编码示例描述了64个8位宽元素的阵列。这些元素可以是仅在结构Verilog代码中分配。

wire[7:0]mem_array[63:0];

多维阵列

Vivado合成支持最多二维的多维数组类型。

•多维阵列可以是:

○ 任何网络

○ 任何变量数据类型

•使用数组进行代码分配和算术运算。

•一次不能选择数组中的多个元素。

•不能将多维数组传递给:

○ 系统任务或功能

○ 常规任务或功能

多维阵列示例一

此编码示例描述了一个256 x 16线元素的阵列,每个元素8位。这些元素只能在结构Verilog代码中分配。

wire [7:0] array2 [0:255][0:15];

多维阵列示例二

此编码示例描述了256 x 8个寄存器元件的阵列,每个寄存器元件64位宽。这些

元素可以在行为Verilog代码中分配。

reg[63:0]regarray2[255:0][7:0];

数据类型

位数据类型的Verilog表示包含以下值:

•0=逻辑零

•1=逻辑一

•x=未知逻辑值

•z=高阻抗

支持的数据类型

•净

○ 金属丝

○ 魔杖

○ wor

•寄存器

○ 规则

○ 整数

•常数

○ 参数

○ 多维阵列(存储器)

网络和寄存器

Net和Registers可以是:

•单比特(标量)

•多位(矢量)

行为数据类型示例

此编码示例显示了在的声明部分中找到的示例Verilog数据类型Verilog模块。

wire net1; // single bit net
reg r1; // single bit register
tri [7:0] bus1; // 8 bit tristate bus
reg [15:0] bus1; // 15 bit register
reg [7:0] mem[0:127]; // 8x128 memory register
parameter state1 = 3'b001; // 3 bit constant
parameter component = "TMS380C16"; // string

法律声明

Vivado synthesis支持行为Verilog法律声明。

•以下陈述(变量和信号分配)是合法的:

○ variable=表达式

○ if(条件)语句

○ else语句

○ case(表达式),例如:

expression: statement
...
default: statement
endcase

○ for(variable=表达式;条件;variable=变量+表达式)语句

○ while(condition)语句

○ 永久声明

○ 功能和任务

•所有变量都声明为integer或reg。

•变量不能声明为连线。

表达

行为Verilog表达式包括:

•常数

•具有以下运算符的变量:

○ 算术

○ 必然的

-逐位

必然的

○ 关系的

○ 有条件的

逻辑运算符

逻辑运算符所属的类别(按位还是按逻辑)取决于它是否应用于涉及几个比特或单个比特的表达式。

支持的运算符

计算表达式

下表中的(==)和(!==)运算符为:

•特殊的比较运算符。

•用于模拟,查看变量是否分配了值(x)或(z)。

•通过合成处理为(==)或(!=)。

有关Verilog的更多信息,请参阅Vivado Design Suite用户指南:逻辑仿真(UG900)Vivado模拟的格式。

基于最常用运算符的求值表达式

阻碍

Vivado合成支持一些块语句,如下所示:

•块语句将语句分组在一起。它们由开始和结束关键字指定。块语句按照块中列出的顺序执行语句。

•Vivado合成仅支持顺序块。

•Vivado合成不支持并行块。

•所有过程语句都出现在模块内部定义的块中。

•两种程序块是初始块和始终块

•Verilog在每个块中使用开始和结束关键字来封装语句。因为初始块在合成过程中被忽略,总是只描述块。

•总是块通常采用以下格式。每一句话都是一项程序性任务以分号结尾的行。

always
begin
statement
.... end

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

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

相关文章

NTP协议介绍

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 网络时间协议NTP&#xff08;Network Time Protocol&#xff09;是TCP/IP协议族里面的一个应用层协议&#xff0c;用来使客户端和服务器之间进行时…

Grafana dashboards as ConfigMaps

文章目录 1. 简介2. 创建 configmaps3. grafana 界面查看 1. 简介 将 Grafana 仪表板存储为 Kubernetes ConfigMap 相比传统的通过 Grafana 界面导入仪表板有以下一些主要优点: 版本控制&#xff1a; ConfigMap 可以存储在版本控制系统(如Git)中,便于跟踪和管理仪表板的变更历…

C++消息队列处理提高性能的方法

1 消息队列特点 在当前多数软件系统中,处理传递消息多用消息队列机制,他具有以下优点: 1. 异步通信:消息队列支持异步通信,发送者和接收者之间的解耦程度较高。发送者将消息放入队列后即可继续执行,而不需要等待接收者的响应。这样可以提高系统的吞吐量和处理能力。 2.…

docker部署SkyWalking+ES

1.ElasticSearch部署和安装 1.1去dockerHub官网&#xff08;https://hub.docker.com/&#xff09;搜索镜像 1.2 镜像拉取 docker pull elasticsearch:7.5.1 1.3镜像运行 视图切换到Overview 一直往下翻&#xff0c;就能看到启动命令&#xff1a; --net somenetwork是自定义网…

支持向量机 SVM | 线性可分:软间隔模型

目录 一. 软间隔模型1. 松弛因子的解释小节 2. SVM软间隔模型总结 线性可分SVM中&#xff0c;若想找到分类的超平面&#xff0c;数据必须是线性可分的&#xff1b;但在实际情况中&#xff0c;线性数据集存在少量的异常点&#xff0c;导致SVM无法对数据集线性划分 也就是说&…

看一看阿里云,如何把抽象云概念,用可视化表达出来。

云数据库RDS_关系型数据库 云数据库RDS_关系型数据库 专有宿主机 云数据库RDS_关系型数据库_MySQL源码优化版 内容协作平台CCP-企业网盘协同办公-文件实时共享

数据结构从入门到精通——栈

栈 前言一、栈1.1栈的概念及结构1.2栈的实现1.3栈的面试题 二、栈的具体实现代码栈的初始化栈的销毁入栈出栈返回栈顶元素返回栈中的元素个数检测是否为空Stack.hStack.ctest.c 前言 栈&#xff0c;作为一种后进先出&#xff08;LIFO&#xff09;的数据结构&#xff0c;在计算…

2.DOM-事件基础(注册事件、tab栏切换)(案例:注册、轮播图)

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …

3d合并的模型为什么没有模型---模大狮模型网

当合并多个3D模型后&#xff0c;发现合并后的模型没有显示任何内容或模型消失的情况通常有以下几个可能的原因&#xff1a; 蒙皮和骨骼绑定问题&#xff1a;如果合并的模型包含了蒙皮和骨骼动画&#xff0c;并且在合并过程中未正确处理这些信息&#xff0c;可能导致模型显示不出…

华为配置基于VLAN限速示例

华为配置基于VLAN限速示例 组网图形 图1 流量监管配置组网图 表1 Switch为上行流量提供的QoS保障 流量类型 CIR(kbps) PIR(kbps) DSCP优先级 语音 2000 10000 46 视频 4000 10000 30 数据 4000 10000 14 ^^^ 流分类简介配置注意事项组网需求配置思路操作步…

Linux服务器安装jdk

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新&#xff0c;需要改造之前的代码。代码在https://gitee.com/summer-cat001/config-center​​​​​​​ 服务端改造 服务端增加一个版本号version&#xff0c;新增配置的时候为1&#xff0c;每次更新配置就加1。 Overridepublic long insertConfigDO(…

ArcGIS学习(十)城市用地对比分析

ArcGIS学习(十)城市用地对比分析 1.城市用地变更分析 本任务给大家带来的内容是城市用地对比分析,包括两个关卡:城市用地变更分析 用地规划方案实施评价 城市用地变更分析和用地规划方案实施评价是我们进行用地分析时常见的两种场景。其中:城市用地变更分析主要是对不同…

访问修饰符、Object(方法,使用、equals)、查看equals底层、final--学习JavaEE的day15

day15 一、访问修饰符 含义&#xff1a; 修饰类、方法、属性&#xff0c;定义使用的范围 理解&#xff1a;给类、方法、属性定义访问权限的关键字 注意&#xff1a; ​ 1.修饰类只能使用public和默认的访问权限 ​ 2.修饰方法和属性可以使用所有的访问权限 访问修饰符本类本包…

H5小游戏,斗地主

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html> <…

BERT学习【BERT的例子以及作用】

一、case 1.case1 多输入单输出。通过输入一个句子&#xff08;sequence&#xff09;&#xff0c;然后输出一个句子的分类&#xff08;这个句子是正向还是负向&#xff09;。将句子输入BERT&#xff0c;然后通过softmax输出分类。 2.case2 多输入多输出。输入一个句子&…

评测本地部署的语音识别模型

1 引言 最近&#xff0c;朋友给我发来了一段音频&#xff0c;想转录成文字&#xff0c;并使用大型润色文本。音频中的普通话带有一定的口音&#xff0c;并且讲解内容较为专业&#xff0c;所以一般的语音识别工具很难达到较高的识别率。 于是试用了两个大模型。Whisper 是目前…

ai脚本创作的软件有哪些?分享3款好用的工具!

随着人工智能技术的飞速发展&#xff0c;AI脚本创作软件已经成为内容创作者们的新宠。这些软件不仅能够帮助我们更高效地生成文章、视频脚本等&#xff0c;还能为我们提供独特的创意视角和无限的灵感。本文将带您深入了解几款备受瞩目的AI脚本创作软件&#xff0c;看看它们如何…

Truenas入门级教程

Truenas入门教程 前言&#xff1a;系统相关配置 采用I3 4160&#xff0c;采用了2块500G的硬盘&#xff0c;内存为8G&#xff0c;两个网卡只用了其中一个&#xff0c;系统安装的是core版本 硬件采用DELL3020MT机箱&#xff0c;自带3个SATA网口&#xff0c;后期网口不够&#…

C++:Stack和Queue的模拟实现

创作不易&#xff0c;感谢三连&#xff01; 一、容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 就如同是电源适配器将不适用的交流电…