VHDL 基本结构.ppt

上传人:s****8 文档编号:67234222 上传时间:2022-12-24 格式:PPT 页数:70 大小:4.67MB
返回 下载 相关 举报
VHDL 基本结构.ppt_第1页
第1页 / 共70页
VHDL 基本结构.ppt_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《VHDL 基本结构.ppt》由会员分享,可在线阅读,更多相关《VHDL 基本结构.ppt(70页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、LOGO第第3 3 章章 VHDLVHDL程序的基本结构程序的基本结构 LOGO主主 要要 内内 容容VHDLVHDL设计的基本单元及其构成设计的基本单元及其构成设计的基本单元及其构成设计的基本单元及其构成 1VHDLVHDL构造体描述的几种方法构造体描述的几种方法构造体描述的几种方法构造体描述的几种方法 2 包集合、包集合、包集合、包集合、库及配置库及配置库及配置库及配置 34VHDLVHDL构造体的子结构描述构造体的子结构描述构造体的子结构描述构造体的子结构描述 LOGOVHDL语言程序通常包含5部分:实体说明entity:描述所设计系统的外部接口信号,是可见的。构造体architectu

2、re:描述所设计系统的内部的结构和行为,是不可见的。配置configuration:选取所需单元组成系统的不同版本包集合package:存放各设计模块都能共享的数据类型、常数、子程序和函数。库library:存放已经编译好的实体、构造体、包集合和配置LOGO3.1 VHDL语言设计的基本单元及其构成 VHDL语言设计的基本单元就是一个设计实体。语言设计的基本单元就是一个设计实体。LOGOVHDL语言一般结构库、程序包调用ENTITY声明ARCHITECTURE定义LOGOVHDL语言一般结构LOGOVHDL语言基本单元组成:语言基本单元组成:实体说明实体说明+构造体说明构造体说明例如:二选一电

3、路设计单元的例如:二选一电路设计单元的VHDL描述:描述:ENTITY mux ISgeneric(m:time:=1ns);PORT(d0,d1,sel:in bit;q:out bit);END mux;Architecture dataflow of mux isBeginprocess(d0,d1,sel)variable tmp1,tmp2,tmp3:bit;begin tmp1:=d0 and sel;tmp2:=d1 and(not sel);tmp3:=tmp1 or tmp2;q=tmp3 after m;end process;End dataflow;d0d1selq&1

4、qd0d1selLOGO3.1.1 实体说明 实体说明实体说明是一个设计实体的表层设计单元,设计实体的表层设计单元,描述设计实体与外部电路进行接口;规定设计单描述设计实体与外部电路进行接口;规定设计单元的输入输出接口信号或引脚,是设计实体经封元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。装后对外的一个通信界面。实体说明实体说明用于定义电路的输入输出引脚,但用于定义电路的输入输出引脚,但并不描述电路的具体构造和实现的功能。并不描述电路的具体构造和实现的功能。ENTITY Fredevider isport (clock:in std_logic;clkout:out std_

5、logic);end;clockclkoutFredevider输入输出LOGO实体声明格式实体说明单元的常用语句结构如下:实体说明单元的常用语句结构如下:ENTITY 实体名实体名 IS GENERIC(类属表类属表);PORT(端口表端口表);END 实体名;实体名;中间在方括号内的语句描述,在特定的情况下中间在方括号内的语句描述,在特定的情况下并非是必须的并非是必须的。例如:构建一个例如:构建一个VHDL仿真测试基准等情况中可以省去方括号仿真测试基准等情况中可以省去方括号中的语句。中的语句。LOGO实体声明格式LOGO格式说明1)实体名 实体名必须与文件名相同,否则编译时会出错。LOGO

6、2)类属参数可选项。类属可选项。类属(GENERIC)参数是一种端口界参数是一种端口界面常数,常以一种说明的形式放在实体说面常数,常以一种说明的形式放在实体说明部分。是一些信息,默认的参数值。如明部分。是一些信息,默认的参数值。如端口大小、总线宽度、时间等。端口大小、总线宽度、时间等。类属参数说明的一般书写格式如下:类属参数说明的一般书写格式如下:GENERIC(常数名:数据类型常数名:数据类型:=设定值设定值 ;常数名:数据类型;常数名:数据类型:设定值:设定值);LOGO2)类属参数例如:例如:ENTITY MCK IS GENERIC(WIDTH:INTEGER:=16;RISEW:TI

7、ME:=1 ns;FALLW:TIME:=1 ns);PORT(ADD_BUS:OUT STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0);END MCK;注意:注意:(1)该模块被调用时从外部传入参数值。该模块被调用时从外部传入参数值。(2)(2)参数值可以为本实体所属的结构体使用。参数值可以为本实体所属的结构体使用。(3)(3)传入的类属参数作为常量使用,在使用时不能修改。传入的类属参数作为常量使用,在使用时不能修改。LOGO3)端口名是设计者赋予每个外部引脚的名称。端口名:端口名:是设计者为实体的每一个对外通道所取的名字;(实现该设计程序的器件外部引脚的名称)标示符LO

8、GO4)端口模式(方向)端口方向含义IN 输入OUT输出(结构体内部不能读取)INOUT双向(输入输出)BUFFER输出(结构体内部可读取)端口模式:是指这些端口上的数据流动方式,如输入或输出等端口模式:是指这些端口上的数据流动方式,如输入或输出等;省略为输入(省略为输入(IN)。端口方向(以设计实体为主体)(以设计实体为主体)注意:注意:端口均为信号,不能是变量和常量。端口均为信号,不能是变量和常量。LOGO5)端口数据类型l标准类型:BIT和和BIT_VICTORl扩展类型:STD_LOGIC和和STD_LOGIC_VECTOR扩展类型需要库和程序包的支持,并且需要在程序中指明:libar

9、ary ieee;Use ieee.std_logic_1164.all;l注意:注意:端口信号与类属参数的数据类型不能在端口信号与类属参数的数据类型不能在entity中中定定义义,必须在程序包必须在程序包package 中预先定义。中预先定义。LOGO实体声明格式 注意事项LOGO实体说明举例对对rsff实体写一段实体写一段VHDL描述,即:描述,即:ENTITY rsff IS PORT(set,reset:IN BIT;q,qb:BUFFER BIT);END rsff;l练习:写出下面3-8译码器的实体说明LOGO3.1.2 构造体(结构体)构造体(结构体)ARCHITCTURE构造体

10、的描述方法:构造体的描述方法:行为级描述、行为级描述、RTL(数据流)级数据流)级描述、结构描述(逻辑元件连接)描述、结构描述(逻辑元件连接)构造体是用于描述设计实体的构造体是用于描述设计实体的内部结构内部结构(元件及内部的(元件及内部的连接关系)以及实体端口间的连接关系)以及实体端口间的逻辑关系(实体的行为)逻辑关系(实体的行为)。注意:注意:构造体一定要跟在实体说明的后面。构造体一定要跟在实体说明的后面。LOGO构造体1个实体可对应若干个结构体,每个结构分别代表该实体功能的不同实现方案或不同描述方式。同一结构体不能为不同的实体所拥有同一时刻,只有一个结构体起作用,可以通过配置来决定使用哪一

11、个结构体进行仿真或综合。LOGO结构体的语法格式vArchitecture 结构体名结构体名 of 实体名实体名 isv【声明语句】vBeginv功能描述语句vEnd【结构体名】;实体名必须是所在设计实体的名字,结构体名由设计者定义,但当一个实体具有多个结构体时,结构体的取名不可重复。LOGO结构体的语法格式vArchitecture 结构体名结构体名 of 实体名实体名 isv【声明语句声明语句】vBeginv功能描述语句vEnd【结构体名】;结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)

12、、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。内部信号无须注明方向。LOGO结构体的语法格式v在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中,若希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。LOGO结构体的语法格式vArchitecture 结构体名结构体名 of 实体名实体名 isv【声明语句】vBeginv功能描述语句vEnd【结构体名】;l功能描述语句描述了构造体的功能和行为。LOGO结构体的语法格式LOGO3.2 Vhdl 构造体描述的三种方法构造体的语句格式如下:构造体的语句格式如下:ARCHITECTURE

13、结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 BEGIN 并行处理语句并行处理语句 END 构造体名;构造体名;对数据类型、常数、信号、子程序和元对数据类型、常数、信号、子程序和元件等元素的说明。不是必须的。件等元素的说明。不是必须的。以各种不同的描述以各种不同的描述风格描述实体逻辑风格描述实体逻辑行为的语句。行为的语句。通常用通常用Behavioral(行为)、行为)、dataflow(数据流描述)数据流描述)或或structural(结构描述)结构描述)LOGO Vhdl 构造体描述的三种方法例例 二选一数据选择器二选一数据选择器vENTITY mux IS PORT(d0

14、,d1:IN BIT;sel:IN BIT;Q:OUT BIT);END mux;lARCHITECTURE behave OF mux IS BEGIN PROCESS(d0,d1,sel)BEGINIF sel=0 THENq=d0;ELSEq=d1;END IF;END PROCESS;END behave;3.2.1 行为级描述:行为级描述:只表示输入和输出间转换的行为,它不包含任何结构的信息(硬件硬件特性、连线方式、特性、连线方式、逻辑行为方式逻辑行为方式)。)。LOGOVhdl 构造体描述的三种方法例 二选一数据选择器vENTITY mux IS PORT(d0,d1:IN BIT

15、;sel:IN BIT;q:OUT BIT);END mux;l ARCHITECTURE behave OF mux IS SIGNAL tmp1,tmp2,tmp3,nsel:BIT;BEGIN cale:PROCESS(d0,d1,sel)BEGIN Nsel=NOT sel;tmp1=d0 AND sel;tmp2=d1 AND nsel;tmp3=tmp1 OR tmp2;qsel,c=nsel);U2:and2 PORT MAP(d0,sel,tmp1);U3:and2 PORT MAP(d1,nsel,tmp2);U4:or2 PORT MAP(tmp1,tmp2,tmp3);q

16、=tmp3;并行处理语句并行处理语句定义元件定义元件or2定义元件定义元件and2LOGO3.3 VHDL语言构造体的子结构描述BLOCK语句结构语句结构PROCESS语句结构语句结构SUBPROGRAMS(子程序)结构子程序)结构三种:三种:LOGO3.3.1 BLOCK语句结构l格式:块结构名:块结构名:BLOCK 块头块头 说明语句说明语句 BEGIN 并发处理语句并发处理语句 END BLOCK 块结构名;块结构名;一个构造体内可以包含多个一个构造体内可以包含多个BLOCK语句,每个语句,每个BLOCK语句描述一个子模块的功能,相当于电原理语句描述一个子模块的功能,相当于电原理图中子原

17、理图。图中子原理图。generic 语句、语句、generic map语句、语句、port 语句、语句、port map语句实现信号的语句实现信号的映射及参数的定义。可有可无映射及参数的定义。可有可无可有可无同构造体的定义语句,对同构造体的定义语句,对BLOCK语句用到的语句用到的数据类型定数据类型定义,常数说明,信号说明,元义,常数说明,信号说明,元件说明,子程序说明及子程序件说明,子程序说明及子程序体,体,USE子句。子句。LOGOENTITY MUX ISPORT(D0,D1,SEL:IN BIT;Q:OUT BIT);END MUX;ARCHITECTURE CONNECT OF MU

18、X ISSIGNAL TEMP1,TEMP2,TEMP3:BIT;BEGINCALE:BLOCK BEGIN TEMP1=D0 AND SEL;TEMP2=D1 AND NOT SEL;TEMP3=TEMP1 OR TEMP2;Qibus,bbus=dbus,D_out=data,ctbus=cumt);Signal qbus:tw32;BeginD_out=tw_add(abus,bbus)when ctbus=0 else tw_sub(abus,bbus)when ctbus=1 else abus;End block ALU;End cpu_blk;LOGOBlock语句的嵌套(P82

19、 例4-20)Library IEEE;Use work.math.all;Use ieee.std_logic_1164.all;Entity cpu is Port(clk,interrupt:in std_logic;Cumt:in integer;Add:out tw32;Data:inout tw32);End cpu;Architecture cpu_blk of cpu is Signal ibus,dbus:tw32;Begin ALU:block Signal qbus:tw32;begin-ALU功能描述语句功能描述语句 end block ALU;REG8:block s

20、ignal zbus:tw32;Begin REG1:block signal qbus:tw32;begin -reg1功能描述语句功能描述语句 END block REG1;-其余其余REG8功能描述功能描述 End block REG8;End cpu_blk;LOGO使用使用block语句子结构应注意:语句子结构应注意:注意:注意:(1)一个构造体内可以包含多个独立的)一个构造体内可以包含多个独立的block语句结构。语句结构。它们是并行执行的。它们是并行执行的。(2)block语句结构内部的语句也是语句结构内部的语句也是并行执行并行执行的,与书写的,与书写顺序无关。顺序无关。(3)B

21、LOCK语句可以嵌套,外层语句可以嵌套,外层block中的说明语句说中的说明语句说明的内容(信号、元件等)内层明的内容(信号、元件等)内层block语句可以用,反之语句可以用,反之不能。互为嵌套的不能。互为嵌套的block语句说明的对象不能重名。语句说明的对象不能重名。LOGO卫式卫式block语句语句卫式卫式block语句格式:语句格式:带有条件的带有条件的block语句语句-卫式卫式block语句语句块结构名:BLOCK(卫式布尔表达式)begin 并发描述语句 end block 块结构名;块内信号赋值,在赋块内信号赋值,在赋值符号后要加入值符号后要加入guarded一词一词LOGO例例

22、 卫式卫式block语句描述语句描述D触发器触发器ENTITY latch IS PORT(d,clk:IN BIT;q,qb:OUT BIT);END latch;ARCHITECTURE latch_gurad OF latch ISBEGIN G1:BLOCK(clk=1)BEGIN q=GUARDED d AFTER 5 ns;qb=GUARDED NOT(d)AFTER 7 ns;END BLOCK G1;END latch_guard;卫式布尔表达式卫式布尔表达式信号赋值符号后信号赋值符号后必须有必须有guarded一一词词Block语句可以被综合。卫式语句可以被综合。卫式Bloc

23、k语句不可以被综合,只能用语句不可以被综合,只能用于仿真。于仿真。LOGO3.3.2 进程语句(进程语句(process)它是一种并发描述语句,描述硬件系统并发行为的最基本语句。它是一种并发描述语句,描述硬件系统并发行为的最基本语句。语句格式:进程名:process(敏感信号表)说明部分;说明部分;begin 顺序处理语句;end process 进程名;process语句使用的语句使用的类型、常量、变量、类型、常量、变量、子程序声明、子程序体、属性声明、属子程序声明、子程序体、属性声明、属性指定等性指定等不能有信号声明不能有信号声明顺序描述语句顺序描述语句LOGO例例 process语句实现

24、二选一数据选择器语句实现二选一数据选择器ENTITY mux ISPORT(d0,d1,sel:inbit;q:outbit);END mux;Architecture dataflow of mux isBeginprocess(d0,d1,sel)variabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);tmp3:=tmp1ortmp2;q=tmp3;end process;End dataflow;敏感信号敏感信号变量说明语句变量说明语句顺序处理语句顺序处理语句LOGOProcess语句实现语句实现D触发器触发器

25、ENTITY dlock IS PORT(d,clk:in bit;q,nq:out bit);END mux;Architecture dataflow of dlock isBeginprocess(clk)begin if clk=1 then q=d;nq=not d;end process;End dataflow;敏感信号敏感信号顺序执行语句顺序执行语句LOGO Process语句的启动Process语句的敏感表中敏感信号与语句的敏感表中敏感信号与process语句描述硬件电路的语句描述硬件电路的输入信号一一对应。输入信号一一对应。任何一个敏感信号发生变化都将启动任何一个敏感信号发

26、生变化都将启动process语句,从上到下顺序语句,从上到下顺序执行。当执行。当process语句执行完了语句执行完了,回到回到process语句的开头,等待下语句的开头,等待下一次的变化。一次的变化。Process语句可以不带敏感表,但是要在语句可以不带敏感表,但是要在end process;前加入前加入wait on 信号信号1,信号,信号2,;process(A,B)begin Output=A or B;end process;processbegin Output=A or B;wait on A,B;end process;=注意:注意:process语句敏感表语句敏感表 和和wa

27、it on语句只能有一个。语句只能有一个。LOGO 进程(进程(process)的同步描述的同步描述一个构造体内如果有多个一个构造体内如果有多个process语句存在,它们并行同步执行,语句存在,它们并行同步执行,同时还可以进行通信。同时还可以进行通信。多多process语句通信是通过在结构体中定义的语句通信是通过在结构体中定义的信号信号来实现。来实现。LOGO多Process语句通信Entity pros_com isPort(event_a:in bit);End pros_com;Architecturecatch_ballofpros_comisSignal to_a,to_b:bit

28、:=0;beginA:process(event_a,to_a)begin If(event_aevent and event_a=1)or (to_aevent and to_a=1)then to_b=1 after 20 ns;0 after 30 ns;End if;End process;B:process(to_b)begin If(to_bevent and to_b=1)then to_a b)THENl tmp:=a;l ELSEl tmp:=b;l END IF;l RETURN tmp;l END max;lEND bpac;结束包集合体结束包集合体LOGO 函数调用及结

29、果返回语法:函数名(实参语法:函数名(实参1,实参,实参2,实参,实参n);函数的返回值不包含在括号内,返回值可以赋值给信号或变量。函数的返回值不包含在括号内,返回值可以赋值给信号或变量。PROCESS(clk)BEGIN IF clkEVENT AND clk=1 THEN IF set=1 THEN peak=data;ELSE peak=max(C,D);END IF;END IF;END PROCESS;注意:函数调用是一个表达式,不是一条完整的语句。注意:函数调用是一个表达式,不是一条完整的语句。LOGO 1)过程结束用)过程结束用“end 过程名过程名”即可即可 函数必须由函数必须

30、由return 语句结束,且返回一个值。语句结束,且返回一个值。2)过程调用将输出值()过程调用将输出值(out,inout)传递给调用者定义的信号传递给调用者定义的信号或变量,调用语句是一条语句。或变量,调用语句是一条语句。函数调用将函数产生的返回值赋给调用者定义的信号或变函数调用将函数产生的返回值赋给调用者定义的信号或变量,调用语句为一个表达式。量,调用语句为一个表达式。3)形参的方式:过程)形参的方式:过程-in,out,inout 函数函数-只有只有in,所以省略。所以省略。过程和函数的区别过程和函数的区别LOGO 3、在构造体内说明子程序,然后调用、在构造体内说明子程序,然后调用li

31、brary ieee;entity proce isport(a:in bit_vector(0 to 2);m:out bit_vector(0 to 2);end proce;procedure simple(w,x,y:in bit;z:out bit)isbegin z:=(w and x)or y;end simple;architecture example of proce isbegin process(a)variable b:bit_vector(0 to 2);begin simple(a(0),a(1),a(2),b(0);simple(a(2),a(1),a(1),b

32、(1);simple(a(1),a(2),a(2),b(2);m b)THEN tmp:=a;ELSE tmp:=b;END IF;RETURN tmp;END max;END bpac;结束包体结束包体LOGO3.4.3 配置v描述层次化设计中连接关系层与层之间元件声明与被调用实体实体与结构体之间For 选配构造体名选配构造体名End for;最简单的形式l配置指定语句格式:CONFIGURATION配置名 OF实体名IS语句说明;END配置名;LOGO例例3-19:Libraryieee;Useieee.std_logic_1164.all;ENTITYnandISPORT(a,b:INs

33、td_logic;c:outstd_logic);ENDnand;ARCHITECTUREtwoOFnandISBEGINc=1when(a=0ANDb=0)else 1 when(a=0 AND b=1)else 1 when(a=1 AND b=0)else 0when(a=1 AND b=1)else 0;ENDrsff2;CONFIGRATION second OF nand IS FOR two END FOR;END second;END second;ARCHITECTUREoneOFnandISBEGINcs,b=qf,c=q);U2:nandportmap(a=q,b=r,c

34、=qf);ENDrsf;实体rs1使用WORK库中实体nand的构造体two,配置名为selLOGO例例3-21:Libraryieee;ENTITYrsISPORT(set,reset:INBIT;q,qb:BUFFERBIT);ENDrs;ARCHITECTURErsff2OFrsISBEGINq=NOT(qbANDset);qbset,b=qb,c=q)U2:nand2PORTMAP(a=reset,b=q,c=qb)ENDrsff1;两个构造体两个构造体,可以用配置语句进行设置可以用配置语句进行设置:LOGO例:半加器(entity)Library ieee;entity Half_A

35、dder is port(X:in BIT;Y:in Bit;Sum:out bit;Carry:Out bIT);end Half_adder;XYSUMCARRYSum=xXORyCarry=xandyLOGO例:半加器(architecture A1)Architecture A1 of Half_Adder is component XOR2 port(I1,I2:in BIT;Out1:out BIT);end component;component AND2 port(I1,I2:BIT;Out1:out BIT);end component;begin A:XOR2 port m

36、ap(X,Y,Sum);B:AND2 port map(X,Y,Carry);end A1;LOGO例:半加器(architecture A2)Architecture A2 of Half_Adder is begin Sum=X xor Y after 5 ns;Carry=X and Y after 5 ns;end A2;LOGO例:全加器由半加器组成entity Full_Adder isport(A,B:in BIT;Carry_In:IN BIT;Sum,Carry:out BIT);end Full_Adder;LOGOarchitecture Struc of Full_Ad

37、der issignal Temp_Sum:BIT;signal Temp_Carry_1,Temp_Carry_2:BIT;component Hadd port(x,y:in BIT;Sum,Carry:out BIT);end component;component OR2 port(in1,in2:in BIT;out1:out BIT);end component;例:全加例:全加器器由半加器组成由半加器组成LOGObegin HADD1:Hadd port map(A,B,Temp_Sum,Temp_Carry_1);HADD2:Haddport map(Temp_Sum,Carr

38、y_In,Sum,Temp_Carry_1);U3:OR2 port map(Temp_Carry_1,Temp_Carry_2,Carry_Out);end Struc;例:全加器例:全加器由半加器组成由半加器组成LOGO例configuration conf of Full_Adder isfor Struc for HADD1,HADD2:Hadd use entity Half_Adder(A1);end for;end for;end conf;LOGO配置声明单元:独立的编译单元configuration 配置名 of 实体名 is for 结构体名 for 例化语句标号表:元件模板 use entity 设计库名.子实体名(子结构体名)generic map(元件模板与子实体的参数关联)port map(元件模板与子实体的端口关联);for 子结构体名 嵌套声明该子结构体中的各元件;end for;end for;for 例化语句标号表 元件模板 use entity 实体名(结构体名);end for;end for;end configuration 配置名;LOGO第三章结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com