1、3.1 VHDL基本知识基本知识 VHDL作为作为IEEE标准的硬件描述语言和标准的硬件描述语言和EDA的重要组成部分,经过十几年的发展、应用和完的重要组成部分,经过十几年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计善,以其强大的系统描述能力、规范的程序设计结构、灵活的语言表达风格和多层次的仿真测试结构、灵活的语言表达风格和多层次的仿真测试手段,在电子设计领域受到了普遍的认同和广泛手段,在电子设计领域受到了普遍的认同和广泛的接受,成为现代的接受,成为现代EDA领域的首选硬件设计语言。领域的首选硬件设计语言。专家认为,在新世纪中,专家认为,在新世纪中,VHDL与与Verilog语言
2、将语言将承担起几乎全部的数字系统设计任务。承担起几乎全部的数字系统设计任务。3.1.1 VHDL程序设计基本结构程序设计基本结构 结构体结构体(ARCHITECTURE)进程进程或其它并行结构或其它并行结构实体(实体(ENTITY)配置(配置(CONFIGURATION)库、程序包库、程序包设设计计实实体体 1 1、库、程序包库、程序包库(库(LIBRARYLIBRARY)存放预先设计好的程序包和存放预先设计好的程序包和数据的集合体。数据的集合体。程序包(程序包(PACKAGEPACKAGE)将已定义的数据类型、将已定义的数据类型、元件调用说明及子程序收集在一起,供元件调用说明及子程序收集在一
3、起,供VHDLVHDL设计设计实体共享和调用,若干个包则形成库。实体共享和调用,若干个包则形成库。IEEE库包括:库包括:STD_LOGIC_1164STD_LOGIC_ARITH是是SYNOPSYS公司加公司加入入IEEE库程序包,包括:库程序包,包括:STD_LOGIC_SIGNED(有符号数)(有符号数)STD_LOGIC_UNSIGNED(无符号数)(无符号数)STD_LOGIC_SMALL_INT(小整型数小整型数)VHDL 87版本使用版本使用IEEE STD 1076-1987 语法标语法标准准VHDL 93版本使用版本使用IEEE STD 1076-1993 语法标语法标准准例
4、:例:LIBRARY IEEEUSE IEEE STD_LOGIC_1164.ALL描述器件的输入、输出端口数据类型中将要用到描述器件的输入、输出端口数据类型中将要用到的的IEEE的标准库中的的标准库中的STD_LOGIC_1164程序包。程序包。2、实体(、实体(ENTITY)说明)说明格式:格式:ENTITY 实体名实体名 IS类属参数说明类属参数说明端口说明端口说明END 实体名;实体名;规则:(规则:(1)类属参数说明必须放在端口说明之)类属参数说明必须放在端口说明之前,用于指定如矢量位数、延迟时间等参数。例前,用于指定如矢量位数、延迟时间等参数。例如如GENERIC(m:TIME:=
5、1 ns););-说明说明m是一个值为是一个值为1ns的时间参数的时间参数则程序语句:则程序语句:tmp1=d0 AND se1 AFTER m;-表示表示d0 AND se1经经1ns延迟后才送到延迟后才送到tem1。(2)端口说明是描述器件的外部接口信号的说)端口说明是描述器件的外部接口信号的说明,相当于器件的引脚说明。其格式为:明,相当于器件的引脚说明。其格式为:PORT(端口名(端口名,端口名,端口名:方向:方向 数据类型名;数据类型名;:端口名端口名,端口名,端口名:方向:方向 数据类型名);数据类型名);例如:例如:PORT(a,b:IN STD_LOGIC;s:IN STD_LO
6、GIC;y:OUT STD_LOGIC););端口方向包括:端口方向包括:IN;-输入,输入,符号:符号:OUT;-输出,输出,符号:符号:INOUT;-双向,双向,符号:符号:BUFFER;-具有读功能的输出,符号:具有读功能的输出,符号:D QBUFFER 端口端口3、结构体(、结构体(ARCHITECTURE)是基本设计是基本设计单元的实体,用于指明设计基本单元的行为、元单元的实体,用于指明设计基本单元的行为、元件及内部连接关系,即定义设计单元的功能。件及内部连接关系,即定义设计单元的功能。结构体的结构:结构体的结构:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS说
7、明语句说明语句;-为内部信号、常数、数据类型、为内部信号、常数、数据类型、函数定义函数定义BEGIN功能描述语句功能描述语句END ARCHITECTURE 结构体名;结构体名;例如:或门的结构体例如:或门的结构体 ARCHITECTURE or1 OF temp1 ISSIGNAL y:STD_LOGIC;BEGINy=a OR b;END ARCHITECTURE or1;4、配置(、配置(CONFIGURATION)把特定的结把特定的结构体关联(指定给)一个确定的实体,为大型系构体关联(指定给)一个确定的实体,为大型系统的设计提供管理和工程组织。统的设计提供管理和工程组织。3.1.2 基
8、本逻辑器件的描述基本逻辑器件的描述 1、或门的描述、或门的描述LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY or1 ISPORT(a,b:IN STD_LOGIC;y:OUT STD LOGIC););END or1;ARCHITECTURE example1 OF or1 ISBEGIN y=a OR b;END example1;2、半加器的描述、半加器的描述LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD LOGIC;so,co:OUT ST
9、D LOGIC););END h_adder;ARCHITECTURE example2 OF h_adder ISBEGIN so=a XOR b;co=a AND b;END example2;absoco3、2选选1数据选择器的描述数据选择器的描述LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY mux21 ISPORT(a,b:IN STD LOGIC;s:IN STD LOGIC;y:OUT STD LOGIC););END mux21;ARCHITECTURE example3 OF mux21 ISBEGIN y=a WHEN s=0
10、 ELSE b;END ARCHITECTURE example3;ab sy4、锁存器的描述、锁存器的描述qD QenadLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY latch1 ISPORT (d:IN STD_LOGIC;ena:IN STD_LOGIC;q:OUT STD_LOGIC);END latch1;ARCHITECTURE example4 OF latch1 ISSIGNAL sig_save:STD_LOGIC;BEGIN PROCESS(d,ena)BEGINIF ena=1 THENSig_save=D;END IF;Q=sig_save;END PROCESS;END example4;