VHDL程序设计语言.ppt

上传人:本田雅阁 文档编号:2127962 上传时间:2019-02-19 格式:PPT 页数:40 大小:730.51KB
返回 下载 相关 举报
VHDL程序设计语言.ppt_第1页
第1页 / 共40页
VHDL程序设计语言.ppt_第2页
第2页 / 共40页
VHDL程序设计语言.ppt_第3页
第3页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《VHDL程序设计语言.ppt》由会员分享,可在线阅读,更多相关《VHDL程序设计语言.ppt(40页珍藏版)》请在三一文库上搜索。

1、长江大学电子与信息学院电子工程系 郑恭明 TEL:18986660902 EMAIL:,VHDL语言及编程基础,HDL语言,掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5个步骤是相辅相成的。 HDL语言种类: AHDL VHDL Verilog HDL SystemVerilog SystemC,HDL语言,HDL语言,1987,1995,2005,future,HDL语言国际标准,FPGA开发工具,综合,仿真,ALTERA,XILIINX,Synplify Pro Mentor Leonardo Spectrum

2、Synopsys Express,Modelsim,QuartusII NiosII EDS SOPC Builder DSP Builder,ISE EDK SDK System Generator, VHDL语言,全称: Very-High-Speed Integrated Circuit Hardware Description Language 是一种非常高速硬件(数字电路)描述语言。主要用于描述数字系统的结构,功能和接口。语言形式和描述风格与句法十分类似于一般的计算机高级语言 。, 起源于八十年代,由美国国防部开发 两个标准:VHDL87、VHDL93, 由软件设计到硬件实现之间的媒

3、介,CPLD / FPGA (可编程器件),电子系统的设计模块,VHDL设计,VHDL文件,库(Library)程序包(Packages) 声明在设计或实体中将用到的常数,数据类型,元件及子程序等,实体(Entities) 声明到其他实体及其他设计的接口,即定义本设计的输入/出端口,结构体 (Architectures) 定义了实体的实现。即电路的具体描述,VHDL基本构成,如何使用VHDL描述硬件实体,VHDL程序的基本结构,实体 说明(Entity) (), VHDL程序的基本结构,五部分,构造体 (Architecture) (),配置 (Configuration),包集合 (Pack

4、age),库 (Library),用于描述设计的系统的外部接口,用于描述系统内部的结构和行为,安装具体元件到实体-结构体对,存放设计模块共享的数据类型、常数和子程序等,专门存放预编译程序包的地方,library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity count is port ( clock,reset: in STD_LOGIC; dataout: out STD_LOGIC_VECTOR (3 downto 0) ); end count; architecture behavi

5、orl of count is signal databuffer: STD_LOGIC_VECTOR (3 downto 0); begin dataout=databuffer; process(clock,reset) begin if (reset=1) then databuffer=“0000“; elsif (clockevent and clock=1) then if databuffer=“1000“ then databuffer=“0000“; else databuffer=databuffer+1; end if; end if; end process; end

6、behavioral;,VHDL程序的实体,实体:VHDL程序的描述对象称为实体。简单的实体是由实体说明 和结构体两部分组成的。,(1)实体 ENTITY VHDL的描述对象称为实体。由实体说明部分和构造体部分组成, 端口名 :端口模式 数据类型);,ENTITY 实体名 Is,End 实体名;,格式:,Port ( 端口名 :端口模式 数据类型;,说明: 定义本设计的输入/输出端口 端口名是每个系统引脚的名称,一般用几个英文字母组成 方向:IN OUT INOUT BUFFER 数据类型:std_logic , std_logic_vector integer , boolean , bit

7、 , bit_vector,端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块) IN OUT BUFFER INOUT,LIBRARY IEEE; USE IEEE.STD_LOGIC.1164.ALL; ENTITY add8 IS PORT ( b : IN STD _LOGIC_VECTOR(7 DOWNTO 0); a : IN STD _LOGIC_VECTOR(7 DOWNTO 0); Ci : IN STD_LOGIC; Sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) C

8、o : OUT STD_LOGIC ); END add8;,例: add8 实体说明部分,实体add8/8位加法器外部接口等效逻辑电路图,(2)结构体 (ARCHITECTURE) 结构体具体地描述了设计实体的逻辑功能或内部电路结构关系,从而建立设计实体输入与输出之间的关系。结构体功能可以用三种方式进行描述,即行为描述、数据流描述、结构描述,另外,还可以采用混合描述。,三种描述方式:,行为描述方式(behavioral),数据流描述方式(dataflow),结构描述方式(structure),结构体的构造,ARCHITECTURE 结构体名 Of 实体名 Is,Begin 功能描述语句;-并

9、行语句 End 结构体名;,结构体格式:,定义语句 内部信号、常数、数据类型、函数等的定义,结构体中信号定义 位于关键字ARCHITCTURE和BEGIN之间,用于对结构内部 使用的信号,常数,数据类型,函数进行定义。,注意:,(1)这是在结构体内部定义,而不是实体内部。,(2)实体说明中定义I/O信号为外部信号,而结构体定义的信号为内部信号。,例:结构体的信号定义方法,ARCHITECTURE structural OF mux IS,SIGNAL ab: bit; SIGNAL x: std_logic_vector (0 to 7);,-信号不必标注模式IN,OUT,ENTITY mux

10、 IS PORT(d0, d1 : IN BIT ; Sel : IN BIT ; G : OUT BIT) ; END MUX ;,ARCHITECTURE dataflow OF mux IS BEGIN g=(D0 AND sel) OR (NOT sel AND D1); END dataflow;,例:二选一电路(仪器),LIBRARY IEEE; USE IEEE.STD_LOGIC.1164.ALL;,- 并行语句描述结构体,mux 实体的真值表,LIBRARY IEEE; USE IEEE std_logic_1164.ALL; ENTITY comparator IS POR

11、T (a , b : IN std_logic_vector(7 downto 0); g : OUT std_logic); END comparator; ARCHITECTURE behavioral OF comparator IS BEGIN Comp: PROCESS (a, b) BEGIN IF a=b THEN G=1; ELSE G=0; END IF; END process comp; END behavioral;,举例:设计八位比较器,实体,库,包说明,结构体,进程,3种方法描述结构体 (1) 行为描述法 : 采用进程语句,顺序描述被称设计实体的行为。 (2) 数据

12、流描述法:采用进程语句,顺序描述数据流在控制流 作用下被加工,处理,存储的全过程。 (3) 结构描述法:采用并行处理语句描述设计实体内的结构组 织和元件互连关系。,1. 行为描述法 结构体的行为描述所希望电路的功能或者电路行为,而没有直接指明或涉及实现这些行为的硬件结构。主要是指顺序语句描述。,ARCHITECTURE behavioral OF counter signal cnt_ff:integer range 0 to 255; BEGIN PROCESS(clock,reset,cnt_ff) BEGIN IF reset=1 THEN cnt_ff=0; ELSIF (clock=

13、1 AND clockEVENT) THEN cnt_ff=cnt_ff+1; END IF; END PROCESS; END behavioral;,系统设计的描述等级-行为级,2. 结构化描述 结构体的结构化描述给出了实体内部结构、它所包含的模块或元件及其互连关系;与实体外部引线的对应关系。,ARCHITECTURE structural OF rsff IS COMPONENT nand2 PORT( a,b : IN BIT; c : OUT BIT); END COMPONENT; BEGIN u0:nand2 PORT MAP (a=set, b=qb, c=q ); u1:na

14、nd2 PORT MAP (a=reset, b=q, c=qb ); END structural;,系统设计的描述等级-逻辑门级,3. 数据流描述法 结构体的数据流描述法反映了从输入数据到输出数据之间所发生的逻辑变换,或者说描述了数据流程的运动路径、运动方向和运动结果。以 并行信号赋值语句为基础,LIBRARY IEEE; USE IEEE std_logic_1164.ALL; ENTITY comparator IS PORT (a , b : IN std_logic_vector(7 downto 0); g : OUT std_logic); END comparator; AR

15、CHITECTURE dataflow OF comparator IS BEGIN g=“1“ when (a = b) else“0“; END dataflow;,系统设计的描述等级-RTL级,(3) 配 置,描述层与层之间的关系以及实体与结构之间的连接关系。 用于在多构造体中的实体中选择构造体,例如,在做RS触发器的实体中使用了两个构造体,目的是研究各个构造体描述的RS触发器的行为性能如何,但是究竟在仿真中使用哪一个构造体的问题就是配置问题。 配置语句格式: CONFIGURATION 配置名 OF 实体名 IS 说明语句 END 配置名;,默认配置格式 CONFIGURATION 配

16、置名 OF 实体名 IS FOR 选配构造体名 END FOR; END 配置名; 例:两个构造体,可以用配置语句进行设置: CONFIGRATION rscon OF rs IS FOR rsff1 /选择构造体rsff1 END FOR; END rscon; ENTITY rs IS PORT(set,reset:IN BIT; q,qb: BUFFER BIT); END rs;,ARCHITECTURE rsff1 OF rs IS COMPONENT nand2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT; BEGIN U1:nand2

17、 PORT MAP(a=set, b=qb, c=q) U2:nand2 PORT MAP(a=reset, b=q, c=qb) END rsff1; ARCHITECTURE rsff2 OF rs IS BEGIN q=NOT(qb AND set); qb=NOT(q AND reset); END rsff2,VHDL设计时注意点,实体名与文件名要一样 文件存放位置 取名要规范 (实体名、端口信号名) 合理确定设计所需的端口信号,(4)库 (LIBRARY),库(Library)是用于存放预先编译好的程序包(Package),程序包中定义了数据集合体、逻辑操作和元件等。主要是声明在设

18、计或实体中将用到的常数,数据类型,元件及子程序等。,1、库的种类,IEEE库 STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD (Synopsys) STD_LOGIC_SIGNED、 STD_LOGIC_UNSIGNED、 STD_LOGIC_ARITH STD库: STANDARD、TEXTIO 若使用STANDARD包中的数据可以不按标准格式说明,但是若使用TEXTIO包,则需要按照如下格式说明: LIBRARY STD; USE STD.TEXTIO.ALL,2、库的用法,使用格式:LIBRARY 库名;,USE 库名. 程序包名. 项目名;,例: LIBR

19、ARY IEEE USE ieee.std_logic_1164.all,该例说明要使用IEEE库中的1164包中所有项目,库的作用范围: 库的作用范围从一个实体说明开始到它所属的结构体、 配置为止;当有两个实体时,第二个实体前要另加库和包 的说明。,通常在一个实体中对数据类型、常量等进行的说明只可以在一个实体中使用,为使这些说明可以在其它实体中使用,VHDL提供了程序包结构,包中罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义,它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明。 例如: USE IEEE.STD_LOGIC_1164

20、.ALL,(5) 程序包(PACKAGE),程序包由两部分组成:程序包说明和程序包体 程序包说明为程序包定义接口,声明包中的数据类型、元件、函数。其方式与实体定义模块接口非常相似。 程序体规定程序的实际功能,存放说明中的函数和元件。其方式与结构体语句方法相同。,包结构格式,程序包说明: PACKAGE 包名 IS 说明语句 END 包名 包头中列出所有项的名称,程序包体: PACKAGE BODY 包名 IS 说明语句 END 包名; 包体给出各项的具体细节,程序包说明,USE STD.LOGIC.ALL PACKAGE logic IS TYPE three_level_logic IS (

21、0,1,z); /数据类型项目 CONSTANT unknown_value : three_level_logic :=0;/ 常数项目 FUNCTION invert (input: three_level_logic)/函数项目 RETURN three_level_logic; END logic;,程序体说明,PACKAGE BODY logic IS FUNCTION invert (input: three_level_logic)/函数项目描述 BEGIN CASE input IS WHEN 0 = RETURN 1; WHEN 1 = RETURN 0; WHEN Z = RETURN Z; END CASE; END invert; END logic,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1