Verilog语言支持

Verilog语言支持

介绍

本章介绍AMD Vivado™对Verilog硬件描述的合成支持语言

本章包括编码示例。从“coding”下载编码示例文件示例。

Verilog设计

复杂电路的设计通常采用自上而下的方法。

•设计过程的每个阶段都需要不同的规范级别。例如,在体系结构级别,规范可以对应于框图或算法状态机(ASM)图表。

•块或ASM级对应于寄存器传输块,其中连接为N位线,例如:

○ 登记

○ 加法器

○ 柜台

○ 多路复用器

○ 互连逻辑

○ 有限状态机

•Verilog允许在计算机语言。

Verilog功能

Verilog提供行为语言结构和结构语言结构。这些结构允许设计对象在高抽象级别和低抽象级别的表达。

•使用Verilog设计硬件允许使用软件概念,例如:

○ 并行处理

○ 面向对象编程

•Verilog的语法类似于C和Pascal。

•Vivado综合支持Verilog作为IEEE 1364。

•Vivado合成中的Verilog支持允许您在中描述全局电路和每个块最有效的风格。

○ 以每个块的最佳合成流程进行合成。

○ 本文中的综合是高级行为和结构Verilog的编译

HDL语句转换为平坦的门级网表。网表可用于对诸如Virtex设备之类的可编程逻辑设备进行定制编程。

○ 不同的合成方法用于:

•算术块

•互连逻辑

•有限状态机(FSM)组件

有关Verilog基本概念的信息,请参阅IEEE Verilog HDL参考手册。

Verilog-2001支持

Vivado synthesis支持以下Verilog-2001功能。

•生成报表

•组合端口/数据类型声明

•ANSI样式的端口列表

•模块操作员端口列表

•ANSI C风格的任务/函数声明

•逗号分隔的灵敏度列表

•组合逻辑灵敏度

•具有连续分配的默认网络

•禁用默认网络声明

•索引矢量部分选择

•多维阵列

•网络和真实数据类型阵列

•阵列位和部件选择

•已签署的注册、网络和端口声明

•基于符号的整数

•有符号算术表达式

•算术移位运算符

•超过32位的自动宽度扩展

•电力操作员

•N大小的参数

•显式内联参数传递

•固定的本地参数

•增强的条件编译

•文件和行编译器指令

•可变部件选择

•递归任务和函数

•常数函数

有关更多信息,请参阅:

•斯图尔特•萨瑟兰。Verilog 2001:Verilog硬件描述的新功能指南语言(2002)

•IEEE标准Verilog硬件描述语言手册(IEEE标准1364-2001)

Verilog-2001可变零件选择

Verilog-2001允许您使用变量从矢量中选择一组位。

变量零件选择不是由两个显式值限定的,而是由其范围的点和矢量的宽度。零件选择的起点可能会有所不同。这个零件选择的宽度保持不变。

下表列出了可变零件选择符号。

Variable Part Selects Verilog Coding Example
reg [3:0] data;
reg [3:0] select; // a value from 0 to 7
wire [7:0] byte = data[select +: 8];

结构Verilog

结构化Verilog描述汇集了几个代码块,并允许引入设计中的层次结构。下表列出了硬件结构的概念及其描述。

下表列出了Verilog组件、视图以及组件描述。

•组件由设计模块表示。

•组件之间的连接在组件实例化中指定声明。

•组件实例化语句:

○ 指定出现在另一个零部件或回路中的零部件实例

○ 用标识符标记。

○ 命名在本地组件声明中声明的组件。

○ 包含一个关联列表(带括号的列表)。该列表指定信号和端口与给定的本地端口相关联。

内置逻辑门

Verilog提供了一大组内置逻辑门,这些逻辑门被实例化以构建更大的逻辑电路。内置逻辑门所描述的一组逻辑功能包括:

•以及

•或

•XOR

•NAND

•NOR

•不是

2输入XOR函数示例

在这个编码示例中,内置模块的每个实例都有一个唯一的实例化名称如a_inv、b_inv和out。

module build_xor (a, b, c);
input a, b;
output c;
wire c, a_not, b_not;
not a_inv (a_not, a);not b_inv (b_not, b);and a1 (x, a_not, b);and a2 (y,
b_not, a);or out (c, x, y);
endmodule
Half-Adder Example
This coding example shows the structural description of a half-Adder composed of four, 2-input
nand modules.
module halfadd (X, Y, C, S);
input X, Y;
output C, S;
wire S1, S2, S3;
nand NANDA (S3, X, Y);nand NANDB (S1, X, S3);nand NANDC (S2, S3, Y);nand
NANDD (S, S1, S2);assign C = S3;
endmodule

实例化预定义的基本体

Verilog的结构特征允许您通过实例化预定义的电路来设计电路基元,例如:门、寄存器和AMD特定基元,如CLKDLL和BUFG。这些基元是Verilog中包含的基元的附加基元,并随AMD一起提供Verilog库(unisim_comp.v)。

实例化FDC和BUFG基元示例

unisim_comp.v库文件包括FDC和BUFG的定义。

module example (sysclk, in, reset, out);
input sysclk, in, reset;
output out;
reg out;
wire sysclk_out;
FDC register (out, sysclk_out, reset, in); //position based referencing
BUFG clk (.O(sysclk_out),.I(sysclk)); //name based referencing

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

成功解决‘OpenpyxlWriter’ object has no attribute ‘save’

成功解决‘OpenpyxlWriter’ object has no attribute ‘save’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到…

力扣hot100题解(python版41-43题)

41、二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例…

C#学习(十四)——垃圾回收、析构与IDisposable

一、何为GC 数据是存储在内存中的,而内存又分为Stack栈内存和Heap堆内存 Stack栈内存Heap堆内存速度快、效率高结构复杂类型、大小有限制对象只能保存简单的数据引用数据类型基础数据类型、值类型- 举个例子 var c new Customer{id: 123,name: "Jack"…

【PyTorch】成功解决AttributeError: ‘Tuple‘ object has no attribute ‘cuda‘

【PyTorch】成功解决AttributeError: ‘Tuple‘ object has no attribute ‘cuda‘ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

JAVASE初认识

1.初认识其结构 1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。 2.类:类中带有一个或多个方法。方法必须在类的内部声明。 3.方法&#xff1…

CAPL组装IPv4分片包的三种思路(2)

2、使用CAPL的函数自动生成一条完整的ICMPv4 Echo Request报文,然后把数据手动放入两个分片报文中 首先生成一条完整的icmp报文: ethernetPacket ppkt1;//icmpv4 echo requestbyte data[1] = {10};//icmpv4 echo request datappkt1.icmpv4.echo…

【JavaEE】_前端使用GET请求的queryString向后端传参

目录 1. GET请求的query string 2. 关于query string的urlencode 1. GET请求的query string 1. 在HttpServletRequest请求中,getParameter方法用于在服务器这边获取到请求中的参数,主要在query string中; query string中的键值对都是程序…

使用Python语言实现一个基于动态数组的序列队列

一、动态数组的实现 首先,我们需要创建一个DynamicArray类,该类将管理我们的动态数组。 动态数组能够动态地调整其大小,以容纳更多的元素。 目录 一、动态数组的实现 代码示例: 二、序列队列的实现 接下来,我…

Redis--持久化机制详解

什么是redis持久化? Redis持久化是将内存的数据持久化到磁盘上,防止Redis宕机或者断点的时候内存中的数据丢失,把内存中的数据写入到磁盘的过程叫持久化。 Redis持久化的方式? RDB(Redis DataBase)&…

图结构数据的构建-DGL库

官方文档 一、图的特点 同构性与异构性 相比同构图,异构图里可以有不同类型的节点和边。这些不同类型的节点和边具有独立的ID空间和特征;同构图和二分图只是一种特殊的异构图,它们只包括一种关系 节点与边 有向图一条边、无向图两条边、…

在Windows系统中启动Redis服务

前言 Redis是一个开源、高性能的键值对数据库,常用于缓存、消息队列等场景。本文将详细指导您如何在Windows系统上启动Redis服务。 第一步:确认Redis安装 确保您已经在Windows系统上成功安装了Redis。官方提供了预编译好的Windows版本,您可…

代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机 II,55. 跳跃游戏, 45.跳跃游戏 II[贪心算法篇]

代码随想录算法训练营第二十六天 LeetCode 122.买卖股票的最佳时机 II题目描述思路参考代码 LeetCode 55. 跳跃游戏题目描述思路参考代码 LeetCode 45.跳跃游戏 II题目描述思路参考代码 LeetCode 122.买卖股票的最佳时机 II 题目链接:122.买卖股票的最佳时机 II 文章…

如何在腾讯云上快速部署幻兽帕鲁/Palworld服务器?

如何在腾讯云上快速部署幻兽帕鲁/Palworld服务器? 准备工作:首先需要准备腾讯云账号和Steam账号。腾讯云账号适用于新老用户,而Steam账号则是因为幻兽帕鲁是一款Steam平台的游戏。此外,还需要购买一台腾讯云服务器,推荐…

Makefile从入门到项目编译实战(学习笔记)

1.make和makefile介绍 1. make make 是一个应用程序,位于 /usr/bin/make 目录下,make 有如下的功能: (1)解析源程序之间的依赖关系 (2)根据依赖关系自动维护编译工作 (3&#xff09…

VS2019_连接 SqlServer 数据库

目录 1. 编写好 SQL 语句,存为文件 2. 将这个 SQL 文件直接拖到 VS 的桌面快捷键上面 3. 点击运行 4. 输入相关参数,连接 5. 点击运行,即可查出结果 6. 关闭 VS2019,再次执行2和3步 7. 历史 > 选择库 > 连接 8. 运行…

Charles抓包 - 安装、激活、证书配置

最近刚好又遇到了抓包的需求,之前一直使用 Fiddler 抓包,这几年一直听大家都在用 Charles 抓包,正好一起了解下(一般建议掌握一种抓包方式即可,都可以解决同种需求场景) 抓包 Fiddler抓包 Charles 下载、安…

杭电OJ 2045 不容易系列之(3)—— LELE的RPG难题 C++

思路:我先模拟了一下1,2,3的情况,对应的是3 6 6,模拟到4的时候就有感觉了,1是不受到任何制约的,2到n-1是收到了前面一个的制约,n受到了n-1与1的制约,那么就可以去判断4 …

Vue全家桶:vue2+vue3全部搞懂:第五篇,Vue的watch监视器

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,不然不好懂 这一专栏知识将一次性将vue、vue2、vue3全部讲明白 一、何为watch监视器 其实我个人理解,就跟原本的表单的input事件一样,实时监视事件发生并同步更新数…

gcd+线性dp,[蓝桥杯 2018 国 B] 矩阵求和

一、题目 1、题目描述 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作。 今天小明的任务是填满这么一张表: 表有 �n 行 �n 列,行和列的编号都从 11 算起。 其中第 �i 行第 �j 个元素…

逆序字符串

逆序字符串 题目描述:解法思路:解法代码:运行结果: 题目描述: 输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。 测试1: 输⼊:abcdef 输出:fedcba 测试2&#x…