版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 VHDLVHDL语言基础语言基础本章目录本章目录 VHDLVHDL概述概述 VHDLVHDL程序的基本结构程序的基本结构 VHDLVHDL程序的主要构件程序的主要构件 VHDLVHDL数据类型及数据类型及运算符运算符 VHDLVHDL数据对象数据对象 VHDLVHDL基本语句基本语句 测试基准测试基准 VHDLVHDL程序的其他组件程序的其他组件 结构体的描述方法结构体的描述方法VHDLVHDL 概述概述VHDLVHDL概述概述什么是什么是VHDLVHDLuVHDLVery-High-Speed Integrated circuit VHDLVery-High-Speed Int
2、egrated circuit Hardware Description LanguageHardware Description LanguageVHDLVHDL的起源及发展的起源及发展u8080年代初,由美国国防部在实施超高速集成电路年代初,由美国国防部在实施超高速集成电路(VHSICVHSIC)项目时开发的)项目时开发的u19871987年,年,IEEEIEEE协会批准为协会批准为IEEEIEEE工业标准,称为工业标准,称为IEEE1076-1987IEEE1076-1987u19931993年,被更新为年,被更新为9393标准,标准,IEEE1076.93IEEE1076.93u199
3、61996年,年,IEEE1076.3IEEE1076.3称为综合标准称为综合标准VHDLVHDL概述概述VHDLVHDL的用途的用途u主要用于描述字系统的结构、行为、功能和接口主要用于描述字系统的结构、行为、功能和接口使用使用VHDLVHDL的目的的目的u把电子电路的设计意义以文字或文件的把电子电路的设计意义以文字或文件的形形式保存式保存起来,以便其它人能起来,以便其它人能方便方便地了解电路的设计意义地了解电路的设计意义VHDLVHDL与与verilog HDLverilog HDL的比较的比较相同点:相同点:u 都是主要的硬件描述语言都是主要的硬件描述语言u 都能以文本形式抽象表示电路的行
4、为和结构都能以文本形式抽象表示电路的行为和结构u 都可以从系统行为级,寄存器传输级和门级描都可以从系统行为级,寄存器传输级和门级描 进行电路描述进行电路描述不同点不同点u 语法差异,语法差异,verilogverilog是类是类C C语言,简单易用,语言,简单易用, 而而VHDLVHDL语句较为晦涩,使用难度大语句较为晦涩,使用难度大 u VHDL VHDL侧重于系统描述,更适合系统级设计侧重于系统描述,更适合系统级设计u Verilog Verilog 侧重于电路级描述,更适合电路设侧重于电路级描述,更适合电路设 计计VHDLVHDL特点特点系统硬件描述能力强系统硬件描述能力强与器件无关,与
5、工艺无关与器件无关,与工艺无关IEEEIEEE工业标准工业标准方法灵活,技术齐全方法灵活,技术齐全可读性好可读性好VHDL具有硬件具有硬件特征,而且是并特征,而且是并行执行方式行执行方式。VHDLVHDL概述概述举例:二路选择器描述的变化举例:二路选择器描述的变化二路选择器模块二路选择器模块: :sel=0sel=0时,时,q=d0q=d0;sel=1sel=1时,时,q=d1q=d1。传统的描述方式:传统的描述方式:用与门、非门、或门等具用与门、非门、或门等具体底层器件来组成,使用体底层器件来组成,使用图形输入法。图形输入法。缺点:缺点:硬件电路设计复杂,需要硬件电路设计复杂,需要先写出逻辑
6、表达式或真值先写出逻辑表达式或真值表,并进行化简。表,并进行化简。VHDLVHDL概述概述举例:二路选择器描述的变化举例:二路选择器描述的变化VHDLVHDL描述方式:描述方式:使用文本输入的方法。设计电路使用文本输入的方法。设计电路优点:优点:可读性好,设计简单,具体电路由可读性好,设计简单,具体电路由软件优化。软件优化。LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_1164.all;ENTITYENTITY MUX2 IS MUX2 IS PORTPORT (d0,d1: (d0,d1:IN
7、 IN std_logicstd_logic; ; sel:sel:ININ std_logicstd_logic; ; q: q:OUT OUT std_logicstd_logic););END END ENTITY;ENTITY;ARCHITECTURE ARCHITECTURE behavbehav OF MUX2 IS OF MUX2 ISBEGINBEGIN PROCESSPROCESS (d0,d1,sel) (d0,d1,sel) BEGIN BEGIN IFIF selsel=0 THEN=0 THEN q=d0; q=d0; ELSIF ELSIF selsel=1 THE
8、N=1 THEN q=d1; q=d1; ELSE ELSE q=Z;q=Z; END IF;END IF; END PROCESS END PROCESS; ;END END behavbehav; ;VHDLVHDL程序的基本结构程序的基本结构VHDLVHDL程序的基本结构程序的基本结构一个完整的一个完整的VHDLVHDL程序包括库的调用,程序包的程序包括库的调用,程序包的调用,实体说明和结构体调用,实体说明和结构体4 4个部分。另外还可个部分。另外还可包括配置部分包括配置部分库的调用库的调用程序包的调用程序包的调用实体描述实体描述结构体描述结构体描述用于说明设计系统的外部接用于说明设计系
9、统的外部接口信息,具有唯一性口信息,具有唯一性相当于操作系统中的目录相当于操作系统中的目录描述实体的行为、功能或电描述实体的行为、功能或电路结构路结构类似于高级语言的类似于高级语言的includeinclude语句语句VHDLVHDL的基本结构的基本结构配置配置描述层间或实体与结构体的描述层间或实体与结构体的关系关系ExampleExample库的调用库的调用程序包的调用程序包的调用实体描述实体描述结构体描述结构体描述VHDLVHDL的基本结构的基本结构LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logi
10、c_1164.all;ENTITY ENTITY MUX2 ISMUX2 IS PORT ( PORT (d0,d1:d0,d1:IN IN std_logic;std_logic; sel:sel:IN IN std_logic;std_logic; q:q:OUT OUT std_logicstd_logic););ENDEND ENTITY; ENTITY;ARCHITECTURE ARCHITECTURE behav OF MUX2 ISbehav OF MUX2 ISBEGINBEGIN PROCESS ( PROCESS (d0,d1,seld0,d1,sel) ) BEGINBE
11、GIN IF IF sel=sel=0 0 THEN THEN q=d0;q=d0; ELSIF ELSIF sel=sel=1 1 THEN THEN q=d1;q=d1; ELSE ELSE q= q=Z Z; ; END IF; END IF; END PROCESS; END PROCESS;END END behav;behav;二路选择器的二路选择器的VHDLVHDLVHDLVHDL的主要构件的主要构件VHDLVHDL程序的主要构件程序的主要构件VHDLVHDL程序的基本构件程序的基本构件包括库、包,配置,实体,结构体、块、子程序包括库、包,配置,实体,结构体、块、子程序(函数和过
12、程)(函数和过程)主要构件主要构件库、程序包、实体、结构体,配置库、程序包、实体、结构体,配置VHDLVHDL的主要构件的主要构件1.1.库库库库(Library)(Library)是编译后数据的集合,是存放预先完是编译后数据的集合,是存放预先完成的程序包和数据集合体的仓库。成的程序包和数据集合体的仓库。LIBRARY LIBRARY IEEEIEEE; ;USE USE IEEE.std_logic_1164.ALLIEEE.std_logic_1164.ALL; ;USE USE IEEE.std_logic_unsigned.ALLIEEE.std_logic_unsigned.ALL;
13、 ;ExampleExample:常用的库:常用的库:STDSTD库(默认库)库(默认库) IEEEIEEE库,库,WORKWORK库(默认库),面向库(默认库),面向ASICASIC的库,用户自定义库的库,用户自定义库使用格式:使用格式:LIBRARY LIBRARY 库名库名VHDLVHDL的主要构件的主要构件: :库库STDSTD库(默认库)库(默认库)库中的程序包为:库中的程序包为:standardstandardSTDSTD库符合库符合VHDLVHDL语言标准,是默认库,在应用中不必像语言标准,是默认库,在应用中不必像IEEEIEEE库那样显式使用库那样显式使用STDSTD库内定义了
14、最基本的数据类型:库内定义了最基本的数据类型:BitBit、bit_wectorbit_wector、 Boolean Boolean、IntegerInteger、RealReal、TimeTime并支持这些数据类型的所有运算符函数并支持这些数据类型的所有运算符函数IEEEIEEE库库IEEEIEEE库是库是VHDLVHDL设计中最常见的库,由于该库中的程序包设计中最常见的库,由于该库中的程序包并非符合并非符合VHDLVHDL语言标准,因此在使用时必须显示表达语言标准,因此在使用时必须显示表达IEEEIEEE库内定义了四个常用的程序包:库内定义了四个常用的程序包: std_logic_116
15、4(std_logic_1164(std_logicstd_logic types & related types & related functionsfunctions Std_logic_arithStd_logic_arith(arithmetic functions)(arithmetic functions) Std_logic_signedStd_logic_signed(signed arithmetic functions)(signed arithmetic functions) Std_logic_unsignedStd_logic_unsigned(un
16、signed arithmetic functions)(unsigned arithmetic functions)VHDLVHDL的主要构件的主要构件: :库库LIBRARY LIBRARY IEEEIEEE; ;USE USE IEEE.std_logic_1164.ALLIEEE.std_logic_1164.ALL; ;USE USE IEEE.std_logic_unsigned.ALLIEEE.std_logic_unsigned.ALL; ;Example:Example:IEEEIEEE库库四个常用的程序包:四个常用的程序包: std_logic_1164std_logic_
17、1164包含了一些标准逻辑电平所需数据类型和函数的定义。包含了一些标准逻辑电平所需数据类型和函数的定义。 常用的两个数据类型:常用的两个数据类型:STD_LOGICSTD_LOGIC和和STD_LOGIC_VECTORSTD_LOGIC_VECTOR Std_logic_arithStd_logic_arith扩展了三个数据类型扩展了三个数据类型UNSIGNEDUNSIGNED,SIGNEDSIGNED和和SMALL_INTSMALL_INT,并为其定义了相关的算术运算符和转换函数并为其定义了相关的算术运算符和转换函数 Std_logic_signedStd_logic_signed和和Std
18、_logic_unsignedStd_logic_unsigned重载了可用于重载了可用于INTEGERINTEGER型和型和STD_LOGICSTD_LOGIC及及STD_LOGIC_VECTORSTD_LOGIC_VECTOR型混合运算的运算符,并定义了型混合运算的运算符,并定义了 不不同数据类型间的转换函数同数据类型间的转换函数VHDLVHDL的主要构件的主要构件: :库库WORKWORK库(默认库)库(默认库) WORKWORK是用户现行设计的工作库,用于存放用是用户现行设计的工作库,用于存放用户设计和定义的一些设计单元和程序包。户设计和定义的一些设计单元和程序包。 该库满足该库满足V
19、HDLVHDL语言标准,在实际调用中不需语言标准,在实际调用中不需要显示调用要显示调用VHDLVHDL的主要构件的主要构件: :库库包集合包集合包集合说明就像包集合说明就像C C语言中的语言中的includeinclude语句一样,用语句一样,用来单纯地罗列来单纯地罗列VHDLVHDL语言中所要用到的信号定义、语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过常数定义、数据类型、元件语句、函数定义和过程定义等程定义等VHDLVHDL的主要构件的主要构件: :包包ExampleExample:USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOG
20、IC_1164.ALL该语句表示在程序中要使用名为该语句表示在程序中要使用名为STD_LOGIC_1164STD_LOGIC_1164的包集合中的所有定义或说明项的包集合中的所有定义或说明项VHDLVHDL的主要构件的主要构件: :包包在在VHDLVHDL中,同样的语句,使用不同的库或不同的中,同样的语句,使用不同的库或不同的包,所生成的电路,可能会逻辑相同,电路不同包,所生成的电路,可能会逻辑相同,电路不同LIBRARY LIBRARY STD;STD;USE USE STD.STD_LOGIC.ALLSTD.STD_LOGIC.ALL; ;USE USE STD.STD_ttl.ALLST
21、D.STD_ttl.ALL; ;ENTITY ENTITY nand2 nand2 ISIS . . . . . .END END nand2;nand2;LIBRARY LIBRARY STD;STD;USE USE STD.STD_LOGIC.ALL;STD.STD_LOGIC.ALL;USE USE STD.STD_ttloc.ALLSTD.STD_ttloc.ALL; ;ENTITY ENTITY nand2nand2 ISIS . . . . . .ENDEND nand2; nand2;生成一般的与非门生成集电极开路的与非门VHDLVHDL的主要构件的主要构件: :实体实体实体(实
22、体(ENTITYENTITY)包括实体名,类属参数说明,端)包括实体名,类属参数说明,端口说明三部分,由保留字口说明三部分,由保留字“ENTITYENTITY”引导引导ENTITY ENTITY 实体名实体名 ISIS 类属参数说明类属参数说明 ; 端口说明端口说明 ;ENDENDENTITY ENTITY 实体名实体名 ;使用格式:注意:注意: 实体名不能以数字开头,不能与保留字相同实体名不能以数字开头,不能与保留字相同 实体名应尽可能表达功能上含义实体名应尽可能表达功能上含义 实体结束以实体结束以“END ENTITYEND ENTITY”或或“END END 实体名实体名”结束结束VHD
23、LVHDL的主要构件的主要构件: :实体实体ENTITY ENTITY 实体名实体名 ISIS 类属参数说明类属参数说明 ; 端口说明端口说明 ;ENDENDENTITY ENTITY 实体名实体名 ; 类属参数说明u 常用于说明静态信息,如器件延迟u 由保留字GENERICGENERIC引导。u 格式如下:GENERICGENERIC(常数名:数据类型:=设定值); 例如:GENERICGENERIC(m:timem:time:=1ns=1ns); 端口说明(重点讲解双向口)u 端口说明是一个设计实体界面的描述,提供外部接口信息。u 由保留字PORTPORT引导u 格式如下:PORTPORT
24、(端口名:端口方向 数据类型) 例如:PORT (PORT (d0:d0:IN IN std_logic;std_logic;););VHDLVHDL的主要构件的主要构件: :实体实体ExampleExample:写出如下器件的实体描述:写出如下器件的实体描述ENTITY ENTITY my_designmy_design IS ISPORT(PORT(d:d:ININ std_logic_vectorstd_logic_vector( (1515 DOWNTO DOWNTO 0 0);); clk,reset,oe:clk,reset,oe:ININ std_logicstd_logic;
25、; q:q:OUT OUT std_logic_vectorstd_logic_vector( (1515 DOWNTO DOWNTO 0 0);); ad:ad:I INOUTNOUT std_logic_vectorstd_logic_vector( (1515 DOWNTO DOWNTO 0 0);); int:int:BUFFERBUFFER std_logicstd_logic; ; as:as:OUTOUT std_logicstd_logic););END END my_designmy_design; ;给几个练习VHDLVHDL的主要构件的主要构件: :结构体结构体注意:u
26、结构体名应有明确的意义u 定义语句只对本结构体有效u 结构体里面的语句是并行的结构体(结构体(ARCHITECTUREARCHITECTURE)是设计实体的具体描述,指明)是设计实体的具体描述,指明设计实体的具体行为、所用元件及连接关系。由定义说设计实体的具体行为、所用元件及连接关系。由定义说明和具体功能描述两部分组成。明和具体功能描述两部分组成。使用格式:ARCHITECTUREARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 定义语句定义语句 信号信号(signalsignal);); 常数常数(constantconstant);); 数据类型数据类型(ty
27、petype);); 函数函数(functionfunction);); 元件元件(componentcomponent)等;)等;BEGINBEGIN 并行处理语句并行处理语句 ;END END 结构体名;结构体名;VHDLVHDL的主要构件的主要构件: :结构体结构体ExampleExample:半加器:半加器半加器电路是指对两个输入数据位进行加法,输出一个半加器电路是指对两个输入数据位进行加法,输出一个结果和进位。结果和进位。VHDLVHDL的主要构件的主要构件: :结构体结构体ExampleExample:半加器:半加器半加器电路是指对两个输入数据位进行加法,输出一个半加器电路是指对两
28、个输入数据位进行加法,输出一个结果和进位。结果和进位。LibraryLibrary IEEE; IEEE;Use ieee.std_logic_1164.all;Use ieee.std_logic_1164.all;EntityEntity half_adderhalf_adder is is port (X,Y: in bit; sum, carry: out bit); port (X,Y: in bit; sum, carry: out bit);end end half_adderhalf_adder; ;ArchitectureArchitecture dataflow of da
29、taflow of half_adderhalf_adder is isbegin begin - -并行处理语句并行处理语句 sum = X sum = X xorxor Y after 10ns; Y after 10ns; carry =X and Y after 10ns; carry =X and Y after 10ns;End dataflow;End dataflow;实实现现程程序序VHDLVHDL的主要构件的主要构件: :结构体结构体ExampleExample:半加器:半加器半加器电路是指对两个输入数据位进行加法,输出一个半加器电路是指对两个输入数据位进行加法,输出一个结
30、果和进位。结果和进位。注意:仿真结果某一时刻的输出并非我们期待中的结果,这是因注意:仿真结果某一时刻的输出并非我们期待中的结果,这是因为我们使用的是时序仿真,考虑了器件的延时,后面的章节将会为我们使用的是时序仿真,考虑了器件的延时,后面的章节将会介绍功能仿真和时序仿真介绍功能仿真和时序仿真仿仿真真结结果果VHDLVHDL的主要构件的主要构件: :结构体结构体行为描述:行为描述:描述输入与输出之间的转换行为,不包含内部的电路元件、描述输入与输出之间的转换行为,不包含内部的电路元件、电路的结构信息,一般将结构体命名为电路的结构信息,一般将结构体命名为“behav”“behav”数据流描述数据流描述
31、既表示行为,又隐含着结构;体现数据的流动路径和方向既表示行为,又隐含着结构;体现数据的流动路径和方向, ,一般将结构体命名为一般将结构体命名为“dataflow”“dataflow”结构描述法结构描述法描述电路元件与它们之间的连接关系,一般将结构体命名描述电路元件与它们之间的连接关系,一般将结构体命名为为“strustru数据类型数据类型结构体的描述方法结构体的描述方法VHDLVHDL的主要构件的主要构件: :结构体结构体结构体的描述方法结构体的描述方法全加器的行为描述全加器的行为描述architecture behav of FA isbegin process ( x, y, ci) va
32、riable n: integer; constant sum_vector : std_logic_vector (0 to 3):=“0101”; constant carry_vector : std_logic_vector(0 to 3):=“0011”; begin n:=0; if x= 1 then n:=n+1; end if; if y= 1 then n:=n+1; end if; if ci= 1 then n:=n+1; end if; s = sum_vector (n); co = carry_vector (n); end process; end behav;
33、library ieee;use ieee.std_logic_1164.all;entity FA is port (x, y, ci : in std_logic; s, co : out std_logic);end FA;VHDLVHDL的主要构件的主要构件: :结构体结构体结构体的描述方法结构体的描述方法全加器的全加器的RTL方式方式library ieee;use ieee.std_logic_1164.all;entity FA is port (x, y, ci : in std_logic; s, co : out std_logic);end FA;architecture
34、 dataflow of FA isbegin s = x XOR y XOR ci; co A, Y=B, sum=temp_sum, carry=temp_carry1); U1 : half_adder Port map (X=temp_sum, Y=carry_in, sum=AB, carry=temp_carry2);U2 : or_gate Port map (in1=temp_carry1, in2=temp_carry2, out1=carry_out);End structure;Library IEEE;Use std_logic_1164.all;Entity full
35、_adder is Port ( A,B, carry_in : in bit; AB, carry_out : out bit);End full_adder;层次化设计VHDLVHDL的主要构件的主要构件: :配置配置配置作用配置作用 设计实体仿真时,利用配置语句来选择不同的设计实体仿真时,利用配置语句来选择不同的结构体,使其与要设计的实体相对应,从而进结构体,使其与要设计的实体相对应,从而进行性能的对比试验以得到性能最佳的结构体行性能的对比试验以得到性能最佳的结构体使用格式:使用格式:CONFIGURATION CONFIGURATION 配置名配置名 OFOF 实体名实体名 ISIS
36、语句说明语句说明 ;END END 配置名配置名;配置语句配置语句描述层与层之间的连接关系和实体与结构体之描述层与层之间的连接关系和实体与结构体之间的连接关系间的连接关系VHDLVHDL的主要构件的主要构件: :配置配置LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_1164.ALL;ENTITY example IS ENTITY example IS PORT (a : IN PORT (a : IN std_logicstd_logic; ;b : IN b : IN std_logicst
37、d_logic; ;y : OUT y : OUT std_logicstd_logic););END example;END example;ARCHITECTURE and2_arc OF example ISARCHITECTURE and2_arc OF example ISBEGINBEGINPROCESS (PROCESS (a,ba,b) )BEGINBEGINy = a AND b;y = a AND b;END PROCESS;END PROCESS;END and2_arc; END and2_arc; ARCHITECTURE or2_arc OF example ISA
38、RCHITECTURE or2_arc OF example ISBEGINBEGINPROCESS (PROCESS (a,ba,b) )BEGINBEGINy = a OR b;y = a OR b;END PROCESS;END PROCESS;END or2_arc;END or2_arc;ARCHITECTURE xor2_arc OF example ISARCHITECTURE xor2_arc OF example ISBEGINBEGINPROCESS (PROCESS (a,ba,b) )BEGINBEGINy = a XOR b;y = a XOR b;END PROCE
39、SS;END PROCESS;END xor2_arc; END xor2_arc; 配置语句:配置语句:设计时设计多个实体,以供配置选择设计时设计多个实体,以供配置选择VHDLVHDL的主要构件的主要构件: :配置配置CONFIGURATION and2_cfg OF CONFIGURATION and2_cfg OF example ISexample ISFOR and2_arcFOR and2_arcEND FOR;END FOR;END and2_cfg;END and2_cfg;CONFIGURATION or2_cfg OF CONFIGURATION or2_cfg OF ex
40、ample ISexample ISFOR or2_arcFOR or2_arcEND FOR;END FOR;END or2_cfg;END or2_cfg;CONFIGURATION xor2_cfg OF CONFIGURATION xor2_cfg OF example ISexample ISFOR xor2_arcFOR xor2_arcEND FOR;END FOR;END xor2_cfg; END xor2_cfg; 将将example配置成与门配置成与门将将example配置成或门配置成或门将将example配配置成异或门置成异或门VHDLVHDL数据类型及运算符数据类型及
41、运算符VHDLVHDL数据类型及运算符数据类型及运算符VHDLVHDL中定义的中定义的1010种标准数据类型种标准数据类型数据类型数据类型含义含义整数整数整数占整数占4B,范围为,范围为-2,147,483,6472,147,483,647实数实数浮点数,范围位浮点数,范围位-1.0E+381.0E+38自然数,正整数自然数,正整数 整数的子集(自然数:大于等于整数的子集(自然数:大于等于0的整数,正整数:大于的整数,正整数:大于0的整数)的整数)位位逻辑逻辑“0”或或“1”位串位串多个位串在一起(也称位矢量)多个位串在一起(也称位矢量)字符字符ASCII码字符码字符字符串字符串字符数组(也称
42、字符矢量)字符数组(也称字符矢量)布尔量布尔量逻辑逻辑“真真”或逻辑或逻辑“假假”时间时间时间单位,如时间单位,如fs、ps、ns、s、ms、sec、min、hr等等错误等级错误等级NOTE,WARNING,ERROR,FAILUREVHDLVHDL数据类型及运算符数据类型及运算符VHDLVHDL中定义的中定义的1010种标准数据类型种标准数据类型数据类型数据类型用途用途整数整数不能按位操作,不能进行逻辑运算常用于表示系统总线宽度不能按位操作,不能进行逻辑运算常用于表示系统总线宽度实数实数用于表现电源供电电压用于表现电源供电电压 或算法研究或算法研究自然数,正整数自然数,正整数一般在定义时需要
43、区间约束一般在定义时需要区间约束位位表示一个信号的值,用单引号括起来表示一个信号的值,用单引号括起来位串位串可以看作位的数组,用双引号括起来可以看作位的数组,用双引号括起来字符字符与语句不区分大小写不同,字符区分大小写与语句不区分大小写不同,字符区分大小写字符串字符串常用于程序仿真的提示或结果的说明等场合常用于程序仿真的提示或结果的说明等场合布尔量布尔量常用于信号的状态,总显得控制权仲裁情况常用于信号的状态,总显得控制权仲裁情况时间时间用于定义信号延时等,一般用于仿真用于定义信号延时等,一般用于仿真错误等级错误等级在仿真中,提示程序的状态在仿真中,提示程序的状态VHDLVHDL数据类型及运算符
44、数据类型及运算符VHDLVHDL中定义的中定义的1010种标准数据类型种标准数据类型约束区间说明约束区间说明: : INTEGER RANGE 100 DOWNTO 1INTEGER RANGE 100 DOWNTO 1 BIT_VECTOR (3 DOWNTO 0) BIT_VECTOR (3 DOWNTO 0) REAL RANGE 2.0 TO 30.0 REAL RANGE 2.0 TO 30.0注意:注意:字符要区分大小写,比如高阻状态是字符要区分大小写,比如高阻状态是ZZ,而不是而不是zz。VHDLVHDL数据类型及运算符数据类型及运算符用户自定义数据类型:用户自定义数据类型:根据
45、电路设计需求,用户自定义合适的数据类型根据电路设计需求,用户自定义合适的数据类型使用格式使用格式TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义常用的用户自定义类型:常用的用户自定义类型:枚举类型、子类型、整数类型和实数类型、数据类型枚举类型、子类型、整数类型和实数类型、数据类型和记录类型和记录类型VHDLVHDL数据类型及运算符数据类型及运算符(1 1)枚举类型:把类型中的各个元素都罗列出来,)枚举类型:把类型中的各个元素都罗列出来,如在状态机中的状态一般就采用枚举类型定义如在状
46、态机中的状态一般就采用枚举类型定义Example:TYPE week IS (sum, mon, tue, wed, thu, tri, sat);(3 3)整数类型和实数类型:由于范围太大,综合器无法)整数类型和实数类型:由于范围太大,综合器无法综合,所以给它们定义一个范围综合,所以给它们定义一个范围Example:SUBTYPE natural IS integer range 0 to integerhigh(2 2)子类型)子类型SUBTYPESUBTYPE:由:由TYPETYPE所定义的原数据类型的子所定义的原数据类型的子集集Example:TYPE percent IS INTEG
47、ER RANGE -100 TO 100 VHDLVHDL数据类型及运算符数据类型及运算符(4 4)数组类型:将相同数据类型的数据集合在一起)数组类型:将相同数据类型的数据集合在一起形成一个新的数据类型。形成一个新的数据类型。(5 5)记录类型:将不同数据类型的数据和数据名组合在)记录类型:将不同数据类型的数据和数据名组合在一起而形成新客体一起而形成新客体Example:TYPE 数组名数组名 IS ARRAY(数组范围数组范围) OF 数组类型数组类型; TYPE 记录类型名记录类型名 IS RECORD元素名:元素数据类型;元素名:元素数据类型;元素名:元素名:元素数据类型;元素数据类型;
48、END RECORD;ExampleVHDLVHDL数据类型及运算符数据类型及运算符数据类型转换:数据类型转换:VHDL中的数据类型可以通过中的数据类型可以通过IEEE库中的类型转换函数进行库中的类型转换函数进行强制性转换。强制性转换。程序包程序包函数名函数名功能功能STD_LOGIC_1164TO_STDLOGICVECTOR(A)由 B I T _ V E C T O R 转 换 为STD_LOGIC_VECTORTO_BITVECTOR(A)由STD_LOGIC_VECTOR转换为BIT_VECTORTO_STDLOGIC(A)由 S T D _ L O G I C 转 换STD_LOG
49、ICTO_BIT(A)由STD_LOGIC转换BITSTD_LOGIC_ARITHCONV_STD_LOGIC_VECTOR(A,n) (n为位长)由INTEGER,UNSIGNED,SIGNED转换STD_LOGIC_VECTORCONV_INTEGER(A)由UNSIGNED,SIGNED转换为INTEGERSTD_LOGIC_UNSIGNEDCONV_INTEGER(A)由STD_LOGIC_VECTOR转换为INTEGERVHDLVHDL数据类型及运算符数据类型及运算符VHDL中的运算符主要分为算术运算符、逻辑运算符、关系运算符和其他运算符等四类。运算符:运算符:与其他计算机高级语言一
50、样要注意各运算符的优先级VHDLVHDL数据类型及运算符数据类型及运算符运算符:运算符:VHDL中的运算符主要分为算术运算符、逻辑运算符、关系运算符和其他运算符等四类。与其他计算机高级语言一样要注意各运算符的优先级VHDLVHDL的数据对象的数据对象VHDLVHDL的数据对象的数据对象数据对象:数据对象:在在VHDL语言中,可以赋值的客体称为对象。语言中,可以赋值的客体称为对象。包包括常量、变量和信号。括常量、变量和信号。 VHDLVHDL的数据对象的数据对象常量:常量:指定义在设计描述中不变化的值,是一个全局量。使用格式用途:用途:在实体、结构体、程序包、函数、过程、进程中保持静态数据,以改
51、善程序的可读性,使修改程序变得更容易。ExampleCONSTANT CONSTANT VCCVCC: :realreal:=5.0:=5.0 -指定电源电压指定电源电压CONSTANTCONSTANT delaydelay: :timetime:=:=10ns 10ns -某信号的延迟某信号的延迟CONSTANTCONSTANT fbusfbus: :bit_vectorbit_vector:=:=“01010101” - -总线上的数据向量总线上的数据向量CONSTANT CONSTANT 常数名常数名: :数据类型数据类型:=:=表达式表达式VHDLVHDL的数据对象的数据对象变量:变量
52、:变量是定义进程或子程序(包括函数和过程)中的变化量。VARIABLEVARIABLE 变量变量名名: :数据类型数据类型:=:=初始值初始值使用格式用途:用途:用于计算或暂存中间数据,是一个局部量用于计算或暂存中间数据,是一个局部量VARIABLE VARIABLE timetime:: :integer integer RANGE 0 TO RANGE 0 TO 6 -6 -进程中代表次数的变量进程中代表次数的变量Example注意:变量的赋值是立即生效的。VHDLVHDL的数据对象的数据对象信号:信号:信号对应着硬件内部实实在在的连线使用格式用途:用途:在元件间起着互联作用,或作为一种数
53、据容器,以保留历史值和当前值SIGNAL SIGNAL 信号名信号名: :数据类型数据类型:=:=表达式表达式“:=:=”表示对信号的赋初值,一般表示对信号的赋初值,一般不产生延时不产生延时。“=”表示信号的代入赋值,表示信号的代入赋值,有延时有延时。注意:VHDLVHDL的数据对象的数据对象使用变量和信号的比较 信号是实体间动态交换数据的手段,用信号对象把实体连接在一起形成模块;实体说明,结构体说明都能说明信号。 变量用于进程语句和子程序中中间的数据存储。 信号赋值有延迟;而变量赋值没有延迟。 信号除当前值外有许多信息(历史信息,波形值);而变量只有当前值。 进程对信号敏感,对变量不敏感。信
54、号可以是多个进程的全局信号;而变量只在定义它的进程中可见。 信号是硬件中连线的抽象描述,功能是保存变化的数据值和连接子元件,信号在原件的端口连接元件;变量在硬件中没有对应关系,而是用于硬件特性的高层次建模所需要的计算中。 在描述中,信号的赋值不会立即生效,而是要等待一个delta延迟后才会变化,否则该信号的值在delta延迟之前仍是原来的值。VHDLVHDL的数据对象的数据对象使用变量和信号的比较六分频器library ieee;use ieee.std_logic_1164.all;entity frequencies isport(clk:in std_logic;q:out std_lo
55、gic);end frequencies;architecture behav of frequencies isbegin process (clk) variable time:integer range 0 to 6;begin if rising_edge(clk) then time:=time+1; if time=6 thenq=1;time:=0; elseq=0; end if; end if;end process;end behav;此例为6分频器,其中time为变量。由于变量赋值是马上生效的,因此从例子中可以看出time置零是在time为6时发生的。VHDLVHDL的数
56、据对象的数据对象使用变量和信号的比较六分频器此例也为此例也为6分频器。其中分频器。其中time为信号。由于信号赋为信号。由于信号赋值是具有一定的延时性,值是具有一定的延时性,因此从例子中比较因此从例子中比较time和和5的大小时,语句的大小时,语句time=time+1还未生效,还未生效,time的值是上次进程结束的值是上次进程结束时的结果。时的结果。library ieee;use ieee.std_logic_1164.all;entity frequencies isport(clk:in std_logic;q:out std_logic);end frequencies;archit
57、ecture behav of frequencies is signal time:integer range 0 to 5;begin process (clk)begin if rising_edge(clk) then time=time+1; if time=5 thenq=1;time=0; elseq=0; end if; end if;end process;end behav;VHDLVHDL的数据对象的数据对象使用变量和信号的比较六分频器的仿真time 为变量:time为信号可以看出两种方法是等价的。VHDLVHDL的数据对象的数据对象小结小结变量常定义在进程与子程序中,用
58、于保存运算的中间临时数 据,或作为循环语句中的循环变量,其赋值立即发生。(:=)常量用于保存静态的数据(:=)。信号有明显的连线或容器的对应关系,具有输出波形,对其 赋值需要延迟时间(=), 在进程间或子程序间具有信息传递功 能。注意对象定义的所在位置及适用区域的对应关系VHDL基本语句VHDLVHDL基本语句基本语句VHDL语言与高级程序语言最大的不同就是VHDL语言是并发执行的,但是VHDL的基本语句包括顺序语句和并行语句。顺序语句不能直接用在结构体中,需要用process进行“封装”VHDL中,不区分大小写,使用“-”表示注释VHDLVHDL基本语句基本语句- -并行语句并行语句并行语句
59、:并行执行,其执行方式与书写顺序无关并行语句常包括以下七种:赋值语句、条件赋值语句、选择信号赋值语句、进程语句、元件例化语句、生成语句、子程序调用语句串行执行结果:a=2,b=3并行执行结果:a=2,b=2a=b+1;b=a+1;假设信号原始值为a=1;b=1;对于以下两种书写格式,执行结果如下:b=a+1;a=b+1;串行执行结果:a=3,b=2并行执行结果:a=2,b=2VHDLVHDL基本语句基本语句- -并行语句并行语句赋值语句:将一个值或一个表达式的运算结果传递给某一数据对象使用格式:赋值目标赋值目标 赋值符号赋值符号 赋值源赋值源Example: q=Example: q=“001
60、00000010000”;注意:信号赋值符号为“=”;变量和常量的赋值符号为“:=”VHDLVHDL基本语句基本语句- -并行语句并行语句条件赋值语句:根据执行条件,将一个值或表达式的的运算结果赋给赋值目标使用格式:注意:每一个子句结尾没有任何标点,只有最后一句有分号赋值目标赋值目标= = 表达式表达式 WHENWHEN 赋值条件赋值条件 ELSEELSE 表达式表达式 WHENWHEN 赋值条件赋值条件 ELSEELSE 表达式;表达式;Example: Example: z=a z=a WHENWHEN p1=p1=1 1 ELSEELSE b b WHENWHEN p2=p2=1 1 ELSEELSE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温州自我职业规划方案
- 出差培训安全管理方案
- 2026福建省惠安文笔中学道德与法治学科自聘教师招聘1人考试参考试题及答案解析
- 开学第一课:启航新学期成长向未来
- 2025年宁夏回族自治区公需课学习-绿色金融体系建设指导意见解读688
- 2026云南昭通昭阳区社会福利院招聘编外工作人员8人笔试模拟试题及答案解析
- 2026四川巴中市恩阳区应急管理局、巴中市恩阳区消防救援局面向社会招录综合应急救援队员9人笔试模拟试题及答案解析
- 2026云南曲靖市宣威市宛水街道中心学校招聘编制外学前教育教辅人员6人笔试参考题库及答案解析
- 2026福建晋江市晋北建设开发有限公司招聘1人考试参考题库及答案解析
- 2026云南曲靖市宣威市第二幼儿园招聘编制外学龄前教学辅助人员1人考试参考题库及答案解析
- 2025年江苏经贸职测题库及答案
- 自来水厂设备介绍
- 银行金融知识讲座课件
- 新河北省安全生产条例培训课件
- 《城市轨道交通供电系统继电保护与二次回路》课件 单元四 微机保护与自动装置
- 译林版(2024)八年级上册英语全册单词默写打印版(含答案)
- 建筑工人安全培训考试试题与答案
- 消防管道供货合同范本
- 食品区域保护合同范本
- 基于Unity3D的虚拟苏州园林漫游系统设计与实现
- 模版倾覆应急预案
评论
0/150
提交评论