购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.10 硬件描述语言

使用与本章前面介绍的逻辑图类似的方法来表示简单的数字电路很直观。然而,当设计高复杂度的数字器件时,逻辑图很快就会变得无能为力。作为逻辑图的替代方案,多年来已经开发了许多硬件描述语言。这一演变受到摩尔定律的推动,摩尔定律驱使数字系统设计者不断寻找新的方法,以迅速有效地利用集成电路中数量不断增长的晶体管。

硬件描述语言并不是半导体公司数字设计师的专属领域,即使是业余爱好者也可以获得和使用这些强大的工具,在许多情况下它们甚至是免费的。

门阵列是包含大量逻辑单元的逻辑器件,其中的逻辑单元包括与非门和D触发器等。一类称为可编程逻辑门阵列(FPGA)的门阵列使最终用户能够仅使用一台计算机、一块小型开发板和适当的软件包来实现他们的设计。

开发人员可以使用硬件描述语言定义复杂的数字电路,并将其直接编程到芯片中,从而产生全功能、高性能的定制数字设备。当代低成本FPGA包含足够数量的逻辑门来实现复杂的现代处理器设计。例如,RISC-V处理器的FPGA可编程设计(见第11章)以开源硬件描述语言代码的形式提供。

VHDL

VHDL是当今使用的主要硬件描述语言之一,该语言在美国国防部的指导下于1983年开始开发,其语法和一些语义基于Ada编程语言。Ada编程语言是以查尔斯·巴贝奇的分析机的程序员Ada Lovelace命名的,在第1章中进行了简要介绍。Verilog是另一种流行的硬件设计语言,其功能类似于VHDL。本书将专门使用VHDL,但给出的示例也可以用Verilog很容易地实现。

VHDL是一个多级的缩写,其中V代表VHSIC,即超高速集成电路,VHDL代表VHSIC硬件描述语言。以下代码给出了图2.15所示全加器电路的VHDL实现:

此代码对图2.15中的全加器进行了直观的文本描述。这里的entity FULL_ADDER is部分定义了全加器部件的输入和输出。architecture部分描述了电路逻辑如何在给定输入A、B和C_IN的情况下产生输出S和C_OUT。术语std_logic指的是一位二进制数据类型。<=字符表示类似导线的连接,使用在右侧计算的值驱动左侧的输出。

以下代码引用FULL_ADDER VHDL作为图2.16所示的4位加法器设计实现中的一个构件:

此代码是图2.16中4位加法器的文本描述。这里,entity ADDER4 is部分定义了4位加法器器件的输入和输出。短语std_logic_vector(3 downto 0)表示4位数据类型,位号3位于左侧(最高位),位号0位于右侧。

FULL_ADDER构件在单独的文件中定义,由该部分开始处的component FULL_ADDER is语句进行引用。语句signal c0、c1、c2:std_logic;定义全加器之间的内部进位值。4个port map部分定义了4位加法器信号与每个一位全加器的输入和输出之间的连接。要引用多位值中的某一位,在括号中的参数名称后面加上位号。例如,A4(0)指的是A4中的最低有效位。

注意此设计中层次结构的使用。一个简单的构件(比如一位全加器)首先被定义为一个独立的、功能完整的代码块。然后,使用这个模块来构造一个更复杂的电路,即4位加法器。这种层次化方法可以扩展到多个层次,以定义由不太复杂的构件构成的极其复杂的数字器件,而每个构件又由更简单的部件构成。这种方法在层次化体系结构的每个层次中能够控制设计的复杂度,使得人们可以更加容易理解设计的原理与细节,因此通常会使用这种方法开发包含有数亿个晶体管的现代处理器。

本节中的代码提供了所有的电路信息,可以用逻辑综合软件工具套件将4位加法器作为FPGA中的一个构件进行实现。当然,需要额外的电路来向加法器电路提供有意义的输入,然后在允许的传播延迟之后处理加法运算的结果。

以上是对VHDL的简单介绍,目的是让读者意识到VHDL等硬件描述语言是当前用于复杂数字电路设计的流行技术。此外,读者应该知道一些低成本的FPGA开发工具和器件。本章的习题将介绍一些免费且功能强大的FPGA开发工具。鼓励读者在Internet上搜索并了解更多关于VHDL和其他硬件描述语言的知识,并尝试开发一些电路。 MtNX5hTO/MgIxxpOKYD28EMUR6RFYmeX1F0Aryn16gJoNqMzpj3AXF/ogOzZoit8

点击中间区域
呼出菜单
上一章
目录
下一章
×