硬件描述语言 VERILOG(一)

视频网址:

https://www.bilibili.com/video/BV1yf4y1R7gH?t=407

Verilog 的历史

在传统硬件电路的设计方法中,当设计工程师需要设计一个新的硬件、数字电路或数字逻辑系统时,需要为此设计并画出一张线路图,随后在 CAE(计算机辅助工程分析)工作站上进行设计。所设计的线路图由线和符号组成,其中线代表了线路,符号代表了基本设计单元,其取自于工程师构造此线路图使用的零件符号库。对于不同逻辑器件的设计,需要选择对应的符号库,如当设计工程师选择的时标准逻辑器件(74 系列等)作为板级设计线路图,那么此线路图的符号则需要取自标准逻辑零件符号库;若设计工程师进行了 ASIC 设计,线路图的符号就要取自 ASIC 库专用的宏单元。

这就是传统的原理图设计方法,原理图设计法存在着许多弊端,如当设计者想要实现线路图的逻辑优化时,就需要利用 EDA 工具或者人工进行布尔函数逻辑优化。除此之外,传统原理图设计还存在难以验证的缺点,设计工程师想要验证设计,必须通过搭建硬件平台(比如电路板),为设计验证工作带来了麻烦。

随着人们对于科技的要求与期待越来越高,电子设计技术发展也越来越快,设计的集成度、复杂程度也逐渐加深,传统的设计方法已经无法满足高级设计的需求,最终出现了借助先进 EDA 工具的一种描述语言设计方法,可以对数字电路和数字逻辑系统进行形式化的描述,这种语言就是硬件描述语言。硬件描述语言,英文全称为 Hardware Description Language,简称 HDL,HDL 是一种用形式化方法来描述数字电路和数字逻辑系统的语言。设计工程师可以使用这种语言来表述自己的设计思路,通过利用 EDA 工具进行仿真、自动综合到门级电路,最终在 ASIC 或 FPGA 实现其功能。

以 2 输入的与门为例来对比原理图设计方法与 HDL 设计方法之间的区别,在传统的设计方法中设计 2 输入与门可能需到标准器件库中调用 74 系列的器件,但在硬件描述语言中“&”就是一个与门的形式描述,“C = A & B”就是一个 2 输入与门的描述。而“&”就代表了一个与门器件。硬件描述语言发展至今已有二十多年历史,当今业界的标准中(IEEE 标准)主要有 VHDL 和Verilog HDL 这两种硬件描述语言。本书采用的是 VerilogHDL 硬件描述语言,接下来着重对其发展的历史及特点进行介绍。

Verilog HDL 语言最初是在 1983 年由 Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言,当时这只是公司产品的专用语言。随着公司模拟、仿真器产品的广泛使用,Verilog HDL 作为一种实用语言逐渐为众多设计者所接受。1990 年一次致力于增加语言普及性的活动中,Verilog HDL 语言被推向公众领域从而被更多人熟知。

Open Verilog International(OVI)是促进 Verilog 发展的国际性组织。1992 年,OVI 决定致力于推广 Verilog OVI 标准成为 IEEE 标准。这一推广最后获得成功,Verilog 语言于 1995 年成为IEEE 标准,称为 IEEE Std1364-1995。其完整标准在 Verilog 硬件描述语言参考手册中有详细描述。

Verilog HDL 语言具有许多优点,例如 Verilog HDL 语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL 语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用 Verilog 仿真器进行验证。Verilog HDL 提供了扩展的建模能力,其中许多扩展最初很难理解,但是 Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。

综合和仿真

综合

Verilog 是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能,最终在硬件电路上实现该功能。在 Verilog 描述出硬件功能后需要使用综合器对 Verilog 代码进行解释并将代码转化成实际的电路来表示,最终产生实际的电路,也被称为网表。这种将 Verilog 代码转成网表的工具就是综合器。


综合器的功能

上图左上角是一段 Verilog 代码,该代码实现了一个加法器的功能。在经过综合器解释后该代码被转化成一个加法器电路。QUARTUS、ISE 和 VIVADO 等 FPGA 开发工具都是综合器,而在集成电路设计领域常用的综合器是 DC。

仿真

在 FPGA 设计的过程中,不可避免会出现各种 BUG。如果在编写好代码、综合成电路、烧写到FPGA 后才发现问题,此时再去定位问题就会非常地困难。而在综合前,设计师可以在电脑里通过仿真软件对代码进行仿真测试,检测出 BUG 并将其解决,最后再将程序烧写进 FPGA。一般情况下可以认为没有经过仿真验证的代码,一定是存在 BUG 的。


仿真器的功能

为了模拟真实的情况,需要编写测试文件。该文件也是用 Verilog 编写的,其描述了仿真对象的输入激励情况。该激励力求模仿最真实的情况,产生最接近的激励信号,将该信号的波形输入给仿真对象,查看仿真对象的输出是否与预期一致。需要注意的是:在仿真过程中没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该代码是否可转成电路,仿真器并不关心。

由此可见,Verilog 的代码不仅可以描述电路,还可以用于测试。事实上,Verilog 定义的语法非常之多,但绝大部分都是为了仿真测试来使用的,只有少部分才是用于电路设计。

你可能感兴趣的:(硬件描述语言 VERILOG(一))