【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路。所谓综合(Synthesis)是指将Verilog HDL程序、原理图等设计输入翻译成由与门(and)、或门(or)、非门(not)等基本逻辑单元组成的门级连接,并根据设计目标和要求对门级逻辑连接进行优化,得到优化的门级网表文件。
Verilog HDL主要有三种建模方式:
4.1结构级建模
结构级建模包括门级建模和分层建模两种情况。门级建模就是将逻辑电路图用Verilog HDL规定的文本语言表示出来,即调用Verilog HDL中内置的基本门级元件(Gate Level Primitives,门级源语)描述逻辑图中的元件以及元件之间的连接关系。分层次就是将一个数字系统划分为多个组成模块,再分别对每个模块建模,然后将这些模块组合成一个总模块,完成所需的功能。
Verilog HDL中内置了12个基本门级元件模型,门级元件的输出、输入必须为网类型的变量。当使用这些元件逻辑仿真时,仿真软件会根据程序描述给每个元件中变量分配逻辑0,逻辑1,不确定态x和高阻态z这4个值之一。
这些门可分为:多输入门,多输出门,三态门。
4.2数据流建模
对于基本单元逻辑电路,使用Verilog HDL提供的门级元件模型描述电路非常方便,但随着电路复杂性的增加,当使用的逻辑门较多时,使用Verilog HDL门级描述的工作效率就很低。数据流建模的抽象级别介于门级和行为级之间,它是行为级建模的一种形式,组合电路的逻辑行为最好使用数据流建模方式。
数据建模使用的基本语句是连续赋值语句,连续赋值语句用于对wire型变量进行赋值,它由关键词assign开始,后面跟着操作数和运算符组成的逻辑表达式。
例如:
wire a,b,sel,out; //declare four wires variables
assign out = (a& (~b)) | (b & sel); //a continuous assignment
连续赋值语句的执行过程是:只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给左边的变量。注意:在assign语句中,左边变量的数据类型必须是wire型。
4.3行为级建模
行为级建模就是以抽象的形式描述数字逻辑电路的功能和算法,在Verilog HDL 中,行为级建模主要使用由关键词initial或always定义的两种结构类型的描述语句。一个模块内部可以包含多个initial或always语句,仿真时这些语句同时执行,即与它们在模块内部排列的顺序无关,仿真都从0时刻开始执行。initial语句主要是一条面向仿真的过程语句,不能用来描述硬件电路的功能。
在always结构型语句内部有一系列过程赋值语句,用来描述电路的行为(功能)。过程性赋值语句包括在结构型的语句内部使用的逻辑表达式、条件语句(if-else)、多路分支语句(case-endcase)和循环语句等。
顺序语句块就是由块标识符begin...end保卫界定的一组行为描述语句,其作用是:相当于给块中的这组行为描述语句进行打包处理,使之在形式上与一条语句一致。在这个模块内部的各条语句按照书写的先后顺序依次执行。在Verilog HDL中,可以给每个语句块取一个名字,方法是:在关键词begin后面加上一个冒号,之后给出名字即可。取了名字的块被称为有名块。
【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)的更多相关文章
- Verilog HDL常用综合语法
前面已经记录了一些组成Verilog的基本组成,可以用这些基本组成来构成表达式.这一节,就来记录一下把这些表达式构成一个文件的各种行为描述语句. ①这里用Verilog基本要素进行的行为描述主要是针对 ...
- Verilog HDL常用的行为仿真描述语句
一.循环语句 1.forever语句 forever语句必须写在initial模块中,主要用于产生周期性波形. 2.利用for.while循环语句完成遍历 for.while语句常用于完成遍历测试.当 ...
- Sublime Text 2 和 Verilog HDL
Sublime Text 2 和 Verilog HDL Date Fri 04 July 2014 Tags Sublime Text / Vivado Sublime Text 代码编辑器之于程 ...
- 【Verilog HDL】赋值语句之阻塞赋值方式与非阻塞赋值方式
刚开始接触Verilog HDL语言时,这种硬件描述语言有一点与软件的程序设计语言直观上的最大区别大概就是这个赋值语句了(这里只是强调直观上的最大区别,事实上的最大区别并非如此). Verilog H ...
- 【黑金教程笔记之003】【建模篇】akuei2的Verilog hdl心路
Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计 ...
- 关于初次使用Verilog HDL语言需要懂的基本语法
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...
- FPGA Verilog HDL 系列实例--------步进电机驱动控制
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...
- Verilog HDL的程序结构及其描述
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...
- Verilog HDL程序设计——基本要素
Verilog基本上熟悉了,继续整理一下Verilog的学习笔记吧.前面记载了Verilog的结构,写Verilog的结构有了,但是该怎么写呢?在写之前就得了解一下Verilog的一些基本要素了,也就 ...
随机推荐
- 【10.14】Bug Bounty Write-up总结
我很喜欢今天的看到的write-up,因为作者是针对他对一个网站整体进行漏洞挖掘的过程写的,内容包括几个不同的漏洞,从中能够学习到怎样系统性的挖掘漏洞. write-up地址:[Bug bounty ...
- 微信小程序<每日查看>开发总结
之前一直在做iOS平台的App和SDK开发,发现微信小程序还蛮有意思的,花了将近几天的时间,从看书学习到萌发想法,最后开发出一款小应用,现在花点时间总结一番!作为自我勉励和后续继续学习动力- 先上效果 ...
- LaTeX表格绘制备忘之Go语言中的几个表
以下绘制的表格选自<Go语言 云动力>一书.这些表格比较简单,LaTeX语句也比较简单. 完整代码: % 博客园陆巍的博客 https://www.cnblogs.com/atth ...
- maven中的groupId和artifactId到底指的是什么
groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找. groupId一般分为多个段 ...
- PostgreSQL统计信息索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的统计信息相关文摘和文章的链接: pg_stats: --------- ...
- 5289: [Hnoi2018]排列
5289: [Hnoi2018]排列 链接 分析: 首先将题意转化一下:每个点向a[i]连一条边,构成了一个以0为根节点的树,要求选一个拓扑序,点x是拓扑序中的第i个,那么价值是i*w[x].让价值最 ...
- [BZOJ3451]normal 点分治,NTT
[BZOJ3451]normal 点分治,NTT 好久没更博了,咕咕咕. BZOJ3451权限题,上darkbzoj交吧. 一句话题意,求随机点分治的期望复杂度. 考虑计算每个点对的贡献:如果一个点在 ...
- android targetSdkVersion>=26收不到广播的处理
背景:GP新政策,要求Google Player上架应用的targetSdkVersion>=26. 一. 为啥GP要求targetSdkVersion>=26? 1 targetSdkV ...
- Macaca上手体验
在研究了一段时间Appium后,尝试对另一个框架做实验——Macaca,阿里的开源测试框架,该框架不只适合移动端,同样适用于web端,可谓是方便的很啊~ 同时支持js.java.python.封装好的 ...
- Android studio Error occurred during initialization of VM 问题解决
最近开发导入其他Android项目遇见的问题,如下图: 解决办法: 将org.gradle.jvmargs=的值该为521(堆内存分配过高导致) 备忘,希望能帮助到大家