VHDL语言是一种用来电路设计的硬件描述语言。
VHDL
VHDL设计实体的组成:库和程序包(Library,Package),实体(Entity),结构体(Architecture),配置(Configuration).
“- -” 是注释,vhdl不区分大小写。
library ieee;
use ieee.std_logic_1164.all;
– 库名 .包名 .引用部分
– 以下两个库在程序中都是默认”包含”的,所以可以不写
library standard;
use std.standard.all;
library work;
use work.all;
–接下来是实体(entity)声明,相当于verilog里面的module声明
entity D_NAND is
port (
a,b,clk : IN BIT;
q : OUT BIT
);
end D_NAND;
-
可以看出有三个端口,ab是输入端口,c是输出端口,数据类型都是BIT.
-
端口类型有四种:in(输入),out(输出),inout(双向引脚),buffer(反馈引脚)
-
信号类型有比较多种,常见的有:BIT,STD_LOGIC,INTEGER等
VHDL 中,预先定义好的数据类型有多种:
整数数据类型INTEGER,布尔数据类型BOOLEAN,
标准逻辑位数据类型STD _LOGIC和位数据类型BIT。
BIT 数据类型的信号规定的取值范围是逻辑位‘0’和‘1’。
必须加单引号‘’,否则认为是整数数据类型INTEGER。
变量与信号
-
VHDL变量无延迟改变值
-
VHDL信号有一个相关的延迟
-
一个信号在某个特定的时间点被赋予一个值,并保留该值直到它被赋予一个新的值。
-
波形是一个随时间变化的数值序列。
-
例如:in1 <= ‘0’,5 ns后为’1’,15 ns后为’0’。
-
一个变量只有一个值,而一个信号有多个值/时间对。
-
离散事件模拟器通过将时间提前到下一个事件,更新信号值,然后可能调度新事件来执行VHDL代码。
VHDL Logic Operators
# Generics
Generic Example
entity abcd is generic (
p_a : integer : = 2; --p_a=2,整数类型
p_b : integer : = 7 );
port (
A : out bit_vector(0 to p_a - 1);
F :inbit );
End abcd;
Architecture
结构体的任务是:定义结构体中的各项内部使用元素,如数据类型(TYPE),常数(CONSTAND),信号(SIGNAL),元件(COMPONENT),过程(POCEDURE),变量(VARIABLE)和进程(PROCESS)等。通过VHDL语句描述实体所要求的具体行为和逻辑功能。描述各元件之间的连接。
结构体(architecture)部分,用来描述电路功能.
architecture d_a_b of D_NAND is
signal temp : BIT ;
begin
temp <= a nand b ;
process (clk)
begin
if(clk'event and clk = '1')
then q <= temp ;
end if;
end process;
end d_a_b;
-
d_a_b是architecture的名字
-
注意: <= 在这里是信号的赋值
-
nand是RTL级电路描述,与非
-
process是顺序执行语句,括号里面是敏感信号
-
程序中,除了process之外,其它的都是并行在走的.相当于always
-
在vhdl里面会分清楚触发process的事件,如代码便表示在时钟上升沿时触发if