硬件描述语言VHDL基础.ppt
《硬件描述语言VHDL基础.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言VHDL基础.ppt(72页珍藏版)》请在三一办公上搜索。
1、1,第三章 硬件描述语言VHDL基础,3.1 VHDL语言程序的基本结构 3.2 VHDL语言的数据类型及运算操作符3.3 VHDL语言的主要描述语句 3.4 VHDL语言构造体的描述方式,2,3.1 VHDL语言程序的基本结构实体(Entity),构造体(Architecture),配置(Configuration),包集合(Package),和库(Library),VHDL 大小写不敏感,3,VHDL语言设计的基本设计单元实体(Entity)描述此设计功能输入输出端口(Port);在层次化设计时,Port为模块之间的接口;在芯片级,则代表具体芯片的管脚。实体说明 ENTITY 实体名 IS
2、 PORT(端口名(,端口名):方向 数据类型名;:端口名(,端口名):方向 数据类型名);END 实体名;,Entity eqcomp4 isport(a,b:in std_logic_vector(3 downto 0);equal:out std_logic);end eqcomp4;,4,基本数据类型:BIT和BIT_VECTORSTD_LOGIC和STD_LOGIC_VECTOR端口模式,5,Out与Buffer的区别,Entity test1 is port(a:in std_logic;b,c:out std_logic);end test1;architecture a of
3、test1 isbegin b=not(a);c=b;-Errorend a;,Entity test2 is port(a:in std_logic;b:buffer std_logic;c:out std_logic);end test2;architecture a of test2 isbegin b=not(a);c=b;end a;,结论:均表示输出,但BUFFER声明的信号可以反馈到实体内部,而OUT声明的信号却不可以。,6,构造体描述设计单元具有的具体功能 结构体有三种描述方式行为描述(behavioral)数据流描述(dataflow)结构化描述(structural)格式:
4、ARCHITECTURE 构造体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义 BEGIN 并行处理语句END 构造体名;,7,构造体中的描述语句并行语句:同时执行,在进程语句(PROCESS)的外部。顺序语句:按书写顺序执行,在进程语句(PROCESS)的内部。,例如:entity sample is port(a,b:in std_logic;c:out std_logic);end sample;architecture beha of sample is signal d:std_logic;begind=a and b;C=not(d);end beha;,
5、8,3.1.2 构造体的子结构描述 3种形式的子结构描述:BLOCK描述(块描述)PROCESS描述(进程描述)SUBPROGRAMS描述(子程序描述)BLOCK语句描述格式:块标号:BLOCK BEGIN:END BLOCK 块标号;BLOCK内的语句执行顺序:并行执行,9,例如:二选一电路 ENTITY mux IS PORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux;ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3:BIT;BEGIN cale:BLOCK BEGIN tmp1=d1 AND sel;t
6、mp2=d0 AND(NOT sel);tmp3=tmp1 OR tmp2;q=tmp3;END BLOCK cale;END connect;,10,进程(PROCESS)描述格式:进程名:PROCESS(信号1,信号2,)BEGIN:END PROCESS 进程名;敏感量:是PROCESS的输入信号,写在“PROCESS”后面的括号中当PROCESS所带的敏感量任何一个发生变化时,PROCESS中的语句就会执行一遍。语句执行顺序:顺序执行。多进程的关系:并行执行。,11,例如:二选一电路 ENTITY mux1 IS PORT(d0,d1,sel:IN BIT;q:OUT BIT);END
7、 mux1;ARCHITECTURE connect OF mux1 IS BEGIN cale:PROCESS(d0,d1,sel)VARIABLE tmp1,tmp2,tmp3:BIT;-在进程中定义的变量 BEGIN tmp1:=d0 AND sel;-输入端口向变量赋值 tmp2:=d1 AND(NOT sel);tmp3:=tmp1 OR tmp2;q=tmp3;END PROCESS cale;END connect;,12,子程序描述 过程格式 PROCEDURE 过程名(参数1,参数2)IS 定义变量语句 BEGIN 顺序处理语句 END 过程名;参数:可以是输入也可以是输出
8、语句执行方式:调用者在调用过程前先将初始值传递给过程的输入参数,然后过程语句启动,按顺序自上至下执行过程结构中的语句,执行结束后,将输出值拷贝到调用者的“OUT”和“INOUT”所定义的变量或信号中。,13,例如:求最大值电路library ieee;use ieee.std_logic_1164.all;entity conpro is port(da,db:in std_logic_vector(7 downto 0);o1:out std_logic_vector(7 downto 0);end conpro;,14,architecture beha of conpro is,proc
9、edure max(a:in std_logic_vector;b:in std_logic_vector;q:out std_logic_vector)is begin if(ab)then q:=a;else q:=b;end if;end max;,begin process(da,db)variable temp:std_logic_vector(7 downto 0);begin max(da,db,temp);o1=temp;end process;end beha;,15,函数 格式 FUNCTION 函数名(参数1,参数2.)RETURN 数据类型名 IS 定义变量语句 BEG
10、IN 顺序处理语句 RETURN 返回变量名;END 函数名;参数:输入参数的个数不受限制,在函数名后的括号内声明,而输出参数只有一个,在return语句后声明;输入输出参数的属性均可省略。语句执行方式:顺序执行。,16,例如:求最大值电路architecture beha of conpack is,function max(a:std_logic_vector;b:std_logic_vector)return std_logic_vector is variable temp:std_logic_vector(7 downto 0);begin if(ab)then temp:=a;el
11、se temp:=b;end if;return temp;end max;,begin o1=max(da,db);end beha;,17,3.1.3 包集合、库和配置 库:存放编译后的数据集合 库的种类 IEEE库:std_logic STD库:standard、textioWORK库:ASIC库:用户自定义库:例如:vhdl87文件夹下的altera、std、vital、ieee 库的使用 LIBRARY 库名;USE LIBRARY_name.package_name.ITEM_name;,18,例如:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
12、例如:LIBRARY STD;USE STD.TEXTIO.ALL;库的作用范围:从一个实体说明开始到它所属的结构体、配置为止。当一个源程序中出现两个以上实体的使用说明语句时,应在每个实体说明语句前重复书写。例如:,19,Library ieee;Use ieee.std_logic_1164.all;Entity and1 isEnd and1;Architecture beha1 of and1 isBeginEnd beha1;Library ieee;Use ieee.std_logic_1164.all;Entity and1 isEnd and1;Architecture beha
13、2 of and1 isBeginEnd beha2;,20,包集合:通过编译成为库结构中的一个层次 格式 PACKAGE 包集合名 IS 说明语句 END 包集合名;PACKAGE BODY 包名 IS 说明语句 END 包集合名;使用 例如:使用在包集合bpac中定义的max函数。,21,library ieee;use ieee.std_logic_1164.all;,package bpac is function max(a:std_logic_vector;b:std_logic_vector)return std_logic_vector;end bpac;,package bo
14、dy bpac is function max(a:std_logic_vector;b:std_logic_vector)return std_logic_vector is variable temp:std_logic_vector(7 downto 0);begin if(ab)then temp:=a;else temp:=b;end if;return temp;end max;end bpac;,22,library ieee;use ieee.std_logic_1164.all;library work;use;entity conpack is port(da,db:in
15、std_logic_vector(7 downto 0);o1:out std_logic_vector(7 downto 0);end conpack;architecture beha of conpack isbegin o1=max(da,db);end beha;,现行作业库可以省略,23,配置 作用:描述层与层之间的连接关系以及实体与结构之间的连接关系,便于调试和设计。格式:CONFIGURATION 配置名 OF 实体名 IS 说明语句 END配置名;例如:用两个不同构造体的配置实现rs触发器。ENTITY rs IS PORT(set,reset:IN BIT;q,qb:BUF
16、FER BIT);END rs;,24,ARCHITECTURE rsff1 OF rs IS COMPONENT nand2 PORT(a,b:IN BIT;c:OUT BIT);END COMPONENT;BEGIN U1:nand2 PORT MAP(a=set,b=qb,c=q)U2:nand2 PORT MAP(a=reset,b=q,c=qb)END rsff1;ARCHITECTURE rsff2 OF rs ISBEGIN q=NOT(qb AND set);qb=NOT(q AND reset);END rsff2;CONFIGRATION rscon OF rs IS-选择
17、构造体rsff1FOR rsff1END FOR;END rscon;,25,32 VHDL语言的数据类型及运算操作符321 VHDL语言的客体(数据对象)客体:在VHDL语言中,凡是可以赋予一个值的对象就称为客体。分类信号(signal):代表物理设计中的某一条硬件连接线。变量(variable):代表暂存某些值的载体。常数(constant):代表数字电路中的电源和地线。,26,常数意义:对某一常数名赋予一个固定的值;综合后,连接到电源和地。格式:CONSTANT 常数名:数据类型:=表达式;例如:CONSTANT Vcc:REAL:=5.0;变量格式:VARIABLE 变量名:数据类型
18、约束条件:=表达式;例如:VARIABLE count:INTEGER RANGE 0 TO 255:=10;特点:临时数据,没有物理意义;只能在进程、函数和过程中使用,一旦赋值立即生效;用:=进行赋值。信号 格式:SIGNAL 信号名:数据类型 约束条件:=表达式;例如:SIGNAL ground:BIT:=0;,27,特点:没有方向性,可给它赋值,也可当作输入。例如:tmp3=tmp1 OR tmp2;q=tmp3;设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。在MaxPlusII中被忽略。用=进行赋值信号与变量的区别 信号赋值可以有附加延迟,变量赋值不可以有附加延迟;例如
19、:s1=s2 AFTER 10ns 信号可以看作硬件的一根连线,而变量存放临时数据,没有物理意义。作用范围不同:进程对信号敏感,对变量不敏感;信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见。,28,architecture a of start is signal tmp:std_logic;begin s0:process(a_bus)begin tmp=1;for i in 3 downto 0 loop tmp=a_bus(i)and tmp;end loop;carryout=tmp;end process s0;s1:process(tmp)begin end pro
20、cess s1;end a;,architecture a of start is begin s0:process(a_bus)variable tmp:std_logic;begin tmp:=1;for i in 3 downto 0 loop tmp:=a_bus(i)and tmp;end loop;carryout=tmp;end process s0;s1:process(tmp)-error begin end process s1;end a;,29,代入方式不同:信号的代入过程和代入语句的处理是分开进行的,而变量赋值语句一旦执行,其值立即被赋予变量。,process(a,b
21、,c,d)begin d=a;x=b+d;d=c;y=b+d;end process;运行结果:x=b+c;y=b+c;,process(a,b,c)variable d:std_logic_vector(3 downto 0);begin d:=a;x=b+d;d:=c;y=b+d;end process;运行结果:x=b+a;y=b+c;,30,VHDL标识符(Identifiers)基本标识符由字母、数字和下划线组成第一个字符必须是字母最后一个字符不能是下划线不允许连续2个下划线保留字(关键字)不能用于标识符大小写是等效的,31,322 数据类型标准数据类型:实数、整数、位、位矢量、布尔
22、量、字符、字符串、时间、正整数、错误等级。整数、浮点数方便用于数值方面的运算:加减乘除整数:integer,经常用于计数器实数:real,MaxPLusII不支持例如:Variable a:integer range 255 to+255;位:表示位信号,位的值用带单引号的1或0来表示。例如:signal a:bit:=0;或 a=0;位矢量:表示多位组成的信号,位矢量的值用双引号括起来。例如:signal a:bit_vector(3 downto 0):=“0011”;或 a=“0011”;,32,用户定义的数据类型 格式:TYPE 数据类型名,数据类型名 数据类型定义 不完整的数据类型格
23、式:TYPE 数据类型名,数据类型名;-假定义可由用户定义的数据类型包括:枚举(ENUMERATED)、整数(INTEGER)、实数(REAL)、数组(ARRAY)、时间(TIME)、记录(RECODE)枚举(ENUMERATED):格式:TYPE 数据类型名 IS(元素、元素、);作用:列举数据对象可能存在的值例如:用于定义状态机的状态Type states is(idle,start,running,pause,stop)Signal current_state:states;,33,例如:IEEE1076标准中预定义了两个枚举类型Type boolean is(False,True);T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 描述 语言 VHDL 基础

链接地址:https://www.31ppt.com/p-6595134.html