第4章VHDL语言基础.ppt
《第4章VHDL语言基础.ppt》由会员分享,可在线阅读,更多相关《第4章VHDL语言基础.ppt(75页珍藏版)》请在三一文库上搜索。
1、FPGA-CPLD原理及应用,山东工商学院 电子信息系 张守祥 ,第四章 VHDL语言基础,硬件特性,工程(实体),外部(可视部分,也称端口),内部(不可视,也称内部功能和算法),库,实体(Entity),结构体 (Architecture),进程或其它并行结构,配置(Configuration),VHDL结构,程序包,Library(程序库) Package(程序包) Entity(实体) Architecture(结构体) Configuration(配置),VHDL程序由5个部分组成,一个实体可以拥有多个不同的结构体,而每个结构体在实体中的地位是相同的。可以利用配置语句为实体指定一个结构
2、体。,VHDL程序由5个部分组成,库,存放已编译过的实体、结构体、程序包和配置。,程序包,由一组对外可见的信号、常量、数据类型、子程序、属性等组成的程序集合。,实体,描述系统的外部信号接口。,结构体,描述系统的行为,系统数据流程,系统组织结构形式。,配置,-eqcomp4 is a four bit equality comparator Library IEEE; use IEEE.std_logic_1164.all; entity eqcomp4 is port(a, b:in std_logic_vector(3 downto 0); equal :out std_logic); en
3、d eqcomp4; architecture dataflow of eqcomp4 is begin equal = 1 when a=b else 0; End dataflow;,VHDL组成,eqcomp4.vhd,包,实体,结构体,文件名和实体名一致,每行;结尾,关键字begin,关键字end后跟实体名,关键字end后跟结构体名,库,一、实体(Entity),描述此设计功能输入输出端口(Port) 在层次化设计时,Port为模块之间的接口 在芯片级,则代表具体芯片的管脚,A3.0,B3.0,equal,Entity eqcomp4 is port(a, b: in std_logi
4、c_vector(3 downto 0); equal: out std_logic ); end eqcomp4;,Port (端口名称,端口名称:端口模式 数据类型; 端口名称,端口名称:端口模式 数据类型 );,端口声明,确定输入、输出端口的数目和类型。,输入(Input) 输出(Output) 双向(Inout):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口 缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号,端口模式符号图,out 和 buffer 的区别,OUT、INOUT与BUFFER模式的区别,例:一个完整描述(3 比特
5、计数器),计数器等效描述(out与buffer的区别),指端口上流动的数据表达格式,为预先定好的数据类型,如:bit、bit_vector、integer、std_logic、std_logic_vector 等。 例: entity m81 is port (a: in std_logic_vector(7 downto 0); sel: in std_logic_vector(2 downto 0); b:out bit ); end entity m81;,3、数据类型,作用:用于描述设计实体的内部结构以及实体端口之间的逻辑关系 两个组成部分: 说明部分:对数据类型、常数、信号、子程序、
6、 元件等元素的说明。 功能描述部分:以各种不同的描述风格对系统的 逻辑功能进行描述。 常用的描述风格有: 行为描述、数据流描述、结构化描述。,二、 结构体,二、 结构体,实体与结构体的关系,设计实体,结构体1,结构体2,结构体3,结构体n,。 。 。,一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。,注:同一实体的结构体不能同名。定义语句中的常数、信号不能与实体中的端口同名。,architecture 结构体名称 of 实体名称 is 说明语句 ; begin (功能描述)语句; end architecture 结构体名称;,结构体的语法,例:结构体中错误的信号声明
7、,设计实体,结构体1,结构体2,结构体3,结构体n,。 。 。,一个设计实体的多种实现方式,配置:从某个实体的多种结构体描述方式中选择 特定的一个。,三、配置,configuration 配置名 of 实体名 is for 选配结构体名 end for ; end 配置名;,简单配置的语法,library ieee; use ieee.std_logic_1164.all; entity nand is port(a: in std_logic; b: in std_logic; c: out std_logic); end entity nand; architecture art1 of
8、nand is begin c=not (a and b); end architecture art1;,一个与非门不同实现方式的配置,architecture art2 of nand is begin c=1 when (a=0) and (b=0) else 1 when (a=0) and (b=1) else 1 when (a=1) and (b=0) else 0 when (a=1) and (b=1) else 0; end architecture art2;,configuration first of nand is for art1; end for; end fi
9、rst; configuration second of nand is for art2 end for; end second;,四、 库,库是一种用来存储预先完成的程序包和数据集合体的仓库。 VHDL语言中存在多个不同的库,库与库之间独立,不可嵌套; 库的好处:达到资源共享。,1、格式:LIBRARY 库名;,2、库的种类,IEEE库 STD库(默认库) ASIC库 WORK库(默认库) 用户定义库,库的分类,IEEE库,IEEE库是最常用的资源库,包含IEEE标准的程序包和其他一些支持工业标准的程序包。 还有一些程序包,如SYNOPSYS公司提供的 STD_LOGIC_ARITH ST
10、D_LOGIC_UNSIGNED STD_LOGIC_SIGNED 不属于IEEE标准,但仍汇集在IEEE库中。,该库中的程序包并非符合VHDL语言标准,因此在使用时必须以显示表达出来。 格式:LIBRARY IEEE ; 库内程序包: std_logic_1164 (std_logic types ,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ UNSIGNED.CONV_INTEGER; 上例表明,要使用IEEE库中STD_LOGIC_1164包 集合中的所有过程和函数,这里项目名为ALL, 表示包集合中的所有
11、项目都要用。,库调用举例,程序包(Package):将已定义的常数、数据类型、元件语句、子程序等收集起来组成一个集合,以便被更多的VHDL设计实体进行访问和共享。,五、程序包(包集合)Package,程序包结构: 程序包说明(包首) 程序包主体(包体),包声明项可由以下语句组成: use 语句(用来包括其它程序包); 类型说明;子类型说明;常量说明; 信号说明;子程序说明;元件说明。,package 程序包名 is 包说明项 end 程序包名;,1、程序包说明(包首),语法:,包首说明,包体说明项可含: use 语句; 子程序说明; 子程序主体; 类型说明; 子类型说明; 常量说明。,pack
12、age body 程序包名 is 包体说明项 end 程序包名;,2、程序包包体,程序包的内容:子程序的实现算法。,程序包体并非必须,只有在程序包中要说明子程序时,程序包体才是必须的。 程序包首可以独立定义和使用。,包首与包体关系,package seven is subtype segments is bit_vector(0 to 6); type bcd is range 0 to 9; end seven; library work; use work.seven.all; entity decoder is port(input: in bcd; drive: out segment
13、s); end decoder; architecture art of decoder is begin,程序包,with input select drive=B“1111110” when 0, B“0110000” when 1, B“1101101” when 2, B“1111001” when 3, B“0110011” when 4, B“1011011” when 5, B“1011111” when 6, B“1110000” when 7, B“1111111” when 8, B“1111011” when 9, B“0000000” when others; end
14、architecture art;,程序包,包的基本格式,PACKAGE IS 常数声明 类型声明 信号声明 子程序声明 元件声明 以及其它声明 END ; (1076-1987) END PACKAGE ; (1076-1993),PACKAGE BODY IS use 语句;子程序声明;子程序体;类型声明; 子类型声明;常量声明。 END ; (1076-1987) END PACKAGE BODY ; (1076-1993),库和程序包的调用,LIBRARY IEEE; USE IEE.STD_LOGIC_1164.ALL; USE IEE.STD_LOGIC_ARITH.ALL; US
15、E IEE.STD_LOGIC_UNSIGNED.ALL;,VHDL语言要素,VHDL数据对象,常数(Constant) 固定值,不能在程序中被改变 增强程序的可读性,便于修改程序 在综合后,连接到电源和地 可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定 Constant data_bus_width: integer := 8;,VHDL数据对象,信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当作输入 在Entity中和Architecture中定义 设定的初始值在综合时没有用,只是在仿真时在开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 VHDL语言基础 VHDL 语言 基础
链接地址:https://www.31doc.com/p-9139174.html