什么是VHDL?一文带你了解VHDL语言( 二 )


除了电路与其环境的接口之外,我们还需要描述电路的功能 。在图 1 中,电路的功能是对两个输入进行“与”运算并将结果放在输出端口上 。为了描述电路的操作,VHDL 添加了“架构”部分并将其与实体语句定义的电路_1 相关联 。
第 6 行:此行为将在下一行中描述的架构命名为“行为” 。该名称位于关键字“architecture”和“of”之间 。它还将这种架构与“电路_1”相关联 。换言之,该架构将描述“电路_1”的操作 。
第 8 行: 这指定了架构描述的开始 。
第 9行 第 9 行使用 VHDL 的语法来描述电路的操作 。两个输入 a 和 b 的 AND 在括号内,结果使用赋值运算符“<=”赋值给输出端口 。
第 10 行 这指定了架构描述的结尾 。如上所述,这些代码行描述了电路的内部操作,这里是一个简单的与门 。
将我们到目前为止讨论的内容放在一起,我们几乎完成了用 VHDL 描述“Circuit_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 <= ( a and b );
10 end Behavioral;
但是,我们仍然需要添加几行代码 。这些行将添加一个包含一些重要定义的库,包括数据类型和运算符的定义 。一个库可能由多个包组成 。我们必须使给定库的所需包对设计可见 。
由于上述示例使用数据类型“std_logic”,我们需要将“ieee”库中的“std_logic_1164”包添加到代码中 。请注意,std_logic 数据类型的逻辑运算符也在“std_logic_1164”包中定义——否则我们必须使相应的包对代码可见 。最终代码将是
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 <= ( a and b );
11 end Behavioral;
在这里,我们创建两条新线以超越我们已经创建的内容 。第一行添加库“ieee”,第二行指定需要此库中的包“std_logic_1164” 。由于“std_logic”是一种常用的数据类型,我们几乎总是需要将“ieee”库和“std_logic_1164”包添加到VHDL代码中 。
VHDL语言要素1.四类语言要素:
数据对象(Data Object)
变量(Variable)
物理含义:
暂存某些值的载体,常用于描述算法
局部量,定义于process、function、procedure
具体说明:
变量说明格式
variable 变量名:数据类型 约束条件:= 表达式;
如:variable a, b : bit;
variable count : integer range 0 to 255 := 10;
局部量,只能在进程和子程序中定义、使用,其作用范围仅局限于定义变量的进程和子程序中 。
变量的初值可用于仿真,但综合时被忽略
常量(Constant)
物理含义:
电源、地、恒定逻辑值等
全局量,可定义于上面两种场合
常量说明:
对某一个常量名赋予一个固定的值
constant 常数名:数据类型:= 表达式;
constant data: bit_vector(3 downto 0):=“1010”
constant width: integer: = 8;
constant x: new_bit: = ‘x’;
常量数据类型必须与表达式的数据类型一致
常量是全局量,其作用范围取决于常量被定义的位置 。
信号(Signal)
物理含义:
是硬件连接线,端口
全局量,定义于architecture、package、entitiy
具体说明:
电子硬件系统运行的基本特性
各部分电路工作的并行特性;
信号传输过程中的延时特性;
多驱动源的总线特性;
时序电路中触发器的记忆特性
信号是电子系统内部硬件连接和硬件特性的抽象表示:
signal 信号名:数据类型 约束条件:= 表达式;
如:signal s2 : std_logic_vector(15 downto 0);
综合时初值被忽略
信号是全局量,可在结构体、实体、块中 说明和使用信号
在进程和子程序中只能使用信号,不能说明信号
信号与端口的区别:信号本身无方向,可读可写;端口是一种有方向的隐形信号
数据类型(Data Type)
VHDL是一种强数据类型语言
设计实体中每一个常数、信号、变量、函数以及设定的各种参量都必须事先说明数据类型
同类型才能互相传递和作用
操作数(Operands)


推荐阅读