《第3章 语言基础PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章 语言基础PPT讲稿.ppt(101页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 语言基础第1页,共101页,编辑于2022年,星期一第一节第一节 概述概述常用的硬件描述语言有:常用的硬件描述语言有:VHDL:VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVerilog:Cadence公司开发公司开发ABEL(AdvancedBooleanHardwareDescription,高级布尔方程语言)高级布尔方程语言):Lattice公司公司AHDL(Analog模拟硬件描述语言)模拟硬件描述语言):Altera公司超高速集成电路硬件描述语言超高速集成电路硬件描述语言第2页,共101页,编辑于2022年
2、,星期一通过与非门的逻辑描述,阐述通过与非门的逻辑描述,阐述VHDL的基本结构的基本结构第二节第二节 VHDL的基本结构的基本结构第3页,共101页,编辑于2022年,星期一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、程序设计中,要求在程序设计中,要求实体名实体名与与存储的文件名存储的文件名一致一致第4页,共101页,编辑于2022年,星期一1.1.库说明库说明 LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;语法:语法:library library 库名库名 use use 库名库名.程序包名程序包名.项目名:项目名:库是用库是用VHDLVHDL语言编写的源程序及其通过编译的数据语言编写的源程序及其通过编译的数据集合,它由各种程序包组成,程序包提供了各种数据类型、集合,它由各种程序包组成,程序包提供了各种数据类型、函数的定义以及各种类型转换函数及运算等,以供给设计函数的定义
4、以及各种类型转换函数及运算等,以供给设计者使用。者使用。第5页,共101页,编辑于2022年,星期一目前在目前在VHDL语言中,常用的主要有以下几种库:语言中,常用的主要有以下几种库:IEEE库、库、STD库、库、WORK库、用户库库、用户库最常用的资源库是最常用的资源库是IEEE库库,常用的程序包,常用的程序包STD_LOGIC_1164:常用的数据类型(常用的数据类型(std_logic,std_logic_vector),各种类型各种类型转换函数及逻辑运算。转换函数及逻辑运算。STD_LOGIC_ARITH:定义了无符号定义了无符号unsigned、有符号数、有符号数signed数据类型
5、,数据类型,相应的算术运算;相应的算术运算;unsigned,signed和和integer之间的转换函数。之间的转换函数。STD_LOGIC_UNSIGNED,STD_LOGIC_SIGNED:定义了定义了可用于可用于integer和和std_logic,std_logic_vector数据类型混合运算的运算符,由数据类型混合运算的运算符,由std_logic_vector型到型到integer型的转换函数。型的转换函数。第6页,共101页,编辑于2022年,星期一(2)STD库库(3)WORK库库(4)自定义库自定义库是VHDL的标准库,含有称为STANDARD的标准程序包,其中定义了多种
6、常用的数据类型,均不加说明便可直接引用。另一个程序包TEXTIO(文本文件输入/输出),则需经说明后方可使用。第7页,共101页,编辑于2022年,星期一(2)STD库库(3)WORK库库(4)自定义库自定义库是当前作业库,设计人员设计的VHDL语言程序的编译结果不需要任何说明,都将要存放在work库中。Work库可以是设计者个人使用,也可提供给设计组多人使用WORK库和库和STD库库总会被自动打开。总会被自动打开。第8页,共101页,编辑于2022年,星期一(2)STD库库(3)WORK库库(4)自定义库自定义库 由用户自己创建。设计者可以把一些自己需要经常使用的非标准(一般是自己开发的)包
7、集合和实体等汇集成库,作为对VHDL标准库的补充。第9页,共101页,编辑于2022年,星期一还需要注意的是,还需要注意的是,LIBRARYLIBRARY语句和语句和USEUSE语句的作用语句的作用范围只限于紧跟其后的实体及其结构体。因此,如果一范围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体的前面个程序中有一个以上的实体,则必须在每个实体的前面分别加上分别加上LIBRARYLIBRARY语句和语句和USEUSE语句,说明各实体及其结语句,说明各实体及其结构体需要使用的库和程序包。构体需要使用的库和程序包。第10页,共101页,编辑于2022年,星期一
8、2.2.实体说明实体说明ENTITYnand_2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDnand_2;ENTITY实体名实体名ISPORT端口说明端口说明;END实体名;实体名;语法:语法:第11页,共101页,编辑于2022年,星期一端口说明语句描述实体的外部接口情况,不管内部功端口说明语句描述实体的外部接口情况,不管内部功能如何只描述它的输入和输出接口信号。一般格式为:能如何只描述它的输入和输出接口信号。一般格式为:PORTPORT(端口信号名,端口信号名(端口信号名,端口信号名 :端口模式端口模式 数据类型;数据类型;端口信号名,端口信号名端口
9、信号名,端口信号名 :端口模式端口模式 数据类型);数据类型);端口信号名端口信号名:赋给每个输入输出接口的名称:赋给每个输入输出接口的名称端口模式端口模式:说明信号的输入和输出方式,:说明信号的输入和输出方式,ININ,OUTOUTINOUT,buffer,INOUT:在输出的同时可以自己读取,同时也可以:在输出的同时可以自己读取,同时也可以作为其它端口的输入。作为其它端口的输入。如如RAM的数据口、单片机的的数据口、单片机的I/O口。口。第12页,共101页,编辑于2022年,星期一 Buffer:缓冲端口,其功能与:缓冲端口,其功能与inout类似,但类似,但是当作为输入用时,输入的信号
10、不是从外部输入,是当作为输入用时,输入的信号不是从外部输入,而是由内部产生向外输出的信号。即内部回读自身而是由内部产生向外输出的信号。即内部回读自身向外产生的信号,即允许反馈。向外产生的信号,即允许反馈。如将计数器输出的计数信号回读,作为下一如将计数器输出的计数信号回读,作为下一个计数值的初值。个计数值的初值。第13页,共101页,编辑于2022年,星期一【例例1】以如图以如图1所示的所示的RS触发器为例,定义如下:触发器为例,定义如下:ENTITYrsffISPORT(set,reset:INBIT;q,qb:BUFFERBIT);ENDrsff;图图1RS触发器触发器第14页,共101页,
11、编辑于2022年,星期一端口数据类型端口数据类型:(1)标准数据类型,如:整数、实数,位,位矢量等。标准数据类型,如:整数、实数,位,位矢量等。(2)IEEE标准数据类型,标准逻辑位标准数据类型,标准逻辑位STD_LOGIC、标准逻辑、标准逻辑矢量矢量STD_LOGIC_VECTOR。(3)用户自定义的数据类型,如枚举型、数组类型、文件用户自定义的数据类型,如枚举型、数组类型、文件(FILE)类型、记录类型、记录(RECORD)类型等。类型等。第15页,共101页,编辑于2022年,星期一在逻辑电路设计中用到两种,即位逻辑数据类型在逻辑电路设计中用到两种,即位逻辑数据类型(BIT)和位向量型和
12、位向量型(BIT_VECTOR)。BIT类型也可以用类型也可以用STD_LOGIC说明,说明,BIT_VECTOR也可以用也可以用STD_LOGIC_VECTOR说明。但是,在使用说明。但是,在使用STD_LOGIC和和STD_LOGIC_VECTOR时,应该在实时,应该在实体说明以前增加两条语句:体说明以前增加两条语句:LIBRARYIEEE:IEEE库库USEIEEE.STD_LOGIC_1164.ALL:第16页,共101页,编辑于2022年,星期一Bit数据类型只有两种:数据类型只有两种:0和和1。Std_logic数据类型有数据类型有9种:种:U:未初始化;:未初始化;X:强未知;:
13、强未知;0:逻辑:逻辑0;1:逻辑:逻辑1;Z:高阻态;:高阻态;W:弱未知;:弱未知;L:弱逻辑:弱逻辑0;H:弱逻辑:弱逻辑1;-:忽略;:忽略;Z和和-(有的综合器用(有的综合器用X)可以用于三态描述可以用于三态描述Std_logic数据在数字器件的实现中数据在数字器件的实现中只有其中的只有其中的45种值,即种值,即X(或(或/和和-)0、1和和Z。第17页,共101页,编辑于2022年,星期一 一个基本设计实体由实体说明一个基本设计实体由实体说明(Entity(Entity Declaration)Declaration)和结构体和结构体(Architecture Body)(Arch
14、itecture Body)两部两部分构成。如果把实体说明看作为一个黑盒子,分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描里面的内容。黑盒子里面的内容由结构体来描述。述。第18页,共101页,编辑于2022年,星期一 3 3结构体结构体(Architecture)(Architecture)结结构构体体定定义义了了设设计计单单元元的的具具体体功功能能,一一定定要要跟跟在在实实体体的的后后面面。结结构构体体可可以以分分为为两两部部分分:说说明明部部分分和和描描述述体体部部分分。一个结
15、构体的具体结构描述如下:一个结构体的具体结构描述如下:ARCHITECTUREARCHITECTURE 结构体名结构体名OFOF实体名实体名IS IS 结构体说明结构体说明 内部信号,常数,数据类型等的定义;内部信号,常数,数据类型等的定义;BEGINBEGIN 并行处理语句并行处理语句;END END 结构体名;结构体名;第19页,共101页,编辑于2022年,星期一【例例】编写描述一个二选一器件编写描述一个二选一器件(如图所示如图所示)的程序。的程序。ENTITY mux ISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;图图 二选一器件的电路原理
16、图二选一器件的电路原理图 第20页,共101页,编辑于2022年,星期一ARCHITECTURE dataflowOFmuxISBEGINq=(d0ANDsel)OR(NOTselANDd1);ENDdataflow;“=”表示赋值关系。表示赋值关系。逻逻辑辑运运算算符符包包括括:AND(与与),OR(或或),NAND(与与非非),NOR(或非或非),XOR(异或异或),NOT(非非)。第21页,共101页,编辑于2022年,星期一Verilog 程序程序Module fulladder(a,b,carryin,sum,carryout)Input a,b,carryin;Output sum
17、 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第22页,共101页,编辑于2022年,星期一4位计数器位计数器module count4(out,reset,clk);output3:0 out;input reset,clk;reg3:0 out;always(posedg
18、e clk)beginif(reset)out=0;/同步复位同步复位else out=out+1;/计数数endendmodule第23页,共101页,编辑于2022年,星期一libraryieee;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;architectureexampleAofcountAi
19、ssignalcount_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;第24页,共101页,编辑于2
20、022年,星期一IF THEN 顺序处理语句顺序处理语句1;ELSIF THEN 顺序处理语句顺序处理语句2;.ELSE 顺序处理语句顺序处理语句3;END IF;IFIF语句的格式:语句的格式:If 条件条件 then顺序处理语句顺序处理语句;end if;If 条件条件 then顺序语句顺序语句1;Else顺序语句顺序语句2;End if;注意在注意在VHDL语言中不区分大小写语言中不区分大小写第25页,共101页,编辑于2022年,星期一时钟信号上升沿和下降沿的表示时钟信号上升沿和下降沿的表示(1)表示一个上升沿时钟表示一个上升沿时钟clk:clkEVENTANDclk=1;rising
21、_edge(clk)(2)表示一个下降沿时钟表示一个下降沿时钟clk:clkEVENTAND clk=0;Falling_edge(clk)第26页,共101页,编辑于2022年,星期一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;类属参数说明类属参数说明 类属参数说明必须放在端口说明前面,用于指定类属参数说明必须放在端口说明前面,用于指定参数
22、。类属参数说明的一般格式为:参数。类属参数说明的一般格式为:GENERIC(常数名:数据类型常数名:数据类型:设定值:设定值);第27页,共101页,编辑于2022年,星期一 在门级模型中,可以使用类属参数指定延迟时间参数。在门级模型中,可以使用类属参数指定延迟时间参数。例如在结构体内出现语句:例如在结构体内出现语句:GENERIC(m:TIME:=1ns)GENERIC(m:TIME:=1ns)Temp1:=do AND sel AFTER m Temp1:=do AND sel AFTER m;表示表示dodo和和selsel相与后,经过相与后,经过1 ns1 ns延迟才送到延迟才送到Te
23、mp1Temp1。(当当然然,时时间间单单位位可可以以取取fs(1 fs(1 ps=1000 ps=1000 fs fs,1 1 ns=1000 ns=1000 ps)ps)、(s(s、msms、secsec、minmin、hrhr等等)。第28页,共101页,编辑于2022年,星期一第三节第三节VHDL结构体的子结构结构体的子结构一一个个大大规规模模的的电电路路原原理理图图通通常常由由多多张张子子电电路路原原理理图图构构成成。一一个个结结构构体体也也可可以以由由几几个个子子结结构构组组成成,有有利利于编程和查错。于编程和查错。VHDL可以用以下三种子结构描述语句:可以用以下三种子结构描述语句
24、:(1)BLOCK语句结构;语句结构;(2)PROCESS语句结构语句结构;(3)SUBPROGRAMS语句结构。语句结构。第29页,共101页,编辑于2022年,星期一3.1块块(BLOCK)语句语句块块语语句句将将结结构构体体中中的的并并行行描描述述语语句句进进行行组组合合,增增加加并并行行描描述述语语句句及及其其结结构构的的可可读读性性,使使结结构构体体层层次次清清晰晰,对对技技术术交交流流、程程序序移移植植和和修修改改都都是是非非常有用的。常有用的。BLOCK语句的结构如下:语句的结构如下:块结构标号:块结构标号:BLOCKBEGINENDBLOCK块结构标号;块结构标号;第30页,共
25、101页,编辑于2022年,星期一【例例】采用采用BLOCK语句描述二选一电路。语句描述二选一电路。ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREconnectOFmux ISSIGNALtmp1,tmp2,tmp3:BIT;第31页,共101页,编辑于2022年,星期一BEGINcale:BLOCKBEGINtmp1=d0ANDsel;tmp2=d1AND(NOTsel);tmp3=tmp1ORtmp2;q=tmp3;ENDBLOCKcale;ENDconnect;第32页,共101页,编辑于2022年,
26、星期一3.2进程进程(PROCESS)语句语句1进程进程(PROCESS)语句的结构语句的结构进进程程语语句句是是VHDL中中使使用用最最广广泛泛的的语语句句之之一一,进进程程语语句句既既能能够够描描述述组组合合逻逻辑辑,又又能能够够描描述述时时序序逻逻辑。辑。进程语句的结构如下:进程语句的结构如下:进进程程名名:PROCESS(敏敏感感信信号号1,敏敏感感信信号号2,)BEGINENDPROCESS进程名进程名;第33页,共101页,编辑于2022年,星期一2进程的启动进程的启动在在PROCESS语句中一般都带有几个输入信号,语句中一般都带有几个输入信号,在书写时写在在书写时写在PROCES
27、S后面的括号中。这些信号中后面的括号中。这些信号中的任意一个信号发生变化的任意一个信号发生变化(“1”变变“0”或或“0”变变“1”)都会启动都会启动PROCESS语句,因此这些信号称为语句,因此这些信号称为敏感敏感信号信号。第34页,共101页,编辑于2022年,星期一寄存器寄存器library IEEE;use Ieee.std_logic_1164.all;entity register1 isport(clk:in std_logic;clr:in std_logic;d:in std_logic_vector(3 downto 0);q:out std_logic_vector(3
28、downto 0);end register1;寄存器管脚图寄存器管脚图Clr=1,q=0;architecture rtl of register1 isbegin process(clk,clr)begin if(clr=1)then q=0000;elsif(clkevent and clk=1)then q=d;end if;end process;end rtl;第35页,共101页,编辑于2022年,星期一移位寄存器移位寄存器 设计一个具有异步并行预制功能的设计一个具有异步并行预制功能的8位右移移位寄存器。位右移移位寄存器。clk:移位时钟信号;移位时钟信号;din:8位并行预制数
29、据端口;位并行预制数据端口;load:并行数据预制使能信号;并行数据预制使能信号;QB:串行输出端;:串行输出端;library IEEE;use IEEE.std_logic_1164.all;entity shfrt is port(clk,load:in std_logic;din:in std_logic_vector(7 downto 0);QB:out std_logic);end shfrt;第36页,共101页,编辑于2022年,星期一architecture behavioral of shfrt is begin process(clk,load)variable reg8
30、:std_logic_vector(7 downto 0);begin if clkevent and clk=1 then if load=1 then reg8:=din;else reg8(6 downto 0):=reg8(7 downto 1);end if;end if;QB=reg8(0);end process;end behavioral;移位寄存器移位寄存器第37页,共101页,编辑于2022年,星期一移位寄存器移位寄存器第38页,共101页,编辑于2022年,星期一移位寄存器移位寄存器第39页,共101页,编辑于2022年,星期一3进程语句的顺序性进程语句的顺序性PROC
31、ESS结构中的语句是按顺序一条一条向下结构中的语句是按顺序一条一条向下执行的,与执行的,与BLOCK中的语句可以并发执行是不一样中的语句可以并发执行是不一样的。的。VHDL语言中,顺序执行的语句只在语言中,顺序执行的语句只在PROCESS和和SUBPROGRAMS的结构中使用。一的结构中使用。一个结构体可以有多个并行运行的进程,每一个进程个结构体可以有多个并行运行的进程,每一个进程之间是并行执行的关系,而每一个进程的内部结构之间是并行执行的关系,而每一个进程的内部结构却是由一系列顺序语句构成的。却是由一系列顺序语句构成的。第40页,共101页,编辑于2022年,星期一图图 多路选择器多路选择器
32、 【例】【例】用进程语句描述一个如图所示的二选一用进程语句描述一个如图所示的二选一的多路选择器的程序如下:的多路选择器的程序如下:第41页,共101页,编辑于2022年,星期一 ENTITYmuxISPORT(d0,d1,sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREconnectOFmuxISBEGINPROCESS(d0,d1,sel)VARIABLEtmp1,tmp2,tmp3:BIT;BEGINtmp1:=d0ANDsel;tmp2:=d1AND(NOTsel);tmp3:=tmp1ORtmp2;q=tmp3;ENDPROCESS;ENDconnect;
33、第42页,共101页,编辑于2022年,星期一【例】三态门电路设计【例】三态门电路设计第43页,共101页,编辑于2022年,星期一【例】单向总线缓冲器【例】单向总线缓冲器En=1时,时,dout=din,En=0时,输出为三态;时,输出为三态;library IEEE;use IEEE.std_logic_1164.all;entity tri_buff8 is port(din:in std_logic_vector(7 downto 0);dout:out std_logic_vector(7 downto 0);en:in std_logic);end tri_buff8;archit
34、ecture behavioral of tri_buff8 is begin P:process(en,din)begin if en=1 then dout=din;else doutZ);end if;end process;end behavioral;第44页,共101页,编辑于2022年,星期一单向总线缓冲器的单向总线缓冲器的RTL电路图电路图第45页,共101页,编辑于2022年,星期一use Ieee.std_logic_1164.all;use Ieee.std_logic_unsigned.all;entity han isport(clk:in std_logic;clr
35、:in std_logic;d:in std_logic_vector(4 downto 0);q:out std_logic_vector(4 downto 0);end han;architecture rtl of han isbeginprocess(clk,clr)variable aa:std_logic_vector(4 downto 0);begin if(clr=1)then q=00000;aa:=d;elsif(clkevent and clk=1)then aa:=aa-1;q=aa;end if;end process;end rtl;clkclrd4.0q4.0减计
36、数器减计数器clr=1,q=0;让学生对该计数器编程让学生对该计数器编程第46页,共101页,编辑于2022年,星期一4.1数据对象数据对象(DataObjects)常常用用的的数数据据对对象象有有三三类类:常常量量(Constant)、信信号号(Signal)和和变变量量(Variable)。常常量量相相当当于于硬硬件件电电路路中中的的恒恒定定电电平平;信信号号和和变变量量相相当当于于电电路路中中的的连连线线和和连连线线上上的信号值。的信号值。1常量常量(Constant)常常量量说说明明就就是是对对一一个个常常量量名名赋赋予予一一个个固固定定的的值值。常量说明的一般格式如下:常量说明的一般
37、格式如下:CONSTANT常量名:常量名:数据类型数据类型:=表达式;表达式;第四节第四节 数据对象、数据类型数据对象、数据类型第47页,共101页,编辑于2022年,星期一例如:例如:CONSTANTVCC:REAL:=5.0;CONSTANTDELAY:TIME:=100ns;CONSTANTFBUS:BIT_VECTOR:=0101;常量所赋予的值应该和定义的数据类型一致。常量所赋予的值应该和定义的数据类型一致。第48页,共101页,编辑于2022年,星期一2信号信号(Signal)信信号号是是一一个个全全局局量量,它它可可以以用用于于进进程程之之间间的的通通信信,用用于于说说明明电电路
38、路内内部部的的连连线线信信号号。信信号号通通常常在在结结构构体体、程程序序包包和和实实体体中中说说明明。信信号号说说明明语语句句的的格格式式如下:如下:第49页,共101页,编辑于2022年,星期一第50页,共101页,编辑于2022年,星期一例如:例如:SIGNALground:BIT:=0;其其中中,符符号号“:=”表表示示直直接接赋赋值值,用用于于指指定定信号的初始值。信号的初始值。信号赋值语句的格式为:信号赋值语句的格式为:信信号号名名=表表达达式式AFTER时时间间表表达达式式;其其中中,信信号号赋赋值值符符号号为为“=”,时时间间表表达达式式指指定定延延迟迟时时间间,如如果果省省略
39、略AFTER语语句句,则则延延迟迟时时间间取默认值。取默认值。第51页,共101页,编辑于2022年,星期一 3 3变量变量(Variable)(Variable)变变量量只只能能够够在在进进程程语语句句、函函数数语语句句和和过过程程语语句句结结构构中中使使用用,是是一一个个局局部部变变量量。变变量量说说明明语语句句的的格格式如下:式如下:VARIABLE VARIABLE 变量名:数据类型变量名:数据类型 约束条件约束条件:=:=表达式;表达式;例如:例如:VARIABLE countVARIABLE count:INTEGER RANGE 0 TO 255:=10INTEGER RANGE
40、 0 TO 255:=10;变变量量countcount为为整整数数类类型型,RANGE RANGE 0 0 TO TO 255255是是对对类类型型INTEGERINTEGER的的附附加加限限制制。该该语语句句一一旦旦执执行行,立立即即将将初初始值始值1010赋予变量。赋予变量。第52页,共101页,编辑于2022年,星期一变量可以定义成布尔变量可以定义成布尔(BOOLEAN)类型、整类型、整数数(INTEGER)类型、类型、BIT和和BIT_VECTOR类型、类型、STD_LOGIC和和STD_LOGIC_VECTOR类型。类型。变量赋值语句的格式为:变量赋值语句的格式为:变量名变量名:=
41、表达式表达式;第53页,共101页,编辑于2022年,星期一4 4信号与变量信号与变量信号与变量之间的差别如表所示。信号与变量之间的差别如表所示。信号与变量的差别信号与变量的差别第54页,共101页,编辑于2022年,星期一信号与变量在结构体的位置说明如下:信号与变量在结构体的位置说明如下:ARCHITECTUREsv_archOFsvIS信号说明信号说明-在在进进程程外外部部对对信信号号说说明明,该该信信号号对对所所有有的的进进程程都是可见的都是可见的-BEGIN进程标号进程标号1:PROCESS变量说明变量说明-在在进进程程内内部部对对变变量量说说明明,该该变变量量只只在在进进程程是是可见
42、的可见的ENDPROCESS进程标号进程标号1;第55页,共101页,编辑于2022年,星期一 进程标号进程标号2:PROCESS2:PROCESS 变量说明变量说明 END PROCESS END PROCESS进程标号进程标号1;1;END sv_archEND sv_arch;第56页,共101页,编辑于2022年,星期一【例】数据选择器【例】数据选择器:通过这个例子进一步了解变量和信号的区别通过这个例子进一步了解变量和信号的区别第57页,共101页,编辑于2022年,星期一仿真结果仿真结果第58页,共101页,编辑于2022年,星期一【例】数据选择器【例】数据选择器:通过这个例子进一步
43、了解变量和信号的区别通过这个例子进一步了解变量和信号的区别第59页,共101页,编辑于2022年,星期一仿真结果仿真结果第60页,共101页,编辑于2022年,星期一判断下列程序的正确性:判断下列程序的正确性:第61页,共101页,编辑于2022年,星期一4.2数据类型数据类型(DataTypes)VHDL是是一一种种对对数数据据类类型型的的定定义义非非常常严严格格的的硬硬件件描描述述语语言言,规规定定每每一一个个对对象象都都必必须须有有明明确确的的数数据据类类型型。不不同同类类型型之之间间的的数数据据不不能能够够直直接接代代入入,把不同数据类型的信号连接起来是非法的。把不同数据类型的信号连接
44、起来是非法的。第62页,共101页,编辑于2022年,星期一1VHDL的预定义数据类型的预定义数据类型在在STD库库中中有有一一个个标标准准(STANDARD)程程序序包包,定定义义了了一一些些预预定定义义的的数数据据类类型型。由由于于在在用用VHDL编编写写程程序序时时,STD库库总总是是自自动动打打开开的的,因因此此当当使使用用这这些些数数据据类类型型时时,不不需需要要使使用用USE语语句句打打开开STD库。常用的预定义的数据类型如下。库。常用的预定义的数据类型如下。第63页,共101页,编辑于2022年,星期一 1)1)整数整数(INTEGER)(INTEGER)类型类型 例如:例如:S
45、IGNAL int_s:INTEGER RANGER 0 TO 255;SIGNAL int_s:INTEGER RANGER 0 TO 255;-信号信号int_sint_s的数据宽度为的数据宽度为8 8位位 VHDLVHDL的的算算术术运运算算符符都都定定义义为为整整数数。描描述述算算术术运运算算时时,一一般般都都使使用用整整数数类类型型。但但是是使使用用整整数数也也有有一些缺点,很难表示未知、三态等逻辑状态。一些缺点,很难表示未知、三态等逻辑状态。第64页,共101页,编辑于2022年,星期一2)实数实数(REAL)数据类型数据类型实实数数的的取取值值范范围围为为-1.0E38+1.0E
46、38。由由于于要要完完成成具具有有实实数数的的运运算算需需要要大大量量的的资资源源,因因此此一一般般的的可可编编程程逻逻辑辑器器件件开开发发系系统统中中的的VHDL综综合合器器不不支持实数数据类型。支持实数数据类型。第65页,共101页,编辑于2022年,星期一3)位位(BIT)和位向量和位向量(BIT_VECTOR)类型类型位位(BIT)和位向量和位向量(BIT_VECTOR)类型是预定类型是预定义类型,通用性强。位义类型,通用性强。位(BIT)只能取值只能取值0或或1,位值位值放在单引号中。位向量是用双引号括起来的一组位数放在单引号中。位向量是用双引号括起来的一组位数据据。例如:。例如:0
47、011001X表示十六进制。表示十六进制。一一般般用用位位向向量量表表示示硬硬件件电电路路的的信信号号总总线线,可可以以采采用多种方式对信号总线进行赋值。用多种方式对信号总线进行赋值。第66页,共101页,编辑于2022年,星期一数字数字实数实数 1.335,88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499)整数整数5,678,0,156E2(=15600),45_234_287(=45234287)以数制以数制基数表基数表示的文示的文字字SIGNAL d1,d2,d3,d4,d5,:INTEGER RANGE 0 TO 255
48、;d1=10#170#;-(十进制表示,等于十进制表示,等于 170)d2=16#FE#;-(十六进制表示,等于十六进制表示,等于 254)d3=2#1111_1110#;-(二进制表示,等于二进制表示,等于 254)d4=8#376#;-(八进制表示,等于八进制表示,等于 254)物理量文字物理量文字(VHDL综综合器不接受此类文字合器不接受此类文字)60s(60秒秒),100m(100米米),k(千欧姆千欧姆),177A(177安培安培)第67页,共101页,编辑于2022年,星期一(1)文字字符文字字符串串ERROR,BothSandQequalto1,X,BB$CCK KX康芯科技康芯
49、科技(2)数位字符数位字符串串data1=B1_1101_1110 -二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是9data2=O15 -八进制数数组,位矢数组长度是八进制数数组,位矢数组长度是6data3=XAD0 -十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是12data4=B101_010_101_010 -二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是12data5=101_010_101_010 -表达错误,缺表达错误,缺B。data6=0AD0-表达错误,缺表达错误,缺X。第68页,共101页,编辑于2022年,星期一例如:设定义信号例如:设定
50、义信号a(3DOWNTO0);=“1011”;-执行该赋值语句后,执行该赋值语句后,a(3)=1,a(2)=0,a(1)=1,a(0)=1 -执行该赋值语句后,执行该赋值语句后,a(1)=0,a(0)=1a(0 TO 1)=“10”;第69页,共101页,编辑于2022年,星期一4)布尔布尔(BOOLEAN)数据类型数据类型布布尔尔数数据据类类型型经经常常用用于于逻逻辑辑关关系系运运算算中中,它它的的取取值值只只有有两两个个(TRUE和和FALSE)。它它和和位位数数据据类类型型不不同同,没没有有数数值值的的含含义义,也也不不能能够够进进行行算算术术运算。运算。第70页,共101页,编辑于20