欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《VHDL语言基础》PPT课件.ppt

    • 资源ID:5454330       资源大小:931KB        全文页数:221页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《VHDL语言基础》PPT课件.ppt

    VHDL语言基础,何宾2011.09,VHDL语言基础-本章概述,本章详细介绍了VHDL语言的基本结构、VHDL语言要素、VHDL语言语句的原理和设计方法。VHDL语言是整个EDA设计中最核心的内容之一。读者必须熟练的掌握VHDL语言,并且通过实验掌握使用VHDL语言对可编程逻辑器件进行编程的方法和技巧。,VHDL语言基础-VHDL程序结构,一个完整的VHDL程序包含实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)、库(library)5个部分。实体主要是用于描述和外部设备的接口信号;构造体用于描述系统的具体逻辑行为功能;包存放设计使用到的公共的数据类型、常数和子程序等;配置用来从库中选择所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置等。,VHDL语言基础-VHDL程序结构,VHDL的基本结构是由实体和结构体两部分组成的。实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。设计实体是VHDL程序的基本单元,是电子系统的抽象。根据所设计的数字系统的复杂度的不同,其程序规模也大不相同。,VHDL语言基础-VHDL程序结构,实体由类属说明和端口说明两个部分组成。根据IEEE标准,实体组织的一般格式为:ENTITY IS Generic Declarations Port Declarations END;(1076-1987 version)END ENTITY;(1076-1993 version),VHDL语言基础VHDL实体,VHDL语言基础VHDL实体,实体说明在VHDL程序设计中描述一个元件或一个模块与设计系统的其余部分(其余元件、模块)之间的连接关系,可以看作一个电路图的符号。因为在一张电路图中,某个元件在图中与其他元件的连接关系是明显直观的。,确定实体或组件中定义的局部常数。模块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电路结构和规模。类属说明必须放在端口说明之前。generic(:=.);,VHDL语言基础类属说明,类属常用于定义:实体端口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。例:entity mck is generic(width:integer:=16);port(add_bus:out std_logic_vector(width-1 downto 0);,VHDL语言基础类属说明,VHDL语言基础端口说明,定义实体的一组端口称作端口说明(port declaration)。端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。实体说明中的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以当作变量用在逻辑表达式中。,语法格式:Port(:;.)其中:port_name为端口名字;mode为端口模式;type为数据类型。,VHDL语言基础端口说明,VHDL语言基础端口说明,(1)输入模式(in)输入仅允许数据流入端口。输入信号的驱动源由外部向该设计实体内进行。输入模式主要用于时钟输入、控制输入(如Load、Reset、Enable、CLK)和单向的数据输入,如地址信号(address)。,VHDL语言基础端口说明,(2)输出模式(out)输出仅允许数据流从实体内部输出。输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看作可读的。输出模式常用于计数输出、单向数据输出、设计实体产生的控制其他实体的信号等。,VHDL语言基础端口说明,(3)缓冲模式(buffer)缓冲模式的端口与输出模式的端口类似,只是缓冲模式允许内部引用该端口的信号。缓冲端口既能用于输出,也能用于反馈。缓冲端口的驱动源可以是:设计实体的内部信号源;其他实体的缓冲端口。缓冲不允许多重驱动,不与其他实体的双向端口和输出端口相连。,VHDL语言基础端口说明,VHDL语言基础端口说明,(4)双向模式(inout)双向模式可以代替输入模式、输出模式和缓冲模式。在设计实体的数据流中,有些数据是双向的,数据可以流入该设计实体,也有数据从设计实体流出,这时需要将端口模式设计为双向端口。双向模式的端口允许引入内部反馈,所以双向模式端口还可以作为缓冲模式用。由上述分析可见,双向端口是一个完备的端口模式。,VHDL语言基础数据类型,数据类型端口说明除了定义端口标识名称、端口定义外,还要标明出入端口的数据类型。由IEEE std_logic_1164所约定的、由EDA工具支持和提供的数据类型为标准逻辑(standard logic)类型。标准逻辑类型也分为布尔型、位型、位矢量型和整数型。为了使EDA工具的仿真、综合软件能够处理这些逻辑类型,这些标准库必须在实体中声明或在USE语句中调用。,VHDL语言基础实体举例,【例3-1】下面给出一个关于8位计数器的实体说明 entity counter is generic(byte:integer:=8);port(clk:in std_logic;rst:in std_logic;counter:out std_logic_vector(byte-1 downto 0);end counter;,VHDL语言基础结构体,结构体具体指明了该设计实体的行为,定义了该设计实体的逻辑功能和行为,规定了该设计实体的内部模块及其内部模块的连接关系。VHDL对构造体的描述通常有三种方式进行描述:1)行为描述;2)寄存器传输描述;3)结构描述;,VHDL语言基础结构体,一个结构体的VHDL的描述为:architecture of is-declarative_items(signal declarations,component declarations,etc.)begin-architecture body end;,VHDL语言基础结构体,其中:arch_name为结构体的名字;entity_name为实体的名字。结构体的begin开始的前面部分为声明项(declarative_items),通常是对设计内部的信号或者元件进行声明;而begin后面一直到结构体的结束,该部分是对实体行为和功能的具体的描述。该部分的描述是由顺序语句和并发语句完成的。,VHDL语言基础结构体内信号定义,由结构体的书写格式知道,在关键字ARCHITECTURE和BEGIN之间的部分,用于对结构内部使用的信号、常数、数据类型、函数进行定义。特别需要注意的是,这些声明用于结构体内部,而不能用于实体内部,因为一个实体中可能有几个结构体相对应。另外,实体说明中定义I/O信号为外部信号,而结构体定义的信号为内部信号。,VHDL语言基础结构体内信号定义,结构体的信号定义和实体的端口说明一样,应有信号名称和数据类型定义,但不需要定义信号模式(mode),不需要说明信号方向,因为这些结构体的内部信号是用来描述结构体内部的连接关系。,VHDL语言基础结构体内并行语句,并行处理语句是结构体描述的主要语句,并行处理语句在begin和end之间。并行处理语句表明,若一个结构体的描述用的是结构描述方式,则并行语句表达了结构体的内部元件之间的互连关系。这些语句是并行的,各个语句之间没有顺序关系。,VHDL语言基础结构体内并行语句,若一个结构体是用进程语句来描述的,并且这个结构体含有多个进程,则各进程之间是并行的。但必须声明,每个进程内部的语句是有顺序的,不是并行的。若一个结构体用模块化结构描述,则各模块间是并行的,而模块内部视描述方式而定。,VHDL语言基础结构体内并行语句,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(a:in std_logic_vector(3 downto 0);sel:in std_logic_vector(1 downto 0);q:out std_logic);END mux4;ARCHITECTURE rtl OF mux IS BEGIN q=a(0)when sel=”00”else a(1)when sel=”01”else a(2)when sel=”10”else a(3)when sel=”11”else X END rtl;,VHDL语言基础描述风格,VHDL语言主要有三种描述风格:行为描述;数据流(RTL寄存器传输)描述;结构描述;这三种描述方式从不同角度对硬件系统进行描述。一般情况下,行为描述用于模型仿真和功能仿真;而RTL描述和结构描述可以进行逻辑综合。,VHDL语言基础结构体行为描述,行为描述是以算法形式对系统模型、功能的描述,与硬件结构无关。抽象程度最高。行为描述中常用语句的语句主要有:1)进程;2)过程;3)函数;,VHDL语言基础结构体行为描述,【例3-4】两输入或门的行为描述。ENTITY or2 IS PORT(a,b:in std_logic;c:out std_logic);END or2;ARCHITECTURE behav of or2 is BEGIN c=a or b AFTER 5 ns;END behave;,VHDL语言基础结构体数据流描述,数据流描述又称为寄存器传输级RTL描述。RTL级描述是以寄存器为特征,在寄存器之间插入组合逻辑电路。即以描述数据流的流向为特征。,VHDL语言基础结构体数据流描述,【例3-5】四选一选择器的数据流(RTL)描述。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux4 IS port(x:in std_logic_vector(3 downto 0);sel:in std_logic_vector(1 downto 0);y:out std_logic);END mux4;ARCHITECTURE rtl of mux4 IS BEGIN y=x(0)when sel=”00”else x(1)when sel=”01”else x(2)when sel=”10”else x(3);END rtl;,VHDL语言基础结构体数据流描述,这种基于RTL级的描述,虽然具体了一些,但仍没有反映出实体内的具体结构。使用RTL描述时,应遵循以下几个原则:1、在一个进程中,不允许存在两个寄存器的描述【例3-6】下面是违反规则1的描述 PROCESS(clk1,clk2)BEGIN if rising_edge(clk1)then y=a;end if;if rising_edge(clk2)then z=b;end if;END PROCESS;,VHDL语言基础结构体数据流描述,2、在描述寄存器时,不允许使用IF语句中的ELSE项【例3-7】下面是违反规则2的描述 PROCESS(clk)BEGIN if rising_edge(clk)then y=a;else y=b;end if;END PROCESS;,VHDL语言基础结构体数据流描述,3、在描述寄存器时,必须带入信号值【例3-8】下面的例子说明了如何带入信号的方法 PROCESS(clk)VARIABLE tmp:std_logic;BEGIN y=tmp;if rising_edge(clk)then tmp:=a;end if;END PROCESS;,VHDL语言基础结构体结构化描述,在多层次的设计中,高层次的设计模块调用低层次的设计模块,构成模块化的设计。从上面的例子可以看出来,全加器由两个半加器和一个或门构成,元件之间,元件与实体端口之间通过信号连接。知道了他们的构成方式,那么就可以通过元件例化语句进行描述。,VHDL语言基础结构体结构化描述,【例3-9】全加器的结构化的描述。Architecture structure_view of Full_adder is Component half_adder port(a,b:in std_logic;s,c:out std_logic);end component;component or_gate port(a,b:in std_logic;c:out std_logic);end component;signal a,b,c:std_logic;begin Inst_half_adder1:port map(x,y,a,b);Inst_half_adder2:port map(a,cin,sum,c);Inst_or_gate:port map(b,c,cout);End structure_view;,VHDL语言基础结构体结构化描述,VHDL语言基础结构体结构化描述,结构层次化编码是模块化设计思想的一种体现。目前大型设计中必须采用结构层次化编码风格,以提高代码的可读性,易于分工协作,易于设计仿真测试激励。最基本的结构化层次是由一个顶层模块和若干个子模块构成,每个子模块根据需要还可以包含自己的子模块。结构层次化编码结构如图3.5所示。在进行结构层次化设计过程中,要遵循以下的原则:,VHDL语言基础结构体结构化描述,VHDL语言基础结构体结构化描述,1、结构的层次不易太深,一般为3到5层即可。在综合时,一般综合工具为了获得更好的综合效果,特别是为了使综合结果所占用的面积更小,会默认将RTL代码的层次打平。而有时为了在综合后仿真和布局布线后时序仿真中较方便的找出一些中间信号,比如子模块之间的接口信号等,可以在综合工具中设置保留结构层次,以便于仿真信号的查找和观察.,VHDL语言基础结构体结构化描述,2、顶层模块最好仅仅包含对所有模块的组织和调用,而不应该完成比较复杂的逻辑功能。较为合理的顶层模块由:输入输出管脚声明、模块的调用与实例化、全局时钟资源、全局置位/复位、三态缓冲和一些简单的组合逻辑等构成。,VHDL语言基础结构体结构化描述,3、所有的I/O信号,如输入、输出、双向信号等的描述在顶层模块完成。4、子模块之间也可以有接口,但是最好不要建立子模块间跨层次的接口,例如上图中 模块A1到模块B1之间不宜直接连接,两者需要交换的信号可以通过模块A,模块B的接口传递。这样做的好处是增加了设计的可读性和可维护性。5、子模块的合理划分非常重要,应该综合考虑子模块的功能、结构、时序、复杂度等多方面因素。,VHDL语言基础资源共享,除实体和构造体外,包集合、库及配置是VHDL语言和另外3个可以各自独立进行编译的源设计单元。通过使用库、包和配置,可以实现设计的共享。,VHDL语言基础资源共享(库种类),一个库中可以存放集合定义、实体定义、结构体定义和配置定义。当需要引用一个库时,首先需要对库名进行说明,其格式为:LIBRARY 其中为库的名字,这时就可以使用库中已经编译好的设计。对库中集合包的访问必须再经由USE语句才能打开。其格式为:USE 其中为程序包的名字。,VHDL语言基础资源共享(库种类),当前在VHDL语言中的库大致可以分为5种:IEEE库、STD库、ASIC矢量库、用户定义库和WORK库。,VHDL语言基础资源共享(库种类),1)IEEE 库 定义了四个常用的程序包:std_logic_1164(std_logic types&related functions)std_logic_arith(arithmetic functions)std_logic_signed(signed arithmetic functions)std_logic_unsigned(unsigned arithmetic functions),VHDL语言基础资源共享(库种类),2、STD 库(默认库)STD库是VHDL的标准库,在库中存放STANDARD的包集合。由于它是VHDL的标准库,因此设计人员如果调用STANDARD包内的数据可以不进行标准格式的说明。STD库中还包含TEXTIO的包集合,在使用这部分包时,必须说明库和包集合名,然后才能使用该包集合中的数据。LIBRARY STD USE STD.TEXTIO.ALL;STANDATD包集合中定义最基本的数据类型包括Bit,bit_vector,Boolean,Integer,Real,and Time等。,VHDL语言基础资源共享(库种类),3、面向ASIC的库 在VHDL中,为了门级仿真的要求,各公司提供面向ASIC的逻辑门库。在该库中存放着与逻辑门一一对应的实体。为了使用它,必须对库进行说明。4、WORK库 是存放设计数据的库。设计所描述的VHDL语句并不需要说明,将存放到WORK中。在使用该库的时候无须说明。,VHDL语言基础资源共享(库种类),5、用户定义库 用户定义库是设计人员根据设计的需要所开发的包集合和实体等,可以汇集在一起定义成一个库。在使用库时必须要说明库名称,然后才能调用包内的数据等。,VHDL语言基础资源共享(库使用),1、库的说明 除了WORK和STD库外,其它的库在使用前都需要进行说明,其说明格式为:library;其中 LIB_NAME为所需要调用的库的名字。,VHDL语言基础资源共享(库使用),2、库的调用 此外,还需要设计人员指明使用库中哪个包集合以及包集合中的项目名(过程名、函数名等)。use.all 其中LIB_NAME为所需要调用的库的名字,PACKAGE_NAME为所需要调用的包的名字。,VHDL语言基础资源共享(库使用),3、库的作用范围 库说明语句的作用范围从一个实体说明开始到所属的构造体、配置为止。当一个文件中出现两个以上的实体时,两条作为使用库的说明语句应在每个实体说明语句前重复书写。,VHDL语言基础资源共享(包集合),包集合(Package)说明像C语言中的include语句一样,用来单纯的罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等。使用包集合时用USE语句说明。如USE IEEE.STD_logic_1164.ALL;程序包的说明包含:常量说明;VHDL数据类型说明;元件说明;子程序说明;程序包的结构包括:程序包说明(包首);程序包主体(包体);,VHDL语言基础程序包说明语句,包的说明语句格式:package is end;其中 package_name为包的名字,包的声明部分以package is开头,以end结束。Package declaration为包的具体声明部分。从上面的包声明格式可以知道,包的声明部分包含:类型说明;子类型说明;常量说明;信号说明;子程序说明;元件说明。,VHDL语言基础程序包说明语句,package example is type is record:std_logic_vector(7 downto 0);:std_logic;end record;-Declare constants constant:time:=ns;constant:integer:=;-Declare functions and procedure function(signal:in)return;procedure(:in);end example;,VHDL语言基础程序包体,程序包的内容:子程序的实现算法。包体的语句格式:package body is end;其中 package_name为包的名字,程序包的包体部分以package body is开头,以end结束。Package body declaration为包体的具体声明部分。,VHDL语言基础程序包体,包体说明项可含:use 语句;子程序说明;子程序主体;类型说明;子类型说明;常量说明。程序包首与程序包体的关系:程序包体并非必须,只有在程序包中要说明子程序时,程序包体才是必须的。程序包首可以独立定义和使用。,VHDL语言基础程序包体,package body example is function(signal:in)return is variable:;begin:=xor;return;end;function(signal:in;signal:in)return is begin if(=1)then return;else return Z;end if;end;procedure(:in)is begin end;end example;,VHDL语言基础-VHDL中的函数,1、VHDL语言中的函数的说明部分function(:;:)return;其中:1)FUNC_NAME为函数的名字;2)()里为输入变量的声明,对变量的声明包括对变量类型type的说明;3)在声明部分还要声明return后面变量的返回类型。,VHDL语言基础-VHDL中的函数,2、VHDL语言中的函数的实现部分 function(:;:)return is-subprogram_declarative_items(constant declarations,variable declarations,etc.)begin-function body end;,VHDL语言基础-VHDL中的函数,其中:1)FUNC_NAME为函数的名字;2)()里为输入变量的声明,对变量的声明包括对变量类型type的说明;3)在声明部分还要声明return后面变量的返回类型。在return is之后和begin之前是函数内部使用的一些常数和变量等的声明。在begin后到end之间是函数体部分,函数体是函数的具体逻辑行为方式的表示。return用于函数,并且必须返回一个值,该值的类型必须和声明的返回类型一致。,VHDL语言基础-VHDL中的函数,【例3-12】函数的声明和实现部分 function lut1(a:std_logic_vector)-函数的声明部分 return std_logic_vector;function lut1(a:std_logic_vector)-函数的实现部分 return std_logic_vector is variable length1:std_logic_vector(2 downto 0);begin if(a=11111110)then length1:=000;elsif(a=11111101)then length1:=001;elsif(a=11111011)then length1:=010;elsif(a=11110111)then length1:=011;elsif(a=11101111)then length1:=100;elsif(a=11011111)then length1:=101;elsif(a=10111111)then length1:=110;elsif(a=01111111)then length1:=111;end if;return length1;,VHDL语言基础-VHDL中的子程序,1、VHDL语言中的子程序的说明部分 procedure(:in;:out);其中:1)PROC_NAME为子程序的名字;2)()里为输入变量和输出变量的声明;对变量的声明包括对变量输入(in)/输出(out)和变量类型type的说明。,VHDL语言基础-VHDL中的子程序,2、VHDL语言中的子程序的实现部分 procedure(:in;:out)is-subprogram_declarative_items(constant declarations,variable declarations,etc.)begin-procedure body end;,VHDL语言基础-VHDL中的子程序,其中:1)PROCC_NAME为子程序的名字;2)()里为输入和输出变量的声明,对变量的声明包括对变量输入(in)/输出(out)和变量类型type的说明。在()is之后和begin之前是子程序内部使用的一些常数和变量等的声明。在begin后到end之间是子程序体部分,子程序体是子程序的具体逻辑行为方式的表示。return用于子程序,只是结束子程序,不返回任何值。,VHDL语言基础-VHDL中的子程序,【例3-13】子程序的声明和实现部分 package PKG is procedure ADD(A,B,CIN:in BIT;C:out BIT_VECTOR(1 downto 0);end PKG;package body PKG is procedure ADD(A,B,CIN:in BIT;C:out BIT_VECTOR(1 downto 0)is variable S,COUT:BIT;begin S:=A xor B xor CIN;COUT:=(A and B)or(A and CIN)or(B and CIN);C:=COUT,VHDL语言基础-VHDL中的配置,元件配置就是从某个实体的多种结构体描述方式中选择特定的一个。配置语句描述层于层之间的连接关系以及实体与结构之间的连接关系。设计者可以利用这种配置语句来选择不同的构造体,使其与要设计的实体相对应。在进行高级仿真时经常会使用元件配置语句。,VHDL语言基础-VHDL中的配置,配置语句的格式:configuration of is for end;其中:1)configration_identifier为配置名字;2)entity_name为配置所使用的实体名字;3)architecture_name为配置所使用的结构体的名字;4)component_configuration为元件的配置。,VHDL语言基础-VHDL中的配置,【例3-14】一个与非门不同实现方式的配置如下:library ieee;use ieee.std_logic_1164.all;entity nand is port(a:in std_logic;b:in std_logic;c:out std_logic);end entity nand;architecture art1 of nand is begin c=not(a and b);end architecture art1;,VHDL语言基础-VHDL中的配置,architecture art2 of nand is begin c=1 when(a=0)and(b=0)else 1 when(a=0)and(b=1)else 1 when(a=1)and(b=0)else 0 when(a=1)and(b=1)else 0;end architecture art2;,VHDL语言基础-VHDL中的配置,configuration first of nand is for art1;end for;end first;configuration second of nand is for art2 end for;end second;,1)整数文字:十进制整数 如:5,678,156E2(=15600),45_234_287(=45234287)2)实数文字:带小数的十进制数 如:23.34,2.0,44.99E-2(=0.4499)8_867_551.23_909(8867551.23909),VHDL语言基础-VHDL文字规则(数字型文字),3)以数制基数表示的文字格式:基数#数字文字#E指数 如:10#170#(=170)2#1111_1110#(=254)16#E#E1(=2#1110_0000#=224)或:(=1416=224)16#F.01#E+2(=(15+1/(1616)1616=3841.00),VHDL语言基础-VHDL文字规则(数字型文字),VHDL语言基础-VHDL文字规则(数字型文字),4、位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。例如:B“1_1101_1110”:二进制数数组,长度为9 O“34”:八进制数数组,长度为6 X“1AB”:十六进制数数组,长度为12,VHDL语言基础-VHDL文字规则(数字型文字),5、IEEE预定义标准逻辑位与矢量 在IEEE库的程序包STD_LOGIC1164中,定义了两个重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC数据可以具有如下的9种不同的值:,VHDL语言基础-VHDL文字规则(数字型文字),“U”初始值“0”0“Z”高阻“L”弱信号0“X”不定“1”1“W”弱信号不定“H”弱信号1“_”不可能情况,1、字符(Character)字符也是一种数据类型,字符类型通常用单引号引起来,如A。字符类型区分大小写,如B不同于b。2、字符串(String)字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。常用于程序的提示和说明,如“STRING”等。,VHDL语言基础-VHDL文字规则(字符型文字),VHDL语言基础-VHDL文字规则(字符型文字),3、时间(Time)时间是一个物理数据。完整的时间类型包括整数和单位两部分;整数与单位之间至少留一个空格,如55 ms,2 ns。在包集合STANDARD中给除了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。在系统仿真时,时间数据很有用,可用它表示信号延时,从而使模型系统能更逼近实际系统的运行环境。,VHDL语言基础-VHDL文字规则(字符型文字),4、错误等级(Severity Level)在VHDL仿真器中,错误等级用来指示设计系统的工作状态,它有四种:1)NOTE(注意);2)WARNING(警告);3)ERROR(出错);4)FAILURE(失败)。在仿真过程中,可输出这四种状态以提示系统当前的工作状态。,定义常数、变量、信号、端口、子程序或参数的名字。基本标识符的要求(87标准):以英文字母开头;不连续使用下划线“_”;不以下划线“_”结尾;由26个大小写英文字母、数字0-9及下划线“_”组成的字符串。,VHDL语言基础-VHDL文字规则(标识符),基本标识符中的英文字母不分大小写;VHDL的保留字不能作为标识符使用。,VHDL语言基础-VHDL文字规则(字符型文字),扩展标识符(93标准):以反斜杠来界定,免去了87标准中基本标识符的一些限制。可以以数字打头,允许包含图形符号,允许使用VHDL保留字,区分字母大小写等。如:74LS163、Sig_#N、entity、ENTITY,VHDL语言基础-VHDL文字规则(字符型文字),下标名:用于指示数组型变量或信号的某一个元素。格式:标识符(表达式)下标段名:用于指示数组型变量或信号的某一段元素。格式:标识符(表达式 to/downto 表达式)如:a:std_logic_vector(7 downto 0)a(7),a(6)a(0)a(7 downto 0),a(7 downto 4),a(5 downto 3),VHDL语言基础-VHDL文字规则(下标名及下标段名),VHDL语言基础-VHDL数据对象,1、常量(Constant)常量是一个固定的值,主要是为了使设计实体中的常量更容易阅读和修改。常量一被赋值就不能在改变。常量所赋得值应与定义的数据类型一致。常量声明的一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc:REAL:=5.0;设计实体的电源电压指定,VHDL语言基础-VHDL数据对象,常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。,VHDL语言基础-VHDL数据对象,2、变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。变量声明一般格式:VARIABLE 变量名 数据类型 约束条件:=表达式;例:VARIABLE x,y:INTEGER;VARIABLE count:INTEGER RANGE0 TO255;,VHDL语言基础-VHDL数据对象,变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。变量赋值语句的语法格式如下:目标变量:=表达式;变量赋值符号是“:=”。赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。变量不能用于硬件连线和存储元件。变量只能在进程、函数和过程中使用,一旦赋值立即生效。,VHDL语言基础-VHDL数据对象,3、信号(Signal)信号是描述硬件系统的基本数据对象,它类似于连接线,它除了没有数据流动方向说明以外,其它性质与实体的端口(Port)概念一致。变量的值可以传递给信号,而信号的值不能传递给变量。信号通常在构造体、包集合和实体中说明。信号说明格式为:SIGNAL 信号名:数据类型;,VHDL语言基础-VHDL数据对象,信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。信号是电子系统内部硬件连接和硬件特性的抽象表示。用来描述硬件系统的基本特性。信号赋值语句的语法格式如下:目标信号 表达式;信号除了没有方向的概念以外几乎和端口概念一致。端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。信号本身无方向,可读可写。,VHDL语言基础-VHDL数据对象,信号是一个全局量,可以用来进行进程之间的通信。下面对信号和变量的一些不同特性进行详细的说明:1、信号赋值可以有延迟时间,变量赋值无时间延迟;2、信号除当前值外还有许多相关值,如历史信息等,变量只有当前值;3、进程对信号敏感,对变量不敏感;4、信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;5、信号可以看作硬件的一根连线,但变量无此对应关系。,VHDL语言基础-VHDL数据类型,VHDL是一种强数据类型语言。要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。VHDL数据类型分为四大类:标量类型(SCALAR TYPE);复合类型(COMPOSITE TYPE);存取类型(ACCESS TYPE);文件类型(FILES TYPE),VHDL语言基础-VHDL预定义数据类型,1、布尔量(boolean)布尔量具有两种状态:false 和 true。常用于逻辑函数,如相等(=)、比较()等中作逻辑比较。如,bit 值转化成boolean 值:boolean_var:=(bit_var=1);2、位(bit)bit 表示一位的信号值。放在单引号中,如 0 或 1。,VHDL语言基础-VHDL预定义数据类型,3、位矢量(bit_vector)bit_vector 是用双引号括起来的一组位数据。如:“001100”,X“00B10B”4、STD_LOGIC-U,X,0,1,Z,W,L,H,-5、STD_LOGIC_VECTOR-Natural Range of STD_LOGIC 6、字符(character)用单引号将字符括起来。variable character_var:character;Character_var:=A;,VHDL语言基础-VHDL预定义数据类型,7、整数(integer)integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为:-(231-1)to(231-1)VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。如:signal s:integer range 0 to 15;信号 s 的取值范围是0-15,可用4位二进制数表示,

    注意事项

    本文(《VHDL语言基础》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开