verilog 介绍
Verilog HDL
Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog HDL烦琐一些,但Veri log HDL自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授Verilog HDL。它们的共同特点是利于由顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构的变化而变化,更利于向ASIC的移植。Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于其模拟、仿真器产品的广泛使用,VerilogHDL作为一种便于使用且实用的语言逐渐为众多设计者所接受。在一次努力增加语言普及性的活动中,VerilogHDL语言于1990年被推向公众领域。OpenVerilogInternational(OVI)是促进Verilog HDL
发展的国际性组织。1992年,OVI决定致力于推广Verilog OVI标准成为1EEE标准。这一努力最后获得成功,Verilog HDL语言于1995年成为IEEE标准,称为IEEE Std 1364--1995。完整的标准在Verilog HDL硬件描述语言参考手册中有详细描述。
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽
象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门
和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式
地进行时序建模。
Verilog HDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。VerilogHDL从C编程语言中继承了多种操作符和结构,提供了扩展的建模能力,
其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习
和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对
从最复杂的芯片到完整的电子系统进行描述。
2.1.2 Veri Iog HDL开发流程
用Verilog HDL语言开发CPLD/FPGA的完整流程为:
1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
Verilog HDL文件保存为.v文件,常用的文本编辑工具有ultraedit32。
2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确,
是否符合设计要求。功能仿真也叫前仿真,对简单的设计可以跳过这一步,只在
布线完成以后,进行时序仿真。常用的仿真工具有Model Tech公司的Modelsim,
Aldec公司的Active HDL,Synopsys公司的VCS等。通过功能仿真可以及时发现
设计中的错误,加快设计进度,提高设计的可靠性。
3)逻辑综合(Synthesize):将HDL语言源文件调入逻辑综合软件翻译成由与、
或、非门、寄存器等基本逻辑单元组成的逻辑连接,即把语言综合成最筒的布尔
表达式和信号的连接关系。逻辑综合软件会生成.edf的EDA工业标准文件。常
用的综合工具有Synplicity公司的Synplify Pro,Synopsys公司的FPGA
Express等。
4)布局布线;将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的
逻辑安放到CPLD/FPGA内
5)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的
时序,也叫后仿真。时序仿真应将布局布线的时延文件反标到设计中,使得仿真
既包括门延时,又包含线延时信息,从而准确地反映芯片地实际工作情况。
6)编程下载:确认仿真无误后,将生成的可编程文件下载到芯片中,得到实际
的电路。
2.1.3 Ver i Iog HDL的优点
数字信号处理(DSP)系统的研究人员一直在努力寻找各种优化的算法来解
决相关的信号处理问题。当他们产生了比较理想的算法思路后,就在计算机上用
C语言或其他语言程序来验证该算法,并不断修改以期完善,然后与别的算法作
性能比较。在现代通信和计算机系统中,对于DSP算法评价最重要的指标是看它
能否满足工程上的需要。而许多工程上的需要都有实时响应的要求,也就是说应需要数字信号处理(DSP)系统在限定的时间内,如在几个ms甚至于几个p s内,
对所输入的大量数据完成相当复杂的运算,并输出结果。这时如果我们仅仅使用
通用的微处理器,即使是专用于信号处理的微处理器,往往也无法满足实时响应
的要求。因此,不得不设计专用的高速硬线逻辑来完成这样的运算。设计这样的
有苛刻实时要求的复杂的高速硬线运算逻辑是一件很有挑战性的工作,即使有了
好的算法而没有好的设计工具和方法也很难完成。
传统的数字电路设计方法是采用电路原理图输入法。当时的系统设计规模比
较小,也比较简单,其中所用到的FPGA或ASIC设计工作往往只能采用厂家提供
的专用电路图输入工具来进行。为了满足设计性能指标,工程师往往需要花费好
几天或更长的时问进行艰苦的手工布线。此外,工程师还得非常熟悉所选器件得
内部结构和外部引线特点,才能达到设计要求。这种低水平的设计方法大大延长
了设计周期。
采用Verilog HDL设计电路时,由于它的标准化,可以很容易的把完成的
设计移植到不同厂家的不同芯片中,并且在不同规模应用时可以比较容易地进行
修改,以适应不同规模的应用。采用Verilog HDL设计电路的最大优点其实就
是它的与工艺无关性,这就使得工程师在功能设计、逻辑验证阶段不必过多考虑
门级及工艺实现的细节,只要利用系统设计时对芯片的要求,施加不同的约束条
件,即可设计出实际的电路,大大减轻了工程师的劳动强度。
Verilog HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语
言的关系。Yerilog HDL的可移植性好,使用方便,但效率不如原理图;原理
图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得很烦琐,
移植性差。在真正的CPLD/FPGA设计中,通常建议采用原理图和Verilog HDL
结合的方法来设计,适合用原理图的地方就用原理图,适合用Veri log HDL的
地方就用Verilog HDL,并没有强制的规定。在最短的时间内,用自己最熟悉
的工具设计出高效,稳定,符合设计要求的电路才是我们的最终目的。
由于Verilog HDL的设计方法与工艺无关,因此大大提高了Verilog HDL
模型的可重用性。通常把功能经过验证的、可综合的、实现后电路结构总门数在
5000门以上的Verilog HDL模型称为“软核”(Soft Core),由软核构成的器
件成为虚拟器件。在电路的设计过程中,利用软核和虚拟器件的可重用性,可以
太大缩短设计周期,加快了复杂电路的设计速度。
verilog 介绍的更多相关文章
- Verilog学习总结
1.多个always语句不能对同一变量赋值. 2.assign语句只能进行阻塞赋值,用来描述组合逻辑. 3.verilog描述方式:结构描述(门级描述和模块调用).数据流描述(assign,wire型 ...
- 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...
- 一段比较有意思的代码——介绍system verilog中的新增幅值语句
system verilog中新加了很多幅值语句,虽然都只适用于阻塞幅值,但是在某些场合中非常实用. 下面是一段有意思的代码,覆盖了一些用法. package definitions; typedef ...
- 关于verilog实例化的介绍
概念 当我们完成一个比较完整的系统的时候,通常需要编写一个Testbench来验证自己的设计的功能能否满足设计要求.在这个系统中通常会有一个top模块来连接那些小的模块,verilog通过实例化的方式 ...
- Verilog HDL模型的不同抽象级别
所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...
- Verilog学习笔记基本语法篇(十二)········ 编译预处理
h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- system verilog的一些总结(从其他博客复制来的)
转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...
- verilog断言(SVA:systemverlog assertion)语法 ---- 转载
转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html 作者:白栎旸 断言assertion被放在verilog设计中,方便在仿真时查 ...
随机推荐
- Axure RP 介绍
原型设计是将想法转变为设计过程中至关重要的一环.经常有设计师小伙伴可能会问到,“哪个原型设计工具是最好的呢”?实际上这是一种错误的提问方式,尤其是在当下原型工具种类繁多,针对不同需求各有优势的大环境中 ...
- PY序
Python实现机器学习依赖于两个类库——SciPy和scikit-learn 一)SciPy SciPy是数学运算的基本类库,在机器学习的过程中,主要运用NumPy.Matplotlib和Panda ...
- 简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞
这是别人给我发的,让我分析一下,看能否写出exp.只怪自己水平不够,最后没能写出exp,以下为自己的分析思路 环境为win10 pro x64 英文版(10.0.16299) 默认安全配置 一.漏洞分 ...
- python 基础之注释变量常量
一:注释 注释: 就是对代码的解释 方便大家阅读代码 1.注释的分类 (1)单行注释 # 在python中在行首添加一个#号就将这一行进行注释 #单行注释: 用#开头,后面跟上任意字符串 #pyth ...
- 详解java定时任务---Timer篇
一.简介 在java的jdk中提供了Timer.TimerTask两个类来做定时任务. Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子 ...
- RK3399/NanoPC-T4开发板低级格式化SD卡,恢复SD卡和TF卡 方法
恢复SD卡和TF卡 方法:Windows下运行:HDDLLF.4.40.exe执行Low-Level format然后拔插,重新插在win10下提示格式化,则执行格式化操作,即可恢复. 应用场合:使用 ...
- C# 中DataGridView和ListView闪烁问题的解决方法
C# 中DataGridView和ListView闪烁问题的解决方法 方法一首先定义类,将此类放在datagridview或ListView所在的窗体类外面,然后代码如下, <span styl ...
- Linux简单线程池实现(带源码)
这里给个线程池的实现代码,里面带有个应用小例子,方便学习使用,代码 GCC 编译可用.参照代码看下面介绍的线程池原理跟容易接受,百度云下载链接: http://pan.baidu.com/s/1i3z ...
- IOS屏幕旋转思路和实践
这段时间同事在做一个直播项目,项目有个需求:一个界面需要手动设置屏幕的方向,设置好之后方向不能变化.完成这个需求花了特别大的精力,归因是网上关于屏幕旋转的知识比较凌乱,解决问题花费不少时间,最后决定把 ...
- Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]报错解决方法
错误: 解决方法: