本文介绍了一种硬件描述语言vhdl,以及它在描述数字电路时的结构。我们还将介绍一些介绍性的示例电路描述,并讨论“std_logical”和“bit”数据类型之间的区别。
vhdl是数字电路设计中常用的硬件描述语言之一。vhdl代表vhsic硬件描述语言。反过来,vhsic代表超高速集成电路。
vhdl是1981年由美国国防部发起的。ibm和德州仪器等公司的合作导致vhdl于1985年发布了第一个版本。1984年,xilinx发明了第一个fpga,很快就在其产品中支持vhdl。从那时起,vhdl语言在数字电路设计、仿真和综合方面已经发展成为一种成熟的语言。
在本文中,我们将简要讨论描述给定电路的vhdl代码的一般结构。通过一些介绍性示例,我们还将熟悉一些常用的数据类型、操作符等。
vhdl的一般结构
让我们考虑一个简单的数字电路,如图1所示。
图1.一个简单的数字电路。
此图显示有两个输入端口,a和b,以及输出端口out 1。图中显示输入和输出端口有一点宽。电路的功能是要和两个输入端,并将结果放在输出端口上。
vhdl使用类似的描述;但是,它有自己的语法。例如,它使用以下代码行来描述该电路的输入和输出端口:
1 entity circuit_1 is 2 port ( a : in std_logic; 3 b : in std_logic; 4
out1 : out std_logic); 5 end circuit_1;
让我们分清这意味着什么,一行行。
第1行:代码的第一行指定要描述的电路的任意名称。在关键字“实体”和“is”之间的“电路1”一词决定了该模块的名称。
第2至第4行:这些线路指定电路的输入和输出端口。将这些线路与图1中的电路进行比较,我们发现该电路的端口及其特性列在关键字“port”之后。例如,第3行说我们有一个名为“b”的端口。此端口是一个输入,如冒号后面的关键字“in”所示。
关键字“std_logic”指定了什么?正如我们将在本文后面讨论的那样,std_logic是vhdl中一种常用的数据类型。它可以用来描述一位数字信号。由于图1中的所有输入/输出端口都将传输1或0,因此我们可以对这些端口使用std_logicdata类型。
第5行:这一行决定了“实体”语句的结尾。
因此,代码的实体部分指定了1)要描述的电路的名称,2)电路的端口及其特性,即输入/输出和这些端口要传输的数据类型。代码的实体部分实际上描述了模块与其周围环境的接口。由讨论的“实体”语句指定的上述电路的特性如图1所示绿色。
除了电路与环境的接口外,我们还需要描述电路的功能。在图1中,电路的功能是to和两个输入,并将结果放在输出端口上。为了描述电路的操作,vhdl增加了一个“体系结构”部分,并将其与实体语句定义的电路1相关联。描述该电路结构的vhdl代码如下
6 architecture behavioral of circuit_1 is 8 begin 9 out1
第6行:这一行为下一行将要描述的体系结构命名为“行为”。这个名称介于关键字“architecture”和“of”之间。它还将该体系结构与“电路1”相关联。换句话说,这种架构将描述“电路1”的操作。
第8行:这指定了体系结构描述的开始。
第9行第9行使用vhdl的语法来描述电路的操作。两个输入a和b的and在括号内找到,并使用赋值运算符“《=”将结果分配给输出端口。
第10行这指定了体系结构描述的结束。如前所述,这些代码行描述了电路的内部操作,这里是一个简单的门(如图1中蓝色所示)。
把我们到目前为止讨论的内容放在一起,我们几乎完成了用vhdl描述“电路1”的工作。我们获得以下代码:
1 entity circuit_1 is 2 port ( a : in std_logic; 3 b : in std_logic; 4
out1 : out std_logic); 5 end circuit_1; -
6 architecture behavioral of circuit_1 is 8 begin 9 out1
但是,我们仍然需要增加几行代码。这些行将添加一个包含一些重要定义的库,包括数据类型和运算符的定义。库可以由几个包组成(参见下面的图2)。我们将不得不使一个给定库的所需包对设计可见。
由于上面的示例使用数据类型“std_logal”,所以我们需要将“ieee”库中的包“std_logic1164”添加到代码中。注意,std_logicdata类型的逻辑运算符也在“std_logic1164”包中定义,否则我们必须使相应的包对代码可见。最后的代码是
1 library ieee; 2 use ieee.std_logic_1164.all 3 entity circuit_1 is 4 port ( a : in std_logic; 5
b : in std_logic; 6 out1 : out std_logic); 7 end circuit_1; 8 architecture behavioral of circuit_1 is 9 begin 10 out1
在这里,我们创建了两条新的行来超越我们所创造的。第一行添加库“ieee”,第二行指定此库中的包“std_logic1164”是必需的。因为“std_logic”是一种常用的数据类型,所以我们几乎总是需要将“ieee”库和“std_logic1164”包添加到vhdl代码中。
。 。 。 。 。 。 。 。 。
发明内容
在本文中,我们讨论了vhdl是什么,它是如何构造的,并介绍了如何使用它来描述数字电路的一些例子。您现在应该更好地理解以下几点:
代码的“实体”部分指定1)要描述的电路的名称和2)电路的端口;它建立模块与其周围环境之间的接口。
代码的“体系结构”部分描述了电路的内部操作。
vhdl库包含重要的定义,包括数据类型和操作符的定义。库本身可以由几个包组成。
我们几乎总是需要将“ieee”库和“std_logic1164”包添加到我们的vhdl代码中。
在“std_logic”数据类型的可能值中,我们通常使用‘0’、‘1’、‘z’和‘-’。
NB-IoT物联网智能温湿度监测系统的特点
【服务器数据恢复】Hp服务器raid磁盘阵列数据恢复案例
地物光谱仪应该如何正确操作?-莱森光学
光纤开关与光电开关区别
光圣RF连接器将往军用、医疗高端应用发展
VHDL概述及在描述数字电路时的结构
浅述光存储技术发展方向和关键技术
无人驾驶系统的软件架构是怎样的
空中互联网工作原理
定制化设计激发创意无限——OLED透明屏定制在设计领域的应用前景
苹果黑科技:APFS的iOS10.3正式版发布,16GiPhone用户速度更新
个人电脑价格上涨导致出货量下降 价格上涨的原因是这个?
中国移动边燕南:全力推进5G网络建设工作,预计Q3季度基本完成部署
荣耀9什么时候上市?荣耀9最新消息:华为荣耀9胡歌代言宣传海报已出,配置升级价格感人胡歌惊喜
MAD Gaze MR智能眼镜专属SDK上线,支持Unity引擎及安卓原生系统
麒麟980和骁龙845差距
京微雅格新一代金山系列FPGA:低成本应用的理想选择
一文看懂测温枪使用方法
决定汽车连接器质量的因素有哪些?汽车连接器制造工艺!
计算机怎样判断何时激活屏幕保护程序?