第3章 VHDL语言基础.ppt
《第3章 VHDL语言基础.ppt》由会员分享,可在线阅读,更多相关《第3章 VHDL语言基础.ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第三章第三章 硬件描述语言硬件描述语言HDLHardware Description Language第一节第一节 概述概述常用的硬件描述语言有:常用的硬件描述语言有:VHDL:VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVerilog:Cadence公司开发公司开发ABEL(AdvancedBooleanHardwareDescription,高级布尔方程语言)高级布尔方程语言):Lattice公司公司AHDL(Analog模拟硬件描述语言)模拟硬件描述语言):Altera公司超高速集成电路硬件描述语言超高速集成电路硬件
2、描述语言通过与非门的逻辑描述,阐述通过与非门的逻辑描述,阐述VHDL的基本结构的基本结构第二节第二节 VHDL的基本结构的基本结构LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYnand_2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnand_2;ARCHITECTURErtlOFnand_2ISBEGINy=NOT(aANDb);ENDrtl;IEEE库使用说明库使用说明Nand_2实体说明实体说明结构体结构体端口说明,用以端口说明,用以描述器件的接口描述器件的接口在程序设计中,要求在程序设计中,要求实体名实体
3、名与与存储的文件名存储的文件名一致一致1.1.库说明库说明 LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;语法:语法:library library 库名库名 use use 库名库名.程序包名程序包名.项目名:项目名:库是用库是用VHDLVHDL语言编写的源程序及其通过编译语言编写的源程序及其通过编译的数据集合,它由各种程序包组成,程序包提供了的数据集合,它由各种程序包组成,程序包提供了各种数据类型、函数的定义以及各种类型转换函数各种数据类型、函数的定义以及各种类型转换函数及运算等,以供给设计者使用。及运算等,以供给设计者使用。目前在目前在VHDL语言中,常用
4、的主要有以下几种库:语言中,常用的主要有以下几种库:IEEE库、库、STD库、库、WORK库、用户库库、用户库最常用的资源库是最常用的资源库是IEEE库库,常用的程序包,常用的程序包STD_LOGIC_1164:常用的数据类型(常用的数据类型(std_logic,std_logic_vector),各各种类型转换函数及逻辑运算。种类型转换函数及逻辑运算。STD_LOGIC_ARITH:定义了无符号定义了无符号unsigned、有符号数、有符号数signed数数据类型,相应的算术运算;据类型,相应的算术运算;unsigned,signed和和integer之间的转换函数。之间的转换函数。STD_
5、LOGIC_UNSIGNED,STD_LOGIC_SIGNED:定义了可用于定义了可用于integer和和std_logic,std_logic_vector数据类型混合运算的运算符,数据类型混合运算的运算符,由由std_logic_vector型到型到integer型的转换函数。型的转换函数。(2)STD库库(3)WORK库库(4)自定义库自定义库是是VHDL的标准库,含有称为的标准库,含有称为STANDARD的标准程序包,的标准程序包,其中定义了多种常用的数据类其中定义了多种常用的数据类型,均不加说明便可直接引用。型,均不加说明便可直接引用。另一个程序包另一个程序包TEXTIO(文本文文本
6、文件输入件输入/输出输出),则需经说明后,则需经说明后方可使用。方可使用。(2)STD库库(3)WORK库库(4)自定义库自定义库是当前作业库,设计人员设计的是当前作业库,设计人员设计的VHDL语言程序的编译结果不需语言程序的编译结果不需要任何说明,都将要存放在要任何说明,都将要存放在work库中。库中。Work库可以是设计者个人库可以是设计者个人使用,也可提供给设计组多人使使用,也可提供给设计组多人使用用WORK库和库和STD库库总会被自动打开。总会被自动打开。(2)STD库库(3)WORK库库(4)自定义库自定义库 由用户自己创建。设由用户自己创建。设计者可以把一些自己计者可以把一些自己需
7、要经常使用的非标需要经常使用的非标准准(一般是自己开发一般是自己开发的的)包集合和实体等包集合和实体等汇集成库,作为对汇集成库,作为对VHDL标准库的补充。标准库的补充。还需要注意的是,还需要注意的是,LIBRARYLIBRARY语句和语句和USEUSE语句的作语句的作用范围只限于紧跟其后的实体及其结构体。因此,如用范围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体果一个程序中有一个以上的实体,则必须在每个实体的前面分别加上的前面分别加上LIBRARYLIBRARY语句和语句和USEUSE语句,说明各实语句,说明各实体及其结构体需要使用的库和程序包。体及
8、其结构体需要使用的库和程序包。2.2.实体说明实体说明ENTITYnand_2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnand_2;ENTITY实体名实体名 ISPORT端口说明端口说明;END实体名;实体名;语法:语法:端口说明语句描述实体的外部接口情况,不管内部功端口说明语句描述实体的外部接口情况,不管内部功能如何只描述它的输入和输出接口信号。一般格式为:能如何只描述它的输入和输出接口信号。一般格式为:PORTPORT(端口信号名,端口信号名(端口信号名,端口信号名 :端口模式端口模式 数据类型;数据类型;端口信号名,端口信号名端口信号名,端口信
9、号名 :端口模式端口模式 数据类型);数据类型);端口信号名端口信号名:赋给每个输入输出接口的名称:赋给每个输入输出接口的名称端口模式端口模式:说明信号的输入和输出方式,:说明信号的输入和输出方式,ININ,OUTOUTINOUT,buffer,INOUT:在输出的同时可以自己读取,同时也可以:在输出的同时可以自己读取,同时也可以作为其它端口的输入。作为其它端口的输入。如如RAM的数据口、单片机的的数据口、单片机的I/O口。口。Buffer:缓冲端口,其功能与:缓冲端口,其功能与inout类似,类似,但是当作为输入用时,输入的信号不是从外部输但是当作为输入用时,输入的信号不是从外部输入,而是由
10、内部产生向外输出的信号。即内部回入,而是由内部产生向外输出的信号。即内部回读自身向外产生的信号,即允许反馈。读自身向外产生的信号,即允许反馈。如将计数器输出的计数信号回读,作为下一如将计数器输出的计数信号回读,作为下一个计数值的初值。个计数值的初值。【例例1】以如图以如图1所示的所示的RS触发器为例,定义如下:触发器为例,定义如下:ENTITYrsffISPORT(set,reset:INBIT;q,qb:BUFFERBIT);ENDrsff;图图1RS触发器触发器端口数据类型端口数据类型:(1)标准数据类型,如:整数、实数,位,位矢量等。标准数据类型,如:整数、实数,位,位矢量等。(2)IE
11、EE标准数据类型,标准逻辑位标准数据类型,标准逻辑位STD_LOGIC、标准、标准逻辑矢量逻辑矢量STD_LOGIC_VECTOR。(3)用户自定义的数据类型,如枚举型、数组类型、文用户自定义的数据类型,如枚举型、数组类型、文件件(FILE)类型、记录类型、记录(RECORD)类型等。类型等。在逻辑电路设计中用到两种,即位逻辑数据类型在逻辑电路设计中用到两种,即位逻辑数据类型(BIT)和位向量型和位向量型(BIT_VECTOR)。BIT类型也可以类型也可以用用STD_LOGIC说明,说明,BIT_VECTOR也可以用也可以用STD_LOGIC_VECTOR说明。但是,在使用说明。但是,在使用S
12、TD_LOGIC和和STD_LOGIC_VECTOR时,应该时,应该在实体说明以前增加两条语句:在实体说明以前增加两条语句:LIBRARYIEEE:IEEE库库USEIEEE.STD_LOGIC_1164.ALL:Bit数据类型只有两种:数据类型只有两种:0和和1。Std_logic数据类型有数据类型有9种:种:U:未初始化;:未初始化;X:强未知;:强未知;0:逻辑:逻辑0;1:逻辑:逻辑1;Z:高阻态;:高阻态;W:弱未知;:弱未知;L:弱逻辑:弱逻辑0;H:弱逻辑:弱逻辑1;-:忽略;:忽略;Z和和-(有的综合器用(有的综合器用X)可以用于三态描述可以用于三态描述Std_logic数据在
13、数字器件的实现中数据在数字器件的实现中只有其中的只有其中的45种值,即种值,即X(或(或/和和-)0、1和和Z。一个基本设计实体由实体说明一个基本设计实体由实体说明(Entity(Entity Declaration)Declaration)和结构体和结构体(Architecture Body)(Architecture Body)两部两部分构成。如果把实体说明看作为一个黑盒子,分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描里面的内容。黑盒子里面的内容由结构体来描述。述。3 3结构
14、体结构体(Architecture)(Architecture)结结构构体体定定义义了了设设计计单单元元的的具具体体功功能能,一一定定要要跟跟在在实实体体的的后后面面。结结构构体体可可以以分分为为两两部部分分:说说明明部部分分和和描描述体部分。一个结构体的具体结构描述如下:述体部分。一个结构体的具体结构描述如下:ARCHITECTUREARCHITECTURE 结构体名结构体名OFOF实体名实体名IS IS 结构体说明结构体说明 内部信号,常数,数据类型等的定义;内部信号,常数,数据类型等的定义;BEGINBEGIN 并行处理语句并行处理语句;END END 结构体名;结构体名;【例例】编写描
15、述一个二选一器件编写描述一个二选一器件(如图所示如图所示)的程的程序。序。ENTITY mux ISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;图图 二选一器件的电路原理图二选一器件的电路原理图 ARCHITECTUREdataflowOFmuxISBEGINq=(d0ANDsel)OR(NOTselANDd1);ENDdataflow;“=”表示赋值关系。表示赋值关系。逻逻辑辑运运算算符符包包括括:AND(与与),OR(或或),NAND(与非与非),NOR(或非或非),XOR(异或异或),NOT(非非)。Verilog 程序程序Module ful
16、ladder(a,b,carryin,sum,carryout)Input a,b,carryin;Output sum carryout;Wire a,b,carryin,sum,carryout;/数据类型,连线型数据类型,连线型/寄存器型寄存器型 reg q,reg 9:0 c;assign sum=(ab)carryin;/异或,连续赋值语句异或,连续赋值语句Assign carryou=(a&b)|(a&carryin)|(b&carryin)/与与 或或end module4位计数器位计数器module count4(out,reset,clk);output3:0 out;inp
17、ut reset,clk;reg3:0 out;always(posedge clk)beginif(reset)out=0;/同步复位同步复位else out=out+1;/计数数endendmodulelibraryieee;useieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-由由std_logic_vector转换成转换成integer;entitycountAisport(clk,clr,en:instd_logic;QA,QB,QC,QD:outstd_logic);endcountA;architectureexa
18、mpleAofcountAissignalcount_4:std_logic_vector(3downto0);beginQA=count_4(0);QB=count_4(1);QC=count_4(2);QD=count_4(3);process(clk,clr)beginif(clr=1)thencount_4=0000;elsif(clkeventandclk=1)thenif(en=1)thenif(count_4=1111)thencount_4=0000;elsecount_4=count_4+1;endif;endif;endif;endprocess;endexampleA;I
19、F THEN 顺序处理语句顺序处理语句1;ELSIF THEN 顺序处理语句顺序处理语句2;.ELSE 顺序处理语句顺序处理语句3;END IF;IFIF语句的格式:语句的格式:If 条件条件 then顺序处理语句顺序处理语句;end if;If 条件条件 then顺序语句顺序语句1;Else顺序语句顺序语句2;End if;注意在注意在VHDL语言中不区分大小写语言中不区分大小写时钟信号上升沿和下降沿的表示时钟信号上升沿和下降沿的表示(1)表示一个上升沿时钟表示一个上升沿时钟clk:clkEVENTANDclk=1;rising_edge(clk)(2)表示一个下降沿时钟表示一个下降沿时钟c
20、lk:clkEVENTANDclk=0;Falling_edge(clk)entity regn is generic(n:integer:=8);port(r:in std_logic_vector(n-1 downto 0);rin,clock:in std_logic;q:buffer std_logic_vector(n-1 downto 0);end regn;类属参数说明类属参数说明 类属参数说明必须放在端口说明前面,用于类属参数说明必须放在端口说明前面,用于指定参数。类属参数说明的一般格式为:指定参数。类属参数说明的一般格式为:GENERIC(常数名:数据类型常数名:数据类型:设
21、定值:设定值);在门级模型中,可以使用类属参数指定延迟时间在门级模型中,可以使用类属参数指定延迟时间参数。参数。例如在结构体内出现语句:例如在结构体内出现语句:GENERIC(m:TIME:=1ns)GENERIC(m:TIME:=1ns)Temp1:=do AND Temp1:=do AND selsel AFTER m AFTER m;表示表示dodo和和selsel相与后,经过相与后,经过1 ns1 ns延迟才送到延迟才送到Temp1Temp1。(当当 然然,时时 间间 单单 位位 可可 以以 取取 fs(1 fs(1 psps=1000=1000 fs fs,1 1 ns=1000 n
22、s=1000 psps)、(s(s、msms、secsec、minmin、hrhr等等)。第三节第三节VHDL结构体的子结构结构体的子结构一一个个大大规规模模的的电电路路原原理理图图通通常常由由多多张张子子电电路路原原理理图图构构成成。一一个个结结构构体体也也可可以以由由几几个个子子结结构构组组成,有利于编程和查错。成,有利于编程和查错。VHDL可以用以下三种子结构描述语句:可以用以下三种子结构描述语句:(1)BLOCK语句结构;语句结构;(2)PROCESS语句结构语句结构;(3)SUBPROGRAMS语句结构。语句结构。3.1块块(BLOCK)语句语句块块语语句句将将结结构构体体中中的的并
23、并行行描描述述语语句句进进行行组组合合,增增加加并并行行描描述述语语句句及及其其结结构构的的可可读读性性,使使结结构构体体层层次次清清晰晰,对对技技术术交交流流、程程序序移移植植和和修修改都是非常有用的。改都是非常有用的。BLOCK语句的结构如下:语句的结构如下:块结构标号:块结构标号:BLOCKBEGINENDBLOCK块结构标号;块结构标号;【例例】采用采用BLOCK语句描述二选一电路。语句描述二选一电路。ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREconnectOFmuxISSIGNALtmp1,t
24、mp2,tmp3:BIT;BEGINcale:BLOCKBEGINtmp1=d0ANDsel;tmp2=d1AND(NOTsel);tmp3=tmp1ORtmp2;q=tmp3;ENDBLOCKcale;ENDconnect;3.2进程进程(PROCESS)语句语句1进程进程(PROCESS)语句的结构语句的结构进进程程语语句句是是VHDL中中使使用用最最广广泛泛的的语语句句之之一一,进进程程语语句句既既能能够够描描述述组组合合逻逻辑辑,又又能能够够描描述时序逻辑。述时序逻辑。进程语句的结构如下:进程语句的结构如下:进进程程名名:PROCESS(敏敏感感信信号号1,敏敏感感信信号号2,)BEG
25、INENDPROCESS进程名进程名;2进程的启动进程的启动在在PROCESS语句中一般都带有几个输入语句中一般都带有几个输入信号,在书写时写在信号,在书写时写在PROCESS后面的括号中。后面的括号中。这些信号中的任意一个信号发生变化这些信号中的任意一个信号发生变化(“1”变变“0”或或“0”变变“1”)都会启动都会启动PROCESS语语句,因此这些信号称为句,因此这些信号称为敏感信号敏感信号。寄存器寄存器library IEEE;use Ieee.std_logic_1164.all;entity register1 isport(clk:in std_logic;clr:in std_l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 VHDL语言基础 VHDL 语言 基础
限制150内