第3章 语言基础精选文档.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3章 语言基础精选文档.ppt》由会员分享,可在线阅读,更多相关《第3章 语言基础精选文档.ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 语言基础本讲稿第一页,共一百零一页第一节第一节 概述概述常用的硬件描述语言有:常用的硬件描述语言有: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语言编写的源程序及其通过编译的数据语言编写的源程序及其通过编译的数据集合,它由各种程序包组成,程序包提供了各种数据类型、集合,它由各种程序包组成,程序包提供了各种数据类型、函数的定义以及各种类型转换函数及运算等,以供给设计函数的定义以及各种类型转换函数及运算等,以供给设计者使用。者使用。本讲稿第五页,共
4、一百零一页目前在目前在VHDL语言中,常用的主要有以下几种库:语言中,常用的主要有以下几种库:IEEE库、库、STD库、库、WORK库、用户库库、用户库最常用的资源库是最常用的资源库是IEEE库库,常用的程序包,常用的程序包STD_LOGIC_1164:常用的数据类型(常用的数据类型(std_logic,std_logic_vector),各种类型各种类型转换函数及逻辑运算。转换函数及逻辑运算。STD_LOGIC_ARITH:定义了无符号定义了无符号unsigned、有符号数、有符号数signed数据类型,相应的算数据类型,相应的算术运算;术运算;unsigned,signed和和intege
5、r之间的转换函数。之间的转换函数。STD_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)自定义库自定义库 由用户自己创建。设计者可以把一些自己需要经常使用的非标准(一般是自己开发的)包集合和实体等汇集成库,作为对VHDL标准库的补充。本讲稿第九页,共一百零一页还需要注意的是,还需要注意的是,LIBRARYLIBRARY语句和语
7、句和USEUSE语句的作用范语句的作用范围只限于紧跟其后的实体及其结构体。因此,如果一个程围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体的前面分别加序中有一个以上的实体,则必须在每个实体的前面分别加上上LIBRARYLIBRARY语句和语句和USEUSE语句,说明各实体及其结构体需要语句,说明各实体及其结构体需要使用的库和程序包。使用的库和程序包。本讲稿第十页,共一百零一页2.2.实体说明实体说明ENTITYnand_2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnand_2;ENTITY实体名实体名ISPORT
8、端口说明端口说明;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)IEEE标准数据类型,标准逻辑位标准数据类型,标准逻辑位STD_LOGIC、标准逻、标准逻辑矢量辑矢量S
11、TD_LOGIC_VECTOR。(3)用户自定义的数据类型,如枚举型、数组类型、文件用户自定义的数据类型,如枚举型、数组类型、文件(FILE)类型、记录类型、记录(RECORD)类型等。类型等。本讲稿第十五页,共一百零一页在逻辑电路设计中用到两种,即位逻辑数据类型在逻辑电路设计中用到两种,即位逻辑数据类型(BIT)和位向量型和位向量型(BIT_VECTOR)。BIT类型也可以用类型也可以用STD_LOGIC说明,说明,BIT_VECTOR也可以用也可以用STD_LOGIC_VECTOR说明。但是,在使用说明。但是,在使用STD_LOGIC和和STD_LOGIC_VECTOR时,应该在实时,应该
12、在实体说明以前增加两条语句:体说明以前增加两条语句: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)两部两部分构成。如果把实体说明看作为一个黑盒子,分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描里面的内容。黑盒子里面的内容由结构体来描述。述。本讲稿第十八页,共一百零
14、一页 3 3结构体结构体(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(异
16、或异或),NOT(非非)。本讲稿第二十一页,共一百零一页Verilog 程序程序Module fulladder(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 module本讲稿第二
17、十二页,共一百零一页4位计数器位计数器module count4(out,reset,clk);output3:0 out;input reset,clk;reg3:0 out;always(posedge clk)beginif(reset)out=0;/同步复位同步复位else out=out+1;/计数数endendmodule本讲稿第二十三页,共一百零一页libraryieee;useieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-由由std_logic_vector转换成转换成integer;entitycountAi
18、sport(clk,clr,en:instd_logic;QA,QB,QC,QD:outstd_logic);endcountA;architectureexampleAofcountAissignalcount_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)t
19、hencount_4=0000;elsecount_4=count_4+1;endif;endif;endif;endprocess;endexampleA;本讲稿第二十四页,共一百零一页IF THEN 顺序处理语句顺序处理语句1;ELSIF THEN 顺序处理语句顺序处理语句2;.ELSE 顺序处理语句顺序处理语句3;END IF;IFIF语句的格式:语句的格式:If 条件条件 then顺序处理语句顺序处理语句;end if;If 条件条件 then顺序语句顺序语句1;Else顺序语句顺序语句2;End if;注意在注意在VHDL语言中不区分大小写语言中不区分大小写本讲稿第二十五页,共一百零
20、一页时钟信号上升沿和下降沿的表示时钟信号上升沿和下降沿的表示(1)表示一个上升沿时钟表示一个上升沿时钟clk:clkEVENTANDclk=1;rising_edge(clk)(2)表示一个下降沿时钟表示一个下降沿时钟clk: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
21、0);end regn;类属参数说明类属参数说明 类属参数说明必须放在端口说明前面,用于指类属参数说明必须放在端口说明前面,用于指定参数。类属参数说明的一般格式为:定参数。类属参数说明的一般格式为:GENERIC(常数名:数据类型常数名:数据类型:设定值:设定值);本讲稿第二十七页,共一百零一页 在门级模型中,可以使用类属参数指定延迟时间参在门级模型中,可以使用类属参数指定延迟时间参数。数。例如在结构体内出现语句:例如在结构体内出现语句:GENERIC(m:TIME:=1ns)GENERIC(m:TIME:=1ns)Temp1:=do AND sel AFTER m Temp1:=do AND
22、 sel AFTER m;表示表示dodo和和selsel相与后,经过相与后,经过1 ns1 ns延迟才送到延迟才送到Temp1Temp1。(当当然然,时时间间单单位位可可以以取取fs(1 fs(1 ps=1000 ps=1000 fs fs,1 1 ns=1000 ns=1000 ps)ps)、(s(s、msms、secsec、minmin、hrhr等等)。本讲稿第二十八页,共一百零一页第三节第三节VHDL结构体的子结构结构体的子结构一一个个大大规规模模的的电电路路原原理理图图通通常常由由多多张张子子电电路路原原理理图图构构成成。一一个个结结构构体体也也可可以以由由几几个个子子结结构构组组成
23、成,有有利利于于编编程和查错。程和查错。VHDL可以用以下三种子结构描述语句:可以用以下三种子结构描述语句:(1)BLOCK语句结构;语句结构;(2)PROCESS语句结构语句结构;(3)SUBPROGRAMS语句结构。语句结构。本讲稿第二十九页,共一百零一页3.1块块(BLOCK)语句语句块块语语句句将将结结构构体体中中的的并并行行描描述述语语句句进进行行组组合合,增增加加并并行行描描述述语语句句及及其其结结构构的的可可读读性性,使使结结构构体体层层次次清清晰晰,对对技技术术交交流流、程程序序移移植植和和修修改改都都是是非非常常有有用的。用的。BLOCK语句的结构如下:语句的结构如下:块结构
24、标号:块结构标号:BLOCKBEGINENDBLOCK块结构标号;块结构标号;本讲稿第三十页,共一百零一页【例例】采用采用BLOCK语句描述二选一电路。语句描述二选一电路。ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREconnectOFmuxISSIGNALtmp1,tmp2,tmp3:BIT;本讲稿第三十一页,共一百零一页BEGINcale:BLOCKBEGINtmp1=d0ANDsel;tmp2=d1AND(NOTsel);tmp3=tmp1ORtmp2;q=tmp3;ENDBLOCKcale;ENDc
25、onnect;本讲稿第三十二页,共一百零一页3.2进程进程(PROCESS)语句语句1进程进程(PROCESS)语句的结构语句的结构进进程程语语句句是是VHDL中中使使用用最最广广泛泛的的语语句句之之一一,进进程程语语句句既既能能够够描描述述组组合合逻逻辑辑,又又能能够够描描述述时时序序逻辑。逻辑。进程语句的结构如下:进程语句的结构如下:进进程程名名:PROCESS(敏敏感感信信号号1,敏敏感感信信号号2,)BEGINENDPROCESS进程名进程名;本讲稿第三十三页,共一百零一页2进程的启动进程的启动在在PROCESS语句中一般都带有几个输入信号,语句中一般都带有几个输入信号,在书写时写在在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 语言基础精选文档 语言 基础 精选 文档
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内