VHDL 硬件描述语言
Very high speed integration circuits HDL
起源: 1985 年,美国国防部提出计划;
1987 年成为 IEEE1076 标准;
1993 年进一步修订完善;
是目前标准化程度最高,适应性最广的 HDL 语言;
特点:
全方位硬件描述—从系统到电路
多种描述方式—适应层次化设计
数据类型丰富,语法严格清晰
串行和并行通用,物理过程清楚
与工艺结构无关,可用于各类 EDA 工具
VHDL 的设计要点
用于描述硬件连接的结构性程序,采用文本文件编写
硬件电路模型:电路模块,具有外部接口和内部结构
VHDL用程序模块表达硬件模块 :
设定外部端口 设计内部结构
VHDL 的程序结构
VHDL程序由模块构成,每个模块对应于一个电路块;
模块由三部分组成:
库和包 library(设计资源)
实体 entity (外部端口)
构造体 architecture (内部结构)
P.269 图4-52
例 1 inhibit gate ( p.269 表 4-26)
library ieee;
use ieee.std_logic_1164.all;
entity inhibit is
port ( x,y: in std_logic ;
z: out std_logic);
end inhibit;
architecture rtl of inhibit is
begin
z<='1' when x='1' and y='0'
else '0';
end rtl;
实体
实体基本格式 p.270 表 4-27
entity entity-name is
port (signal-name : mode signal-type;
……
signal-name : mode signal-type);
end entity-name;
实体以 entity 实体名 is 开始,以 end 实体名; 结束。
实体的主要内容为端口(port)说明;
要点:实体名、信号名、信号模式、信号类型
实体名、信号名
英文字母和数字构成,字母开头;
可在名称中使用单个下划线符号_ ;
字母不分大小写;
名称应具有意义,方便记忆;
名称不能重复使用;
进行编译时,文件名和项目名必须与实体名相同;
信号模式
每个端口信号都必须规定信号模式;
信号模式规定信号流动的方向;
常用信号模式:
in 信号由该端口输入
out 信号由该端口输出
inout 双向端口,通常由三态门控制
buffer 输出端口,但模块内可以使用该信号
buffer 信号只能定义在两个端口之间;
buffer 信号连接的端口模式都应为 buffer;
信号类型:
所有信号都必须规定其类型;
数字电路设计中最常用的类型为:
std_logic 单个逻辑量
std_logic_vector 逻辑数组、总线逻辑量
其他语法要点
除了第一行 entity … is 以外,每一句以分号“; ”结
束 ;
编写程序时,一行可以含若干句(以分号间隔),一句
也可以写若干行;
在一句结束后,可以用“--”符号后接说明文字,这些文
字用于帮助理解程序,不会对编译产生影响;
单词之间必须使用空格;并列信号间使用逗号;
实体编写示例
4 选 1 数据选择器 kmux4
方式 1
entity kmux4 is
port ( d0,d1,d2,d3: in std_logic;
a0,a1 : in std_logic;
s : in std_logic;
y : out std_logic);
end kmux4;
方式 2
entity kmux4 is
port ( d: in std_logic_vector (0 to 3);
a : in std_logic_vector (1 downto 0);
s : in std_logic;
y : out std_logic);
end kmux4;
类属说明 generic
实体中可以设置类属说明语句,通常位于 port 语句之前;
类属是对端口界面常数的说明,类属值可以由实体外部重新
设定;
基本格式
generic(constant-name : constant-type: =constant-value ;
……
constant-name : constant-type: =constant-value) ;
例 : n 选 1 数据选择器
entity kmux_n is
generic(n:integer:=4;
m:integer:=2);
port ( d: in std_logic_vector (n-1 downto 0);
a : in std_logic_vector (m-1 downto 0);
s : in std_logic;
y : out std_logic);
end kmux_n;
MAX+PLUS Ⅱ的文本输入方式
1 建立文件
打开文本编辑器 (Text Eidor) , 选择 file/save as 建立.vhd
文件;文件名一定要与所设计电路的模块名称(entity 名)
完全一致;
2 输入 VHDL 程序; (或由其他文本编辑器复制过来)
3 程序的检查编译
选择 file/project/set project to current file,为当
前文件建立项目;
选择 asigne/devi ce: MAX7000/AUTO,为编译目标指定 PLD
器件;
选择 对程序进行保存、检查;
根据检查提示错误对程序进行修改,直到完成检查;
使用编译器对程序进行编译;
选择 file/create de fault symbol 将所设计电路保存为符
号文件(模块),在以后的设计中,可以像调用其他元件一样
调用此模块;
作业:
为 mf 库中的下列 74 系列集成电路编写实体:
74138 74148 74161 74194
实体名和各端口名均采用库中已规定的名称;