版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4 4章章 VHDLVHDL语言基础语言基础o 常见的常见的HDLHDL有有ABELABEL、AHDLAHDL、VHDLVHDL、VerilogVerilog HDLHDL和和System CSystem C等。等。o HDL IEEEHDL IEEE工业标准硬件描述语言工业标准硬件描述语言VHDLVHDL、VerilogVerilogo 超高速集成电路硬件描述语言超高速集成电路硬件描述语言VHDL,VHDL,美国国美国国防部研究计划防部研究计划 硬件描述语言硬件描述语言HDL第第4 4章章 VHDLVHDL语言基础语言基础o 覆盖面广,描述能力强,多层次硬件描述语言覆盖面广,描述能力强,
2、多层次硬件描述语言 o VHDLVHDL有良好的可读性,既是程序又是文件有良好的可读性,既是程序又是文件 o VHDLVHDL的移植性很强的移植性很强 o VHDLVHDL生命周期长生命周期长, ,硬件描述与器件工艺无关硬件描述与器件工艺无关 o 代码量大,书写烦琐代码量大,书写烦琐 VHDL第第4 4章章 VHDLVHDL语言基础语言基础o 基本组成基本组成o 语言要素语言要素本章内容:本章内容:4.1 4.1 基本结构基本结构o 参数部分参数部分o 实体部分实体部分o 结构体结构体结构体结构体(ARCHITECTURE)进程进程或其它并行结构或其它并行结构实体(实体(ENTITY)配置(配
3、置(CONFIGURATION)库、程序包库、程序包VHDL程程序序实实体体例:例:2选选1多路选择器的多路选择器的VHDL描述描述4.1 4.1 基本结构基本结构sy0a1bsbas y2选选1多路选择器的多路选择器的VHDL描述描述4.1 4.1 基本结构基本结构2选选1多路选择器的多路选择器的VHDL描述方法一描述方法一:(数据流描述法)(数据流描述法) ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGN
4、AL d,e : BIT; BEGIN d = a AND (NOT S) ; e = b AND s ; y = d OR e ;END ARCHITECTURE one ;4.1 4.1 基本结构基本结构实体实体结构体结构体2选选1多路选择器的多路选择器的VHDL描述方法二描述方法二 :(行为描述法):(行为描述法)ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0
5、 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE one ;4.1 4.1 基本结构基本结构【例例4-1 】LIBRARY ieee; -库程序包调用库程序包调用USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; 4.1 4.1 基本结构基本结构ENTITY cntm16 IS -实体实体cntm16 GENERIC(cntwidth:integer:=4); PORT ( ci :IN std_logic; nreset :IN std_log
6、ic; clk :IN std_logic; co :OUT std_logic; qcnt :BUFFER std_logic_vector(cntwidth-1 DOWNTO 0) );END cntm16;4.1 4.1 基本结构基本结构ARCHITECTURE behave OF cntm16 IS - - 结构体结构体 BEGIN co=1WHEN (qcnt=”1111” AND ci=1) ELSE 0; PROCESS (clk,nreset) BEGIN IF (nreset=0) THEN qcnt=”0000” ELSIF(clkevent AND clk=1) THEN
7、 IF(ci=1) THEN qcnt=qcnt+1; END IF; END IF; END PROCESS; END behave;4.1 4.1 基本结构基本结构模块结构模块结构 参数部分参数部分:库(:库(LIBRARYLIBRARY)、程序包()、程序包(USEUSE);); 实体实体(ENTITYENTITY):): 类属类属 、端口(、端口(PORTPORT);); 结构体结构体(ARCHITECTUREARCHITECTURE):赋值、进程):赋值、进程 (PROCESS-IFPROCESS-IF)。)。 4.1 4.1 基本结构基本结构4.1 4.1 基本结构基本结构调用程序
8、包语句调用程序包语句实体及实体实体及实体声明语句声明语句结构体结构体 1 1结构体结构体 2 2结构体结构体 n n标准程序包标准程序包标准程序包标准程序包定义程序包定义程序包定义程序包定义程序包进程进程 1 1进程进程 2 2进程进程 n n VHDLVHDL程序设计约定程序设计约定 p 语句结构描述中方括号语句结构描述中方括号“ ”内的内容为可选内容。内的内容为可选内容。p 程序文字的大小写是不加区分的。程序文字的大小写是不加区分的。p 程序中的注释使用双横线程序中的注释使用双横线“-”。p 建议书写使用层次缩进格式。建议书写使用层次缩进格式。o 建议各个源程序文件的命名均与其实体名一致。
9、建议各个源程序文件的命名均与其实体名一致。4.1 4.1 基本结构基本结构库说明库说明 存放已经编译的实体、结构体、程序包和配置,用于存放已经编译的实体、结构体、程序包和配置,用于设计共享,是编程资源。设计共享,是编程资源。 library library ;4.1.1 4.1.1 参数部分参数部分程序包引用程序包引用使用使用USEUSE子句指明要使用库中某一个设计单元。子句指明要使用库中某一个设计单元。 use use . . .all.all;【例【例4-24-2】 LIBRARY ieeeLIBRARY ieee; ; USE ieee.std_logic_1164.ALL; USE i
10、eee.std_logic_1164.ALL;库的名称库的名称包含的程序包包含的程序包特点特点IEEE库库 STD_LOGIC_1164 该程序包是该程序包是IEEE标准的最常用的程序包。标准的最常用的程序包。 STD_LOGIC_ARITH 该程包扩展了该程包扩展了UNSIGNED、SIGNED、SMALL-INT三种数据类型,以及相关类型的算术运算符,三种数据类型,以及相关类型的算术运算符,比较操作函数,还有数据类型转换函数。比较操作函数,还有数据类型转换函数。STD_LOGIC_UNSIGNEDSTD_LOGIC_SIGNED 此 两 种 程 序 包 重 载 了 用 于此 两 种 程 序
11、 包 重 载 了 用 于 I N T E G E R 、STD_LOGIC和和STD_LOGIC_VECTOR三种数据类型三种数据类型进 行 混 合 运 算 的 运 算 符 , 还 定 义 了进 行 混 合 运 算 的 运 算 符 , 还 定 义 了STD_LOGIC_VECTOR类型到整数型的转换函数;类型到整数型的转换函数;此两程序包的区别是,前者定义的运算符不考此两程序包的区别是,前者定义的运算符不考虑符号而后者是有符号运算。虑符号而后者是有符号运算。STD库库 STANDARD(标准程序包标准程序包)TEXTIO(文件输入输出程文件输入输出程序包序包) 符合符合VHDL语言标准的库,定
12、义了一些基本的语言标准的库,定义了一些基本的数据类型、子类型和函数,在数据类型、子类型和函数,在VHDL环境中可随环境中可随时调用其中的内容。时调用其中的内容。TEXTIO程序包仅供仿真用,使用时需加程序包仅供仿真用,使用时需加USE STD_TEXT IO.ALL语句语句在在VHDL的编译和综合过程中,每项设计都会的编译和综合过程中,每项设计都会自动将自动将STD库包含进去。库包含进去。ASIC库库 面向面向ASIC码的资源库,由码的资源库,由VHDL工具厂商工具厂商提供,是一种面向门级仿真的逻辑门库提供,是一种面向门级仿真的逻辑门库 每个逻辑门对应一个设计实体;每个逻辑门对应一个设计实体;
13、使用时有必要进行说明。使用时有必要进行说明。WORK库库 用户自编用户自编VHDL程序的工作程序的工作库库存放用户设计和定义的设计单元和程序包;存放用户设计和定义的设计单元和程序包;使用时不必作说明使用时不必作说明 VHDL中常用库的特点 实体实体(ENTITY)(ENTITY) 实体是一个设计实体的表层设计单元,其功能是实体是一个设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行对这个设计实体与外部电路进行接口描述接口描述。它规定了。它规定了设计单元的输入设计单元的输入/ /输出接口信号或引脚,是设计实体输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。类似于原理图中的一经
14、封装后对外的一个通信界面。类似于原理图中的一个个部件符号部件符号。4.1.2 4.1.2 实体部分实体部分 实体格式实体格式ENTITY 实体名实体名 ISGENERIC(常数名:数据类型(常数名:数据类型:设定值:设定值); -类属表类属表 PORT -端口表端口表 (端口名:方向(端口模式)(端口名:方向(端口模式) 端口类型端口类型; : ; 端口名:方向(端口模式)端口名:方向(端口模式) 端口类型端口类型 );END 实体名;实体名;ENTITY 实体名实体名 IS 4.1.2 4.1.2 实体部分实体部分 GENERIC类属参数类属参数 o 定义端口定义端口界面常数界面常数(端口宽
15、度、器件延迟时间端口宽度、器件延迟时间)。类)。类属参量的值可由设计实体的外部提供。属参量的值可由设计实体的外部提供。o 书写格式书写格式:GENERIC(GENERIC(常数名:数据类型常数名:数据类型 :设定值:设定值 ;常数名:数据类型;常数名:数据类型:=:=设定值设定值 );o 例例4-14-1 GENERIC (cntwidth : integer:=4); 4.1.2 4.1.2 实体部分实体部分 PORT端口端口 o 用于定义模块所有的输入用于定义模块所有的输入/ /输出信号,相当于定义一个输出信号,相当于定义一个模块符号模块符号o 需要定义需要定义端口信号名、端口模式、端口数
16、据类型端口信号名、端口模式、端口数据类型o 例例4-14-1 4.1.2 4.1.2 实体部分实体部分CI CONRESET QCNT3.0CLKCNTM16端端 口口 模模 式式端口模式说明端口模式说明(以设计实体为主体以设计实体为主体)IN输入,只读模式,将变量或信号信息通过该端口读入输入,只读模式,将变量或信号信息通过该端口读入OUT输出,单向赋值模式,将信号通过该端口输出输出,单向赋值模式,将信号通过该端口输出BUFFER具有读功能的输出模式,可以读或写,只能有一个驱动具有读功能的输出模式,可以读或写,只能有一个驱动源源INOUT双向,可以通过该端口读入或写出信息双向,可以通过该端口读
17、入或写出信息pPORT端口模式端口模式 Output port Buffer port Inout port In port BufferBuffer:表示缓冲模式的表示缓冲模式的portport信号信号In:表示该管脚要从外界接收信号表示该管脚要从外界接收信号Out:该管脚将要传送信号到外界该管脚将要传送信号到外界InoutInout:可以收送双向模式的可以收送双向模式的portport信号信号端口模式端口模式p端口数据类型端口数据类型lVHDLVHDL数据类型:预定义数据类型、自定义数据类型数据类型:预定义数据类型、自定义数据类型l只能使用已经定义的数据类型只能使用已经定义的数据类型l例例
18、4-14-1中数据类型中数据类型Std_logicStd_logic和和Std_logic_vectorStd_logic_vector,在,在ieee.std_logic_1164.allieee.std_logic_1164.all程序包中说明,使用时首先程序包中说明,使用时首先打开。打开。p实体实例实体实例l【例【例4-3】4位全加器的实体描述。位全加器的实体描述。Library ieee;Use ieee.std_logic_1164.all;Entity add4 isPort (a,b: in std_logic_vector (3 downto 0); Ci: in std_lo
19、gic; Sum: out std_logic_vector (3 downto 0); Co: out std_logic);End add4; 结构体结构体( (ARCHITECTURE) ) 结构体主要用来描述实体的内部结构体主要用来描述实体的内部结构结构,即,即描述一个实体的描述一个实体的功能功能。 描述方式描述方式 行为描述方式、数据流描述方式、结构描行为描述方式、数据流描述方式、结构描述方式、混合描述方式述方式、混合描述方式4.1.3 4.1.3 结构体部分结构体部分 结构体格式结构体格式ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 结构体说明部分结构体说明
20、部分; BEGIN 结构体描述部分结构体描述部分; END 结构体名结构体名;4.1.3 4.1.3 结构体部分结构体部分 结构体组成结构体组成4.1.3 4.1.3 结构体部分结构体部分进程语句块语句体结构明说体构结述能描功体构结元件例化语句子程序调用语句信号赋值语句常数说明数据类型说明信号说明例化元件说明子程序说明p行为描述行为描述 也称为算法级描述,它不是对某一个器件的描述,而是对整个设计单也称为算法级描述,它不是对某一个器件的描述,而是对整个设计单元的数学模型描述,所以属于一种高层次描述方式。描述该设计单元的功元的数学模型描述,所以属于一种高层次描述方式。描述该设计单元的功能,主要使用
21、函数、过程和进程语句,以能,主要使用函数、过程和进程语句,以算法算法形式描述数据的变换和传送形式描述数据的变换和传送 。 结构体描述风格结构体描述风格l 例例4-44-4Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_arith.all;Entity eqcomp4 is Port (a,b: in std_logic_vector (3 downto 0); equals: out std_logic);End eqcomp4;Architecture be
22、havioral of eqcomp4 is Begin Comp:process (a,b) Begin If a=b then Equals=1; Else Equals=0; End if; End process comp;End behavioral;p 行为描述行为描述 行为级描述只描述设计电路的功能或电路的行为,行为级描述只描述设计电路的功能或电路的行为,而没有指明或实现这些行为的硬件结构;或者说行为而没有指明或实现这些行为的硬件结构;或者说行为级描述只表示输入输出之间的转换行为,它不包含任级描述只表示输入输出之间的转换行为,它不包含任何结构信息。何结构信息。 行为级描述通常指顺
23、序语句描述,即含有进程的非行为级描述通常指顺序语句描述,即含有进程的非结构化的逻辑描述。结构化的逻辑描述。 行为级描述的设计模型定义了系统的行为,通常由行为级描述的设计模型定义了系统的行为,通常由一个或多个进程构成,每一个进程又包含了一系列的一个或多个进程构成,每一个进程又包含了一系列的顺序语句。顺序语句。p 结构描述结构描述 描述该设计单元的硬件结构,调用库中的元件或设描述该设计单元的硬件结构,调用库中的元件或设计模块,主要使用计模块,主要使用元件说明语句及元件例化语句元件说明语句及元件例化语句 结构体描述风格结构体描述风格l 例例4-54-5U0 xnor2x(0)a(0)b(0)U1xn
24、or2x(1)a(1)b(1)U2xnor2x(2)a(2)b(2)U3xnor2x(3)a(3)b(3)U4and4equalsabcdyArchitecture structArchitecture struct of eqcomp4 is of eqcomp4 is Component xnor2 - Component xnor2 -元件说明元件说明 Port (a,b:in std_logicPort (a,b:in std_logic; ; X: out std_logic X: out std_logic);); End component; End component; Com
25、ponent and4 - Component and4 - Port (a,b,c,d:in std_logic Port (a,b,c,d:in std_logic; ; y: out std_logic y: out std_logic);); End component; End component; Signal x:std_logic_vector(0 to 3); Signal x:std_logic_vector(0 to 3);p 结构描述结构描述BeginBegin U0: xnor2 port map (a(0),b(0),x(0); - U0: xnor2 port m
26、ap (a(0),b(0),x(0); -元件例化元件例化 U1: xnor2 port map (a(1),b(1),x(1);U1: xnor2 port map (a(1),b(1),x(1); U2: xnor2 port map (a(2),b(2),x(2); U2: xnor2 port map (a(2),b(2),x(2); U3: xnor2 port map (a(3),b(3),x(3); U3: xnor2 port map (a(3),b(3),x(3); U4: and4 port map (x(0),x(1),x(2),x(3),equals); U4: and
27、4 port map (x(0),x(1),x(2),x(3),equals);End structEnd struct; ;p 结构描述结构描述 结构级描述方式u 结构描述方式是描述该设计单元的硬件结构,即该硬件是如何构成的。 u 在多层次的设计中,常采用结构描述方式在高层次的设计模块中调用低层次的设计模块,或者直接用门电路设计单元构造一个复杂的逻辑电路。u 编写结构描述程序可模仿逻辑图的绘制方法。u 结构描述方式通常采用元件例化语句和生成语句编写程序。编写结构描述程序的主要步骤:编写结构描述程序的主要步骤:1 1) 绘制框图。先确定当前设计单元中需要用到的子模块的绘制框图。先确定当前设计单
28、元中需要用到的子模块的种类和个数。对每个子模块用一个种类和个数。对每个子模块用一个图符图符(称为(称为实例元件实例元件)来代表,只标出其编号、功能和接口特征来代表,只标出其编号、功能和接口特征( (端口及信号流端口及信号流向向) ),而不关心其内部细节。,而不关心其内部细节。2 2) 元件说明。元件说明。每种子模块分别用一个元件声明语句来说明每种子模块分别用一个元件声明语句来说明。3 3)信号说明。为各实例元件之间的)信号说明。为各实例元件之间的每条连接线每条连接线都起一个单独都起一个单独的名字,称为的名字,称为信号名信号名。利用。利用SIGNALSIGNAL语句对这些信号分别予语句对这些信号
29、分别予以说明。以说明。4 4) 元件例化。根据实例元件的端口与模板元件的端口之间元件例化。根据实例元件的端口与模板元件的端口之间的映射原理,的映射原理,对每个实例元件均可写出一个元件例化语句对每个实例元件均可写出一个元件例化语句。5 5) 添加必要的框架,完成整个设计文件。添加必要的框架,完成整个设计文件。 对于一个复杂的电子系统,可以将其分解为若干对于一个复杂的电子系统,可以将其分解为若干个子系统,每个子系统再分解成模块,形成多层次设个子系统,每个子系统再分解成模块,形成多层次设计。这样,可以使更多的设计者同时进行合作。在多计。这样,可以使更多的设计者同时进行合作。在多层次设计中,每个层次都
30、可以作为一个元件,再构成层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再一个模块或系统,可以先分别仿真每个元件,然后再整体调试。所以说结构化描述不仅是一种设计方法,整体调试。所以说结构化描述不仅是一种设计方法,而且是一种设计思想,是大型电子系统高层次设计的而且是一种设计思想,是大型电子系统高层次设计的重要手段。重要手段。 p 数据流描述数据流描述 从信号到信号的数据流的路径形式进行描述。使用并行从信号到信号的数据流的路径形式进行描述。使用并行的信号赋值语句,既显式表示了该设计单元的行为,也隐式的信号赋值语句,既显式表示了该设计单元的行为,也隐式表示了
31、该设计单元的结构。又称寄存器传输描述(表示了该设计单元的结构。又称寄存器传输描述(RTL)RTL)。 结构体描述风格结构体描述风格l 例例4-64-6Architecture dataflow of eqcomp4 isArchitecture dataflow of eqcomp4 isBeginBegin Equals=1 when (a=b) else 0; Equals=1 when (a=b) else 0; 并行信号赋并行信号赋值语句值语句End dataflow;End dataflow;对于全加器,对于全加器,用布尔方程描述其逻用布尔方程描述其逻辑功能如下辑功能如下: s =
32、x XOR y sum = s XOR c_in c_out = (x AND y) OR( s AND c_in) 下面是基于上述布尔方程的数据流下面是基于上述布尔方程的数据流风格的描述风格的描述: 数据流描述方式能比较直数据流描述方式能比较直观地表述观地表述底层逻辑行为底层逻辑行为。 输入输入 输出输出c_in x y c_out sum 0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1 一位全加器的数据流描述。一位全加器的数据流描述。LIBRARY IEEE;USE IEEE.STD_LOGI
33、C_1164.ALL;ENTITY ADDER1B ISPORT(A,B,C_IN:IN BIT; SUM,C_OUT:OUT BIT);END ADDER1B ;ARCHITECTURE ART OF ADDER1B ISSUM= A XOR B XOR C_IN;C_OUT=(A AND B)OR (A AND C_IN) OR (B AND C_IN);END ART;底层逻辑行为底层逻辑行为数据流描述数据流描述u 数据流描述也叫数据流描述也叫RTLRTL的描述方式,采用寄存器硬件一一对应的描述方式,采用寄存器硬件一一对应的直接描述,或者采用寄存器之间的功能描述。的直接描述,或者采用寄存
34、器之间的功能描述。u RTLRTL描述方式建立在描述方式建立在并行信号赋值语句描述并行信号赋值语句描述的基础上,描述的基础上,描述数据流的数据流的。u RTLRTL描述方式描述方式是真正可以进行逻辑综合的描述方式。是真正可以进行逻辑综合的描述方式。u RTLRTL描述方式既可描述时序电路,又可描述组合电路描述方式既可描述时序电路,又可描述组合电路。 由于一个设计有行为描述、数据流(由于一个设计有行为描述、数据流(RTL)RTL)、结、结构描述三种方式,建议用构描述三种方式,建议用behave,dataflowbehave,dataflow( (或或rtlrtl)和和structurestruc
35、ture来为结构体命名。来为结构体命名。 结构体命名:结构体命名: 一个实体可有多种方案的结构体,但仿真和综合一个实体可有多种方案的结构体,但仿真和综合时要用时要用configurationconfiguration配置语句配置语句选择一个结构体映射选择一个结构体映射到硬件电路,即为实体选择、指定或者激活一个结构到硬件电路,即为实体选择、指定或者激活一个结构体。体。 结构体配置结构体配置4.1.3 4.1.3 结构体部分结构体部分把特定的结构体关联(指定给)一个确定的实体,为把特定的结构体关联(指定给)一个确定的实体,为大型系统的设计提供管理和工程组织。大型系统的设计提供管理和工程组织。配置配
36、置(CONFIGURATION) 两种情况:两种情况: 一种是为一个具有两个或两个以上结构体的设计实体一种是为一个具有两个或两个以上结构体的设计实体指定一个结构体。因为一个设计实体中,应该是一个实体指定一个结构体。因为一个设计实体中,应该是一个实体对应一个结构体,但有时为了比较各种算法编写的不同结对应一个结构体,但有时为了比较各种算法编写的不同结构体的性能,在一个实体后面带有几个结构体,这时可以构体的性能,在一个实体后面带有几个结构体,这时可以用配置语句指定一个结构体。用配置语句指定一个结构体。 另一种情况是为例化语句的各种元件实体配置结构体,另一种情况是为例化语句的各种元件实体配置结构体,例
37、如一个与非门的设计中,一个实体对应着两个以不同逻例如一个与非门的设计中,一个实体对应着两个以不同逻辑描述实现的结构体,通过配置语句指定其中的一个作为辑描述实现的结构体,通过配置语句指定其中的一个作为仿真应用的结构体。仿真应用的结构体。4.2 VHDL4.2 VHDL语言要素语言要素o 文字规则文字规则o 数据对象数据对象o 数据类型数据类型o 运算符运算符o 属性属性4.2.1 4.2.1 文字规则文字规则 标示符标示符 数值数值 字符串字符串 下标下标4.2.1 4.2.1 文字规则文字规则 标示符标示符1、标识符由字母、数字及下划线组成;、标识符由字母、数字及下划线组成;2、以字母开头;、
38、以字母开头;3、下划线不能放在结尾;、下划线不能放在结尾;4、下划线不能连用;、下划线不能连用;5、 不能使用保留字;不能使用保留字;6、 VHDL不区分大小写。不区分大小写。4.2.1 4.2.1 文字规则文字规则 数值表示数值表示(1)整数表示)整数表示整数表示十进制数值,如:整数表示十进制数值,如:11, 123, 135E2(=13500),), 12_345_678(=12345678)(2)实数表示)实数表示实数也表示十进制数值,必须带有小数点,如:实数也表示十进制数值,必须带有小数点,如:1.25 2.0 1.56E-3(0.00156) 1_120.123_678(11120.
39、123678) 数值表示数值表示(3)数制基数表示)数制基数表示有有5部分组成:部分组成:十进制数表示数值的基数;隔离符号十进制数表示数值的基数;隔离符号“#”;该基;该基数下对应的数值;隔离符号数下对应的数值;隔离符号“#”;十进制表示的指数部分。;十进制表示的指数部分。2#1110# -二进制表示数值二进制表示数值148#120# -八进制表示数值八进制表示数值8016#A0# -十六进制表示数值十六进制表示数值16010#12#E2 -十进制表示数值十进制表示数值120016#D#E1 -十六进制表示数值十六进制表示数值2084.2.1 4.2.1 文字规则文字规则 字符串字符串p 字符
40、、字符串字符、字符串:单引号引起来的:单引号引起来的ASCIIASCII字符(数值、符号或字符(数值、符号或字母);双引号中的一维的字符数组。字母);双引号中的一维的字符数组。如:如:RR,aa,* *,ZZ, - - ,00;“ERROR”ERROR”,“NOTE”NOTE” p两种类型字符串:文字字符串和数位字符串两种类型字符串:文字字符串和数位字符串(位矢量,是(位矢量,是BITBIT数据类型的一维数组数据类型的一维数组 )。)。B“1_0101_1010” -B“1_0101_1010” -二进制数数组,长度是二进制数数组,长度是9 9O“17” -O“17” -八进制数数组,长度为八
41、进制数数组,长度为6 6X“A2E0” -X“A2E0” -十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是16164.2.1 4.2.1 文字规则文字规则 下标名及下标段名下标名及下标段名1 1、用于指示数组型变量或信号的、用于指示数组型变量或信号的某一元素或某一段元素某一元素或某一段元素2 2、语句格式分别为:语句格式分别为: 名(表达式);名(表达式); 名(表达式名(表达式1 to/downto1 to/downto 表达式表达式2 2 ); ;3 3、signal a,b: bit_vector(7 downto 0);signal a,b: bit_vector(7 d
42、ownto 0);signal c,dsignal c,d: bit;: bit;a=“01000111”; -a=“01000111”; -给给a(7)a(7)到到a(0)a(0)赋值为赋值为“01000111”01000111”c= a(6) ; -c= a(6) ; -把把a(6)a(6)值值1 1 赋值给赋值给c c b(7 downto 4)=a(3 downtob(7 downto 4)=a(3 downto 0);-a 0);-a的低的低4 4位赋给位赋给b b的高的高4 4位位b(0 to 3)=a(4 to 7); -ab(0 to 3)=a(4 to 7); -a的高的高4
43、 4位赋给位赋给b b的低的低4 4位位d= a(0); -d= a(0); -把把a(0)a(0)值值1 1 赋值给赋值给d d 4.2.2 4.2.2 数据对象数据对象 数据对象数据对象类似于一种容器,接受不同数据类型的赋值类似于一种容器,接受不同数据类型的赋值 p 常量常量p 变量变量p 信号信号 对象种类:对象种类:信号信号signalsignal、变量、变量variablevariable、常量、常量constantconstant、文件、文件filefile。常量:常量:也并不对应电路中的物理量,但可以说明全局量。在也并不对应电路中的物理量,但可以说明全局量。在结构体、实体、程序包
44、、进程、函数、过程中均可使用。结构体、实体、程序包、进程、函数、过程中均可使用。 变量:变量:程序运算的中间量,并不对应电路中的物理量。变量程序运算的中间量,并不对应电路中的物理量。变量说明局部量,用于进程、函数、过程。说明局部量,用于进程、函数、过程。信号:信号:电路中的物理量,对应于电路的连线和节点(它们的电路中的物理量,对应于电路的连线和节点(它们的抽象),信号说明全局量,用于描述结构体、实体、程序包。抽象),信号说明全局量,用于描述结构体、实体、程序包。4.2.2 4.2.2 数据对象数据对象 对象特点:对象特点:1 1、信号和变量可以被连续地赋值;、信号和变量可以被连续地赋值;2 2
45、、常量只能被赋值一次;、常量只能被赋值一次;3 3、信号和变量的赋值形式和执行过程不同:、信号和变量的赋值形式和执行过程不同:变量是立即赋值(变量是立即赋值(:=:=),没有延迟,而信号),没有延迟,而信号赋值要有一定的延迟赋值要有一定的延迟(=)(1(others=1); ; 4.2.2 4.2.2 数据对象数据对象【例【例4-124-12】 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity bcdadder is port
46、 (op1,op2 : in integer range 1 to 9; result : out integer range 0 to 31);end bcdadder;4.2.2 4.2.2 数据对象数据对象architecture behave of bcdadder is constant ajustnum : integer:=6; signal binadd : integer range 0 to 18; begin binadd9 then tmp:=adjustnum; else tmp:=0; end if; result=binadd+tmp; end process;e
47、nd behave;4.2.2 4.2.2 数据对象数据对象4.2.3 4.2.3 数据类型数据类型p VHDLVHDL是一种是一种强类型语言强类型语言,要求设计实体中的每一个常,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有数据类型相同的量才能有确定的数据类型,并且只有数据类型相同的量才能互相传递和作用。互相传递和作用。o VHDLVHDL中的数据类型:中的数据类型:标量(整数、浮点、枚举、物标量(整数、浮点、枚举、物理)、复合(数组、记录)、文件、存取理)、复合(数组、记录)、文件、存取 。o
48、VHDLVHDL中的数据类型引用方式有:预定义、自定义中的数据类型引用方式有:预定义、自定义和类型转换等。和类型转换等。 标准数据类型(可直接引用)标准数据类型(可直接引用) 在在VHDLVHDL标准程序包标准程序包STANDARDSTANDARD中定义的,在实际使用中,中定义的,在实际使用中,已自动包含进已自动包含进VHDLVHDL的源文件中,因而不必通过的源文件中,因而不必通过USEUSE语语句以显式调用。句以显式调用。 4.2.3 4.2.3 数据类型数据类型标准数据类型标准数据类型(1 1)整数)整数(INTEGER)(INTEGER) 整数类型的数代表正整数、负整数和零。整数类型的数
49、代表正整数、负整数和零。p 整数在硬件电路中是用二进制表示的,但其不能被看整数在硬件电路中是用二进制表示的,但其不能被看作位矢量(枚举型),不能使用逻辑操作符。作位矢量(枚举型),不能使用逻辑操作符。p 整数常量的书写方式示例如下:整数常量的书写方式示例如下:2 -2 -十进制整数十进制整数10E4 -10E4 -十进制整数十进制整数16#D2# -16#D2# -十六进制整数十六进制整数2#11011010# -2#11011010# -二进制整数二进制整数标准数据类型标准数据类型(2 2)实数)实数 VHDLVHDL的实数类型类似于数学上的实数,或称浮点数,的实数类型类似于数学上的实数,或
50、称浮点数,取值范围为取值范围为-1.0E38-1.0E38+1.0E38+1.0E38。p 书写时一定要有小数。书写时一定要有小数。p 仅能在仅能在VHDLVHDL仿真器中使用,仿真器中使用,VHDLVHDL综合器不支持实数,综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难因为实数类型的实现相当复杂,目前在电路规模上难以承受。以承受。p 实数常量的书写方式举例如下:实数常量的书写方式举例如下:65971.333333 65971.333333 -十进制浮点数十进制浮点数8#43.6#E+4 -8#43.6#E+4 -八进制浮点数八进制浮点数43.6E-4 43.6E-4 -十进
51、制浮点数十进制浮点数(3 3) 位位(BIT)(BIT) 位数据类型也属于枚举型,取值位数据类型也属于枚举型,取值 11或或00。p 可以进行逻辑运算,运算结果仍是位数据类型。可以进行逻辑运算,运算结果仍是位数据类型。VHDLVHDL综合器用一个二进制位表示综合器用一个二进制位表示BITBIT。p 在程序包在程序包STANDARDSTANDARD中定义的源代码是:中定义的源代码是:TYPE BIT IS (0TYPE BIT IS (0,1)1);o 例:例:signal a,b,csignal a,b,c: bit; : bit; c= a and b;c= a and b; 标准数据类型标
52、准数据类型(4 4)位矢量)位矢量(BIT_VECTOR)(BIT_VECTOR) 位矢量是基于位矢量是基于BITBIT数据类型的数组。数据类型的数组。p 在程序包在程序包STANDARDSTANDARD中定义的源代码是:中定义的源代码是:TYPE BIT_VECTOR IS ARRAY(NATURAL RANGE)OF BITTYPE BIT_VECTOR IS ARRAY(NATURAL RANGE)OF BIT;p 位矢量是用双引号括起来的一组位数据。位矢量是用双引号括起来的一组位数据。p Signal a : bit_vector( 7 downtoSignal a : bit_vec
53、tor( 7 downto 0):=”11001010”;0):=”11001010”; 标准数据类型标准数据类型(5 5)布尔)布尔(BOOLEAN)(BOOLEAN) 布尔数据类型实际上是一个二值枚举型数据类型,布尔数据类型实际上是一个二值枚举型数据类型,它的取值有它的取值有FALSEFALSE和和TRUETRUE两种。两种。p 可以进行关系运算和逻辑运算,不能用于算术运算。可以进行关系运算和逻辑运算,不能用于算术运算。p IF a=bIF a=b 标准数据类型标准数据类型(6 6) 字符字符(CHARACTER)(CHARACTER) 字符类型通常用单引号引起来,如字符类型通常用单引号引
54、起来,如AA。字符类型。字符类型区分大小写,如区分大小写,如BB不同于不同于bb。(7 7) 字符串字符串(STRING)(STRING) 非约束型字符数组,或称为字符串数组。非约束型字符数组,或称为字符串数组。 字符串必须用双引号标明。字符串必须用双引号标明。 VARIABLE STRING_VARVARIABLE STRING_VARSTRING(1 TO 7)STRING(1 TO 7); STRING_VAR:=“A B C D” STRING_VAR:=“A B C D”;标准数据类型标准数据类型 标准数据类型标准数据类型(8 8)时间)时间(TIME)(TIME) VHDL VHD
55、L中唯一预定义物理类型,由整数和物理量单位两中唯一预定义物理类型,由整数和物理量单位两部分组成,之间至少留一个空格,如部分组成,之间至少留一个空格,如55 ms55 ms。p STANDARD STANDARD 程序包中时间型定义如下:程序包中时间型定义如下:TYPE TIME IS RANGE -2147483647 TO 2147483647TYPE TIME IS RANGE -2147483647 TO 2147483647units units fs fs; -飞秒,飞秒,VHDLVHDL中的最小时间单位中的最小时间单位 ps = 1000 fsps = 1000 fs; -皮秒皮秒
56、 ns = 1000 psns = 1000 ps; -纳秒纳秒 us = 1000 nsus = 1000 ns; -微秒微秒 ms = 1000 usms = 1000 us; -毫秒毫秒 sec = 1000 mssec = 1000 ms; -秒秒 min = 60 secmin = 60 sec; -分分 hr = 60 minhr = 60 min; -时时end untisend untis;标准数据类型标准数据类型(9 9) 错误等级错误等级(SEVERITY_LEVEL)(SEVERITY_LEVEL) 在在VHDLVHDL仿真器中,错误等级用来指示设计系统的仿真器中,错误等
57、级用来指示设计系统的工作状态,共有四种可能的状态值:工作状态,共有四种可能的状态值:NOTE(NOTE(注意注意) )、WARNING(WARNING(警告警告) )、ERROR(ERROR(出错出错) )、FAILURE(FAILURE(失败失败) )。p 其定义如下:其定义如下: TYPE SEVERITY_LEVE IS (NOTETYPE SEVERITY_LEVE IS (NOTE,WARNINGWARNING,ERRORERROR,FAILURE)FAILURE); (1010)自然数)自然数(NATURAL)(NATURAL)和正整数和正整数(POSITIVE)(POSITIVE
58、) 整数的子类型,即非负的整数、正整数整数的子类型,即非负的整数、正整数 它们在它们在STANDARDSTANDARD程序包中定义的源代码如下:程序包中定义的源代码如下: SUBTYPE NATURAL IS INTEGER RANGE 0 TO SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGER HIGHINTEGER HIGH; SUBTYPE POSITIVE IS INTEGER RANGE 1 TO SUBTYPE POSITIVE IS INTEGER RANGE 1 TO INTEGER HIGHINTEGER HIGH;标准数据类型标准数
59、据类型 IEEEIEEE预定义标准逻辑类型预定义标准逻辑类型 在在IEEEIEEE库的程序包库的程序包STD_LOGIC_1164STD_LOGIC_1164中,定义了两中,定义了两个非常重要的数据类型,即标准逻辑位个非常重要的数据类型,即标准逻辑位STD_LOGICSTD_LOGIC 和和标准逻辑矢量标准逻辑矢量STD_LOGIC_VECTORSTD_LOGIC_VECTOR。 使用时用使用时用USEUSE语句显式调用。语句显式调用。(1 1) 标准逻辑位标准逻辑位STD_LOGICSTD_LOGIC STD_LOGICSTD_LOGIC数据类型的定义如下所示:数据类型的定义如下所示:TYP
60、E STD_LOGIC IS (UTYPE STD_LOGIC IS (U,XX,00,11,ZZ,WW,LL,HH,-)-);各值的含义是:各值的含义是:U-U-未初始化的,未初始化的,X-X-强未知的,强未知的,0-0-强强0 0,1-1-强强1 1,Z-Z-高阻态,高阻态,W-W-弱未知的,弱未知的,L-L-弱弱0 0,H-H-弱弱1 1,-忽略。忽略。 IEEEIEEE预定义标准逻辑类型预定义标准逻辑类型(其中,(其中,U,X,WU,X,W不能被综合。电平大小,不能被综合。电平大小,从高到低,依次为从高到低,依次为1 1、H H、L L、0 0 )(2 2)标准逻辑矢量)标准逻辑矢量(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国社区养老服务行业开拓第二增长曲线战略制定与实施研究报告
- 2025-2030年中国美甲行业并购重组扩张战略制定与实施研究报告
- 脂肪酶活检测原理及方法
- 服装品牌意向调查问卷
- 建设廉洁政治读书心得体会-总结报告模板
- 2024年游记作文300字
- 商品知识培训课件下载
- 打造高绩效团队培训课件2
- 年产7000吨铜、铝电磁线项目可行性研究报告模板-立项拿地
- 二零二五年度安全生产标准化体系完善与维护服务合同3篇
- JJF 2180-2024婴儿辐射保暖台校准规范
- 2024年财政部会计法律法规答题活动题目及答案一
- 2025年八省联考新高考语文试题解读及备考启示
- 2025年江西江铜集团招聘笔试参考题库含答案解析
- 教育技术研究员合同模板
- 【MOOC期末】《电子技术实习SPOC》(北京科技大学)期末慕课答案
- 联席会议制度及职责(3篇)
- 新媒体技术基础知识单选题100道及答案解析
- 2025蛇年带横批春联对联200副带横批
- 羊肉购销合同书样本
- 实验仪器维修保养服务采购招标文件
评论
0/150
提交评论