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