《0501-VHDL程序的基本结构.ppt》由会员分享,可在线阅读,更多相关《0501-VHDL程序的基本结构.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 仪器与电子学院可编程逻辑器件应用主讲人:刘文怡第五讲 VHDL程序的基本结构nVHDL语言设计的基本单元及其构成n结构体的子结构描述n包集合、库及配置n要求:n掌握硬件描述语言的基本框架结构;n了解硬件描述语言的库、程序包和配置;前节内容回顾nEDA,CPLD,FPGA,HDL,VHDLnVHDL,VERILOG,AHDL nFPGA芯片公司nAltera,Xilinx,Microsemi(Actel),latticenFPGA,CPLD,单片机,DSP,ARM如果把这个电路做成一个元件n别人使用的时候,只需知道两件事:n一是封装!二是功能!漂亮的程序(回顾)Fengzhuang_kaish
2、iport(IN1:in;IN2:in;IN3:in;IN4:in;OUT4:out)Fengzhuang_jieshuGongneng_kaishisignal T1,T2;OUT4=T1 or T2;T2=IN3 and IN4;T1=IN1 and IN2;Gongneng_jieshu1 1、为了用起来像个函数的样子,不妨加个、为了用起来像个函数的样子,不妨加个portport关键词,把输入输出引脚象参数一样排列关键词,把输入输出引脚象参数一样排列起来。起来。2 2、很好地表达了、很好地表达了4 4个输入引脚,个输入引脚,1 1个输出引脚。个输出引脚。3 3、提供给别人调用。、提供给别
3、人调用。1 1、内部功能实现的细节、内部功能实现的细节2 2、T1T1、T2T2似乎有点奇怪,哪来的?似乎有点奇怪,哪来的?3 3、那我们也规定先定义,后使用!、那我们也规定先定义,后使用!Library IEEE;Use IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT(d0,d1,sel:in bit;q:out bit);END mux;Architecture dataflow of mux issignal tmp1,tmp2,tmp3:bit;Begintmp1=d0 and sel;tmp2=d1 and(not sel);tmp3=tmp1
4、or tmp2;q=tmp3;End dataflow;d0d1selq&1qd0d1selVHDLVHDL语言如何做的?语言如何做的?一个完整的一个完整的VHDL语言语言程序通常包含程序通常包含5个部分:个部分:库库(Library)包集合包集合(Package)实体实体(Entity)结构体结构体(Architecture)配置配置(Configuration)必必备备部部分分VHDLVHDL程序的基本构成程序的基本构成n实体:实体:描述所设计系统的外部接口信号描述所设计系统的外部接口信号,是可见的;是可见的;n结构体:结构体:描述系统内部的结构和行为,是不可见的;描述系统内部的结构和行为
5、,是不可见的;n配置:配置:选取所需单元组成系统设选取所需单元组成系统设 计的不同版本;计的不同版本;n包集合:包集合:存放各种设计模块都能共享的数据类型、存放各种设计模块都能共享的数据类型、常数、子程序和函数等;常数、子程序和函数等;n库:库:存放已经编译的实体、结构体、包集合和存放已经编译的实体、结构体、包集合和 配置。配置。VHDLVHDL程序的基本单元解释程序的基本单元解释实体声明实体声明n实体声明语法:实体声明语法:ENTITY 实实体名体名 IS 类类属参数属参数说说明明;端口端口说说明明;END 实体名;实体名;n举例:举例:nENTITY mux ISPORT(d0,d1,se
6、l:IN BIT;q:OUT BIT);END mux;d0d1selq实体的声明实体的声明n实体名必须与文件名相同,否则编译时会出错。n实体用于定义电路的输入输出引脚,但并不描述电路的具体结构和实现的功能。n大小写不敏感。实体声明注意事项实体声明注意事项实体的类属参数说明(了解)实体的类属参数说明(了解)n类属参数说明是实体说明中的可选项,必须放在端口说明之前,用于指定参数,如端口大小、总线宽度、时间等;n其一般书写格式为:GENERIC(常数名:数据类型:设定值,);n举例:GENERIC(m:TIME:=1 ns);这个参数说明是指在VHDL程序中,结构体内的参数m的值为1ns。实体的端
7、口说明实体的端口说明n端口说明是对基本设计实体(单元)与外部接口的描 述,也可以说是对外部引脚信号的名称,数据类型和 输入、输出方向的描述;n其一般书写格式为:PORT(端口名,端口名n:方向 数据类型名;端口名,端口名m:方向 数据类型名);n举例:PORT(d0,d1,sel:IN BIT;q:OUT BIT;bus:OUT BIT_VECTOR(7 DOWNTO 0);方向定义方向定义含义含义IN输入输入OUT输出(结构体内部不能再使用)输出(结构体内部不能再使用)INOUT双向双向BUFFER输出(结构体内部可再使用)输出(结构体内部可再使用)(1)端口名:赋予每个外部引脚名称,通常用
8、)端口名:赋予每个外部引脚名称,通常用一个或几个英文字母,或者用英文字母加数字一个或几个英文字母,或者用英文字母加数字命名之,例如:命名之,例如:d0,d1,sel。(2)端口方向:用来定义外部引脚的信号方向。)端口方向:用来定义外部引脚的信号方向。请注意请注意OUT与与BUFFER的区别的区别ENTITY test IS PORT(a:IN STD_LOGIC;b1,c1:OUT STD_LOGIC;b2:BUFFER STD_LOGIC;c2:OUT STD_LOGIC);END test;ARCHITECTURE a of test ISBEGIN b1=not(a);c1=b1;c1=
9、b1;-ErrorError b2=not(a);c2=b2;c2=b2;END a;端口数据类型端口数据类型n标准类型:BIT和BIT_VECTORn扩展类型:STD_LOGIC 和STD_LOGIC_VECTORn 单点多点(总线)n扩展类型需要库和程序包的支持,并且需要在程序中指明n使用时需要加入以下两个语句:nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;练习练习:n试写出半加器的实体描述:试写出半加器的实体描述:n如右图所示如右图所示na,ba,b为半加器的输入端口为半加器的输入端口ns,cos,co为输出信号,为输出信号,s s为和信号,为和信
10、号,coco为进位信号为进位信号。absco结构体结构体ARCHITECTUREARCHITECTURE结构体的描述方法:结构体的描述方法:行为级描述、行为级描述、RTL(数据流)级(数据流)级描述、结构描述(逻辑元件连接)描述、结构描述(逻辑元件连接)结构体是用于描述设计实体的结构体是用于描述设计实体的内部结构内部结构(元件及内部的(元件及内部的连接关系)以及实体端口间的连接关系)以及实体端口间的逻辑关系(实体的行为)逻辑关系(实体的行为)。注意:注意:结构体一定要跟在实体说明的后面。结构体一定要跟在实体说明的后面。结构体的一般书写格式结构体的一般书写格式 ARCHITECTURE 结结构体
11、名构体名 OF 实实体名体名 IS 定定义语义语句句内部信号,常数,数据内部信号,常数,数据类类型,函数等的定型,函数等的定义义;BEGIN 功能功能描述描述语语句句并行并行处处理理语语句句;END 结构体名结构体名;实体名实体名必须是所在设计实体的名字,必须是所在设计实体的名字,结构体名结构体名由由设计者定义,但当一个实体具有多个结构体时,设计者定义,但当一个实体具有多个结构体时,结构体的取名不可重复。结构体的取名不可重复。结构体名称的命名结构体名称的命名n结结构构体体名名称称由由设设计计者者自自由由命命名名,是是结结构构体体的的唯唯一一名名称称。OF后后面面的的实实体体名名称称表表明明该该
12、结结构构体体属属于于哪哪个个设设计计实实体体,有有些些设设计计实实体体中中可可能能含含有有多多个个结结构构体体。这这些些结结构构体体的的命命名名可可以以从从不不同同侧侧面面反反映映结结构构体体的的特特色色,让人一目了然。例如:让人一目了然。例如:ARCHITECTURE behavioral OF mux IS 用结构体行为命名用结构体行为命名 ARCHITECTURE dataflow OF mux IS 用结构体数据流命名用结构体数据流命名 ARCHITECTURE structural OF mux IS 用结构体组织结构命名用结构体组织结构命名 ARCHITECTURE bool OF
13、 mux IS 用结构体的数学表达方式命名用结构体的数学表达方式命名 ARCHITECTURE latch OF mux IS 用结构体的功能来命名用结构体的功能来命名 .定义语句定义语句n定义语句定义语句位于位于ARCHITECTURE 和和BEGIN之之间间,用,用于于对结对结构体内部所使用的信号、常数、数据构体内部所使用的信号、常数、数据类类型和函型和函数数进进行定行定义义。n举举例:例:ARCHITECTURE behave OF mux IS SIGNAL tmp:BIT;BEGIN END behave;n结构体的信号定义和实体的端口说明一样,应有信号结构体的信号定义和实体的端口说
14、明一样,应有信号名称和数据类型定义,名称和数据类型定义,不用说明信号方向不用说明信号方向,因为是,因为是结结构体内部连接用信号构体内部连接用信号。结构体的语法格式结构体的语法格式n结构体中的结构体中的说明语句说明语句是对结构体的功能描述语是对结构体的功能描述语句中将要用到的信号句中将要用到的信号(SIGNAL)(SIGNAL)、数据类型、数据类型(TYPE)(TYPE)、常数、常数(CONSTANT)(CONSTANT)、元件、元件(COMPONENT)(COMPONENT)、函数函数(FUNCTION)(FUNCTION)和过程和过程(PROCEDURE)(PROCEDURE)等加以说明等加
15、以说明的语句。的语句。n在一个结构体中说明和定义的数据类型、常数、在一个结构体中说明和定义的数据类型、常数、元件、函数和过程元件、函数和过程只能用于只能用于这个结构体中,若这个结构体中,若希望其能用于其他的实体或结构体中,则需要希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。将其作为程序包来处理。结构体的语法格式结构体的语法格式结构体的并行处理结构体的并行处理语句n具体描述结构体的行为及其连接关系。n在结构体中的语句都可以是并行执行的,语句的书写顺序不决定语句的执行顺序。n所谓“并行”,指的是这些并行语句之间没有执行顺序的先后之分。并行处理并行处理语句的局部化语句的局部化n在实际
16、逻辑设计时,我们不一定希望所有的逻辑语句同时工作,怎么办?n换句话:如何能让不同部分的语句“有条件地”起作用?n解决办法:挑出来、加条件!n使用条件语句吗?不行!不行!n用适当的语法来表达:就引入了n进程语句PROCESS语语句的句的书书写格式写格式进程名进程名:PROCESS(敏感信号表敏感信号表)IS变量说明语句变量说明语句变量说明语句变量说明语句BEGIN 进程内逻辑语句进程内逻辑语句 END PROCESS 进程名进程名;processprocess语句使用的语句使用的类型、常量、变类型、常量、变量、子程序声明、子程序体、属性声明量、子程序声明、子程序体、属性声明等,但等,但不能有信号
17、声明不能有信号声明*可有可无可有可无,区分区分不同不同进程进程process(A,B)begin Output=A or B;end process;processbegin Output=A or B;wait on A,B;end process;PROCESS语语句的工作机理句的工作机理n任何一个敏感信号发生变化都将启动process内部的所有并行语句执行一次。nProcess语句可以不带敏感表,但是要在endprocess;前加入waiton信号1,信号2,;n注意:process语句敏感表和waiton语句只能有一个。ENTITY mux ISPORT(d0,d1,sel:in bi
18、t;q:out bit);END mux;Architecture dataflow of mux is SIGNAL tmp1,tmp2,tmp3:bit;Beginq=tmp3;process(d0,d1,sel)begin tmp1=d0 and sel;tmp2=d1 and(not sel);tmp3=tmp1 or tmp2;end process;End dataflow;敏感信号敏感信号d0,d1,sel任一信号发生变任一信号发生变化就执行化就执行28进程语句举例进程里面的语句进程里面的语句n可以放置任何信号代入语句;n可以放置一般并行语句;n可以放置条件、分支、循环语句;n不
19、可以放置进程语句(嵌套);结构体三种描述方式结构体三种描述方式 n行行为为描述:描述:n对对设计实设计实体按算法的路径来描述。采用体按算法的路径来描述。采用进进程程语语句句顺顺序序描述描述设计实设计实体的行体的行为为和功能。和功能。n寄存器寄存器传输传输描述(数据流描述):描述(数据流描述):n通通过过描述数据流程的运描述数据流程的运动动路径、方向和运路径、方向和运动结动结果,果,实实现设计实现设计实体的行体的行为为和功能。和功能。n结结构构描述(描述(逻辑逻辑元件元件连连接描述):接描述):n采用采用并行并行处处理理语语句描述句描述设计实设计实体内的体内的结结构构组织组织和元件和元件互互连连
20、关系。通常用于关系。通常用于层层次式次式设计设计。结构体描述的三种方法例 二选一数据选择器ENTITY mux IS PORT(d0,d1:IN BIT;sel:IN BIT;Q:OUT BIT);END mux;ARCHITECTURE behave OF mux IS BEGIN PROCESS(d0,d1,sel)BEGINIF sel=0 THENq=d0;ELSEq=d1;END IF;END PROCESS;END behave;1)1)行为级描述行为级描述:只表示输入和输出只表示输入和输出间转换的行为,它间转换的行为,它不包含任何结构的不包含任何结构的信息信息(硬件特性、硬件特性
21、、连线方式、逻辑行连线方式、逻辑行为方式为方式)。)。ENTITY mux IS PORT(d0,d1:IN BIT;sel:IN BIT;q:OUT BIT);END mux;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=tmp3;并行处理语句并行处理语句定义元件定义元件or23)3)结构描述结构描述本节课小结1、VHDL语言的五个基本部分:库,包,实体,结构体和配置;2、结构体的三种描述方法:行为描述,数据流描述和结构描述;