书签 分享 收藏 举报 版权申诉 / 130
上传文档赚钱

类型新的硬件描述语言VHDL编程基础课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3539991
  • 上传时间:2022-09-14
  • 格式:PPT
  • 页数:130
  • 大小:842.01KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《新的硬件描述语言VHDL编程基础课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    硬件 描述 语言 VHDL 编程 基础 课件
    资源描述:

    1、 本章首先介绍了本章首先介绍了VHDL的基本结构,的基本结构,使读者初步掌握使读者初步掌握VHDL的基础知识。最的基础知识。最后通过大量的实例使读者进一步掌握使后通过大量的实例使读者进一步掌握使用用VHDL的设计方法。的设计方法。本章主要内容本章主要内容lVHDL(Very high speed intergated circuit Hardware Description Language):非常高速集成电路的硬件描非常高速集成电路的硬件描述语言。述语言。l20世纪世纪80年代诞生于美国国防部的一项年代诞生于美国国防部的一项研究计划,目的是使电路的设计能够以研究计划,目的是使电路的设计能够以

    2、文字的方式保存下来。文字的方式保存下来。l被列为被列为IEEE1076标准,也成为工业界的标准,也成为工业界的标准。标准。1.VHDL简介简介2Verilog HDL语言简介语言简介lVerilog HDL它是在它是在C语言的基础上发展起来的,由语言的基础上发展起来的,由GDA(Gateway Design Automation)公司创造的,)公司创造的,1989年年cadence公司收购了公司收购了GDA公司,使得公司,使得Verilog HDL成为了该公司的独家专利。成为了该公司的独家专利。1990年年Cadence公司公开发公司公开发表了表了Verilog HDL,并成立,并成立LVI组

    3、织以促进组织以促进Verilog HDL成为成为IEEE标准,即标准,即IEEE Standard 1364-1995。lVerilog HDL的最大特点就是易学易用,如果有的最大特点就是易学易用,如果有C语言语言的编程经验,可以在一个较短的时间内很快的学习和掌的编程经验,可以在一个较短的时间内很快的学习和掌握,握,VerilogVerilog HDL HDL语言的系统抽象能力稍逊于语言的系统抽象能力稍逊于VHDLVHDL,而,而对门级开关电路的描述能力则优于对门级开关电路的描述能力则优于VHDLVHDL。二、二、VHDL的优点的优点1.支持层次化设计支持层次化设计 2.具有多层次描述系统硬件

    4、功能的能力具有多层次描述系统硬件功能的能力 3.具有丰富的仿真语句和库函数具有丰富的仿真语句和库函数 4.VHDL语句的行为描述能力和程序结构决定了他具有语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。支持大规模设计的分解和已有设计的再利用功能。VHDL的优点的优点5.对设计的描述具有相对独立性,与硬件的结构无关对设计的描述具有相对独立性,与硬件的结构无关 6.可以利用可以利用EDA工具进行逻辑综合和优化,并自动将工具进行逻辑综合和优化,并自动将VHDL描述转化为门级网表。描述转化为门级网表。7.具有可移植性,可以在不同的设计环境和系统平台具有可移植性,可以

    5、在不同的设计环境和系统平台中使用。中使用。8.具有良好的可读性。具有良好的可读性。三、三、VHDL与高级语言的区别与高级语言的区别l1.1.某些并行语句可以自动的重复执行,不需要某些并行语句可以自动的重复执行,不需要用循环指令来保证。用循环指令来保证。l2.VHDL2.VHDL中的许多语句不是按排列顺序执行的,中的许多语句不是按排列顺序执行的,而是可以同时执行的(而是可以同时执行的(VHDLVHDL的并行性)。的并行性)。返 回一、一、VHDL的基本结构的基本结构ENTITY nand_2 IS-定义一个实体定义一个实体PORT(a,b:IN STD_LOGIC;-描述输入输出描述输入输出 y

    6、:OUT STD_LOGIC);-信号信号END nand_2;LIBRARY IEEE;-IEEE库说明库说明USE IEEE.STD_Logic_1164.ALL;-自定义元件库自定义元件库ARCHITECTURE rtl OF nand_2 ISBEGIN -结构体说明结构体说明y=NOT(a AND b);END rtl;1.USE定义区2.PACKAGE定义区3.ENTITY定义区4.ARCHITECTURE定义区定义元件库5.CONFIGURATION定义区定义使用那些自定义元件库定义电路实体的外观:I/O接口的规格描述电路内部的逻辑功能决定那一个architecture被使用1.

    7、VHDL基本结构图基本结构图l功能功能:描述设计模块的输入:描述设计模块的输入/输出信号或引脚,并给出输出信号或引脚,并给出设计模块与外界的接口。实体类似一个设计模块与外界的接口。实体类似一个“黑盒黑盒”,实体,实体描述了描述了“黑盒黑盒”的输入输出口。的输入输出口。l格式格式:ENTITY 实体名实体名ISGENERIC(类属表类属表););PORT(端口表端口表););END ENTITY 实体名实体名l实体名实际上是器件名,最好根据相应的电路实体名实际上是器件名,最好根据相应的电路功能确定。如功能确定。如4位位2进制计数器用进制计数器用counter4b;8位加法器用位加法器用add8b

    8、;3/8译码器用译码器用ym_38。l实体名必须与文件名相同,否则无法编译实体名必须与文件名相同,否则无法编译。l实体名不能用工具库中定义好的元件名实体名不能用工具库中定义好的元件名。l实体名不能用中文,也不能用数字开头。实体名不能用中文,也不能用数字开头。类属表:用以将信息参数传递到实体。类属表:用以将信息参数传递到实体。类属表的一般格式为:类属表的一般格式为:GENERIC(常数名:数据类型(常数名:数据类型:=设定值设定值)GENERIC(awidth:INTEGER:=3;timex:time);其中:其中:常数名常数名由设计者确定;由设计者确定;数据类型数据类型通常取通常取INTEG

    9、ER或或time等;在表中提供时间参数、总线等;在表中提供时间参数、总线宽度等信息。宽度等信息。端口表:指明实体的输入、输出信号极其模式。端口表:指明实体的输入、输出信号极其模式。端口表的一般格式为:端口表的一般格式为:PORT(端口名:端口模式(端口名:端口模式数据类型数据类型)端口模式:端口模式:共四种:共四种:IN(输入)、(输入)、OUT(输出)、(输出)、INOUT(双向端口)(双向端口)、BUFFER(输出并向内部反(输出并向内部反馈)馈)数据类型数据类型:VHDL作为一种强类型语言,必须对数据对作为一种强类型语言,必须对数据对象(常量、变量、信号)规定取值范围,即对传输或象(常量

    10、、变量、信号)规定取值范围,即对传输或存储数据的类型作明确的界定。存储数据的类型作明确的界定。my_designd11:0oeclkad11:0a11:0intasmy_designd11:0oeclkad11:0a11:0intasFull_adderabcsumcoMux_41absycd 结构体:结构体:通过若干并行语句来描述设计实体的通过若干并行语句来描述设计实体的逻辑功逻辑功能能(行为描述)或(行为描述)或内部电路结构内部电路结构(结构描述),从而(结构描述),从而建立设计实体输出与输入之间的关系。一个设计实体建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体。可以有多个

    11、结构体。格式:格式:ARCHITECTURE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句;说明语句;BEGIN BEGIN 并行语句;并行语句;END ARCHITECTURE END ARCHITECTURE 结构体名结构体名;l说明语句:用于定义结构体中所用的数据对象和子说明语句:用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,但不能定义变程序,并对所引用的元件加以说明,但不能定义变量。量。l并行语句并行语句 并行语句有五种类型,可以把它们看成并行语句有五种类型,可以把它们看成结构体的五种子结构。这五种语句结构本身是并行结构体

    12、的五种子结构。这五种语句结构本身是并行语句,但内部可能含有并行运行的逻辑描述语句或语句,但内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句,如进程内部包含的即为顺序运行的逻辑描述语句,如进程内部包含的即为顺序语句。顺序语句。l五种语句结构分别为块语句、进程语句、信号赋值五种语句结构分别为块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。语句、子程序调用语句和元件例化语句。Input 1Input nOutput 1Output nl Structure描述描述 描述该设计单元的硬件结构描述该设计单元的硬件结构,即即该硬件是如何构成的该硬件是如何构成的,类似于数字电路中的逻

    13、辑图描类似于数字电路中的逻辑图描述述.lDate Flow描述描述 它是类似于寄存器传输级的方它是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。存器形式为特征,然后在寄存器之间插入组合逻辑。与数字电路中的真值表描述相似。与数字电路中的真值表描述相似。lBehavior Process描述描述 只描述所希望电路的功只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电有指明或涉及实现这些行为

    14、的硬件结构。与数字电路中的逻辑表达式描述相似。路中的逻辑表达式描述相似。architecture one of mux21 is signal d,e:bit;begin d=a and(not)s;e=b and s;y=d or e;end one;architecture one of mux21 isbegin y=(a and(not s)or(b and s);end one;architecture one of mux21 isbegin y=a when s=0 else b;end one;真值表真值表操作案例操作案例1、操作题目:、操作题目:通过通过3 3 8 8译码器的

    15、设计实例,从整体译码器的设计实例,从整体结构上初步认识结构上初步认识VHDLVHDL的基本结构和语句特点。的基本结构和语句特点。2 2、3 3 8 8译码器的电路图译码器的电路图如图所示如图所示,有,有4 4个输入端(个输入端(A0A0、A1A1、A2A2、ENEN),),8 8个输出端(个输出端(Y0Y0Y7Y7)3 3、步骤:定义元件库、实体、结构体、编译、仿真。、步骤:定义元件库、实体、结构体、编译、仿真。返 回一、数据对象一、数据对象 是数据类型的载体,共有三种形式的对象:是数据类型的载体,共有三种形式的对象:ConstantConstant(常量)(常量)VariableVariab

    16、le(变量)(变量)SignalSignal(信号)(信号)对象的说明格式为:对象的说明格式为:对象类别对象类别 标识符表:类型标识标识符表:类型标识:=初值初值 常量是全局量常量是全局量,在结构描述、程序包说明、在结构描述、程序包说明、实体说明、过程说明、函数调用说明和进程说实体说明、过程说明、函数调用说明和进程说明中使用。明中使用。例:例:constant WIDTH:INTEGER:=8;constant X:NEW_BIT:=X;定义了给定类型的变量名称。定义了给定类型的变量名称。例:例:variable A,B:BIT;variable INIT:NEW_BITl信号可以将结构体中分

    17、离的并行语句连接起来,信号可以将结构体中分离的并行语句连接起来,并且通过端口其他模块与该设计内的连接起来。并且通过端口其他模块与该设计内的连接起来。例:例:signal A,B:BIT;signal INIT:INTEGE:=-1LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY simp ISPORT(a,b,c,d:IN Std_Logic;g:OUT Std_Logic);END simp;ARCHITECTURE logic OF simp ISSIGNAL e,f:Std_Logic;BEGINe=a or b;f=not(c or d);

    18、g=e and f;END logic;二、数据类型二、数据类型 1.1.标准定义的数据类型标准定义的数据类型 不必用不必用USEUSE说明而直接使用。说明而直接使用。1 1)Boolean(Boolean(布尔量):取值为布尔量):取值为FALSEFALSE和和TRUETRUE。2 2)CharacterCharacter(字符):使用时用(字符):使用时用单引号单引号括起来,括起来,如:如:AA。3 3)StringString(字符串):使用时用(字符串):使用时用双引号双引号括起来,括起来,如:如:111000101 111000101 。4 4)IntegerInteger(整数):

    19、范围在(整数):范围在-(2 23131-1-1)()(2 23131-1-1)5 5)RealReal(实数):范围在(实数):范围在-1.0E+38-1.0E+38+1.0E+38+1.0E+38 6 6)Bit(Bit(位位):):取值为取值为0 0或或1.1.7 7)Time(Time(时间时间):):取值范围与整数一致取值范围与整数一致,一般用于仿一般用于仿真。真。8 8)Bit_vectorBit_vector(位矢量):基于(位矢量):基于BITBIT数据类型的数数据类型的数组。使用时必需注明宽度。组。使用时必需注明宽度。9 9)NaturalNatural(自然数)和(自然数)

    20、和Positive(Positive(正整数正整数):):是整是整数的一个子类型。数的一个子类型。1010)Severity levelSeverity level(错误等级):用来设计系统(错误等级):用来设计系统的工作状态。有四种状态值:的工作状态。有四种状态值:NOTE(NOTE(注意注意)、WARNING(WARNING(警告警告)、ERROR(ERROR(错误错误)、FAILURE(FAILURE(失败失败)。2.2.用户自定义的数据类型用户自定义的数据类型1 1)Enumerated TypesEnumerated Types(枚举类型)格式如下:(枚举类型)格式如下:TYPE T

    21、YPE 数据类型名数据类型名 IS IS(枚举文字,枚举文字(枚举文字,枚举文字););例如:例如:TYPE color IS(red,green,yellow,blue);TYPE color IS(red,green,yellow,blue);TYPE level IS(0,1,Z);TYPE level IS(0,1,Z);2)Integer Types2)Integer Types(整数类型)和(整数类型)和 Real TypesReal Types(实(实数类型)格式为:数类型)格式为:TYPE TYPE 数据类型名数据类型名 IS RANGE IS RANGE 约束范围;约束范围;

    22、例如例如:TYPE intTYPE int IS RANGE-10 TO 10;IS RANGE-10 TO 10;3)Array Types(3)Array Types(数组类型)格式如下:数组类型)格式如下:TYPE TYPE 数据类型名数据类型名 IS IS ARRAYARRAY(索引范围)(索引范围)OFOF类型名类型名称称 ;例如例如:TYPE a IS ARRAY(integer0 TO 9)OF std_logic:TYPE a IS ARRAY(integer0 TO 9)OF std_logic3.IEEE3.IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量 在在IEEE

    23、IEEE的程序包中的程序包中std_logic_1164std_logic_1164中定义了两个重中定义了两个重要的数据类型。要的数据类型。1 1)std_logic:std_logic:工业标准的逻辑类型。取值为工业标准的逻辑类型。取值为00(强(强0 0)、)、11(强(强1 1)、)、ZZ(高阻态)、(高阻态)、XX(强未知的)。(强未知的)。2 2)std_logic_vector:std_logic_vector:工业标准的逻辑类型。工业标准的逻辑类型。std_logicstd_logic的组合。的组合。注意:使用这两种数据时,注意:使用这两种数据时,程序中必须声明程序中必须声明:L

    24、IBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL USE IEEE.STD_LOGIC_1164.ALLstd_logic_std_logic_三、标识符三、标识符 标识符是标识符是VHDLVHDL语言最基本的要素之一,是使用语言最基本的要素之一,是使用VHDLVHDL语言的基础。标识符是描述语言的基础。标识符是描述VHDLVHDL语言中端口、信号、常语言中端口、信号、常数、变量以及函数等名称的字符串。数、变量以及函数等名称的字符串。VHDLVHDL标识符书写规标识符书写规则如下:则如下:1 1)使用的字符由)使用的字符由2626个英文字

    25、母、数字个英文字母、数字0 09 9以及下划以及下划线组成;线组成;2 2)标识符必须以英文字母开始,不区分大小写;)标识符必须以英文字母开始,不区分大小写;3 3)不能以下划线结尾;)不能以下划线结尾;4 4)标识符中不能有空格;)标识符中不能有空格;5 5)标识符不能与)标识符不能与VHDLVHDL的关键字重名。的关键字重名。四、运算符四、运算符(1)算术运算符)算术运算符 +加加 *乘方乘方 减减 MOD 求模求模 *乘乘 REM 求余求余 /除除 ABS 求绝对值求绝对值(2)关系运算符)关系运算符=等于等于/=不等于不等于 小于小于=小于或等于小于或等于 大于大于=大于或等于大于或等

    26、于其中其中=符号也用于信号的赋值操作符号也用于信号的赋值操作(3)逻辑运算符)逻辑运算符AND 逻辑与逻辑与 SLL 逻辑左移逻辑左移OR 逻辑逻辑SRL 逻辑右移逻辑右移NAND 逻辑与非逻辑与非 SLA 算术左移算术左移NOR 逻辑或非逻辑或非 SRA 算术右移算术右移XOR 逻辑异或逻辑异或 ROR 逻辑循环右移逻辑循环右移NOT 逻辑非逻辑非 ROL 逻辑循环左移逻辑循环左移五、五、VHDLVHDL属性属性 VHDL属性(属性(Attribute)是指实体、结构体、类)是指实体、结构体、类型及信号的一些表现特征。一般需要了解型及信号的一些表现特征。一般需要了解VHDL中的中的数值类属性

    27、、函数类属性以及范围类属性。其引用的数值类属性、函数类属性以及范围类属性。其引用的一般形式均为:对象一般形式均为:对象属性。属性。1 1数值类属性数值类属性 数值类属性可用于返回数组、块或一般数据的有数值类属性可用于返回数组、块或一般数据的有关属性。如左边界(关属性。如左边界(left)、右边界()、右边界(right)、)、下边界(下边界(low)、上边界()、上边界(high)和数组长度)和数组长度(l length)。例如:)。例如:sdownsdown:IN std_logic_vector:IN std_logic_vector(8 DOWNTO 08 DOWNTO 0);这个信号的

    28、各属性值如下:这个信号的各属性值如下:sdownsdownleftleft=8;sdown=8;sdownright=0;sdownright=0;sdownlowlow=0;=0;sdownsdownhighhigh=8;sdown=8;sdownlength=9;length=9;2 2函数类属性函数类属性 函数类属性用来返回有关信号行为功能的信息。如函数类属性用来返回有关信号行为功能的信息。如信号属性函数:信号属性函数:eventevent,它的值为布尔型,如果刚好,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),有事件发生在该属性所附着的信号上(即信号有变化)

    29、,则其取值为则其取值为TrueTrue,否则为,否则为FalseFalse。利用此属性可决定时。利用此属性可决定时钟边沿是否有效,即时钟是否发生。例如:时钟边沿表钟边沿是否有效,即时钟是否发生。例如:时钟边沿表示示SIGNAL clkSIGNAL clk:IN std_logicIN std_logic则:则:clkclkevent AND clkevent AND clk=1 1,表示时钟的上升沿。,表示时钟的上升沿。clkclkevent AND clkevent AND clk=0 0,表示时钟的下降沿,表示时钟的下降沿。3 3范围类属性范围类属性范围(范围(RANGERANGE)类属性

    30、,用来生成一个限制性)类属性,用来生成一个限制性数据对象的范围。数据对象的范围。例如:数据总线的范围例如:数据总线的范围SIGNAL data_bus:std_logic_wectorSIGNAL data_bus:std_logic_wector(15 15 DOWNTO 0DOWNTO 0);Data_busData_busRANGE=15 DOWNTO 0;RANGE=15 DOWNTO 0;注意:注意:MAX+PLUSMAX+PLUS不支持该属性不支持该属性。Full_adderabcsumcoand3abyc返 回1.IF语句语句 顺序语句用于进程过程或函数之中,为算法描顺序语句用于

    31、进程过程或函数之中,为算法描述提供了述提供了IF 语句语句、CASE语句、语句、LOOP语句。语句。可以用于实现两种或两种以上的条件分支判断。可以用于实现两种或两种以上的条件分支判断。格式为:格式为:IF 布尔表达式布尔表达式1 THEN 顺序语句顺序语句1 ELSIF 布尔表达式布尔表达式2 THEN 顺序语句顺序语句2 END IF 1)IF 布尔表达式布尔表达式1 THEN顺序语句顺序语句1END IF 2)IF 布尔表达式布尔表达式1 THEN顺序语句顺序语句1ELSE顺序语句顺序语句2END IF 3)IF 布尔表达式布尔表达式1 THEN顺序语句顺序语句1ELSIF 布尔表达式布尔

    32、表达式2 THEN顺序语句顺序语句2 END IF 4)IF 布尔表达式布尔表达式1 THENIF 布尔表达式布尔表达式2 THEN顺序语句顺序语句 END IFEND IF IFs=0THENy=a0;ELSIFs=1THENy=a1;ENDIF00 THEN y=a;01THEN y=b;10THEN y=c;ydddd=0;-当当s=其他时,其他时,d=0End Case;ym_38A0A1ENY7:0A23.LOOP语句语句 用于用于循环控制循环控制,与,与LOOP有关的五种语法其格式如下:有关的五种语法其格式如下:(1)循环标号循环标号:LOOP 顺序语句;顺序语句;END LOOP

    33、 循环标号循环标号;(2)标号标号:FOR 循环变量循环变量 IN 循环次数范围循环次数范围 LOOP 顺序语句;顺序语句;END LOOP 循环标号循环标号;(3)循环标号循环标号:WHILE 条件条件 LOOP 顺序语句;顺序语句;END LOOP 循环标号循环标号;(4)NEXT语句:在语句:在LOOP语句中,用来语句中,用来跳出当跳出当前循环前循环。其格式为:。其格式为:NEXT 循环标号循环标号 WHEN条件条件;(5)EXIT语句:用来语句:用来结束结束LOOP语句语句的执行。其的执行。其格式为:格式为:EXIT 循环标号循环标号 WHEN条件条件;利用利用LOOPLOOP语句可以

    34、简化同类顺序语句表达式语句可以简化同类顺序语句表达式.如如:Signal a,b,c:std_logic_vector(1 to 3)For n IN 1 to 3 LOOPa(n)=b(n)AND c(n)END LOOP等效于:等效于:a(1)=b(1)AND c(1)a(2)=b(2)AND c(2)a(3)dddNULL;End Case;End Process;l并行语句与一般软件程序的最大区别就是在结构并行语句与一般软件程序的最大区别就是在结构体中的执行都是体中的执行都是同时进行同时进行的,的,既它们的执行顺序既它们的执行顺序与语法的书写顺序无关与语法的书写顺序无关。这种并行性是由

    35、硬件本。这种并行性是由硬件本身的并行性决定的,一旦电路接通电源,各部分身的并行性决定的,一旦电路接通电源,各部分就会按照事先设计好的方案同时工作。就会按照事先设计好的方案同时工作。l 并行语句主要有进程语句(并行语句主要有进程语句(PROCESS)、块语)、块语句(句(BLOCK)、并行信号赋值语句、生成语句)、并行信号赋值语句、生成语句(GENERATE)、元件例化语句、断言语句。)、元件例化语句、断言语句。1.进程语句进程语句 进程语句是一段复合语句,由一段程序进程语句是一段复合语句,由一段程序构成,构成,各个进程之间是并行进行的,而进程各个进程之间是并行进行的,而进程的内部语句都是顺序执

    36、行的的内部语句都是顺序执行的。一个结构体中。一个结构体中可以包括多个进程语句,多个进程之间依靠可以包括多个进程语句,多个进程之间依靠信号(信号(SIGNAL)来传递。)来传递。进程语句的格式如下:进程语句的格式如下:标号标号:PROCESS(敏感信号表敏感信号表)说明语句说明语句;-定义一些局部变量定义一些局部变量BEGIN顺序语句顺序语句;END PROCESS 标号:标号:;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY if_case IS PORT(a,b,c,d:IN Std_Logic;sel:IN Std_Logic_Vector(

    37、1 downto 0);y,z:OUT Std_Logic);END if_case;ARCHITECTURE logic OF if_case ISBEGINif_label:PROCESS(a,b,c,d,sel)BEGINIF sel=00 THEN y=a;ELSIF sel=01 THEN y=b;ELSIF sel=10 THEN y=c;ELSE y z z z z z dddNULL;End Case;End Process;2.块语句块语句 块语句将结构体中的并行语句结合在一起,其主块语句将结构体中的并行语句结合在一起,其主要目的是改善并行语句极其结构的可读性,一般用于要目的

    38、是改善并行语句极其结构的可读性,一般用于较复杂的较复杂的VHDL程序。程序。其格式如下:其格式如下:块名称:块名称:BLOCK(表达式)(表达式)块声明项块声明项;BEGIN并行语句;并行语句;END BLOCK 块名称块名称;3.并行信号赋值语句并行信号赋值语句(1)简单(并行)信号赋值语句)简单(并行)信号赋值语句格式:赋值目标格式:赋值目标=表达式;表达式;如如q=b+c;(2)条件信号赋值语句)条件信号赋值语句 格式:格式:赋值目标赋值目标=表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式;表达式;注意:注意:由于条件测试的顺序性,第一句具有最高赋由于条件测试的顺序性,第一句

    39、具有最高赋值优先级,第二句次之,以此类推。值优先级,第二句次之,以此类推。ARCHITECTURE ar_6 OF fzh_1 ISBEGINy=aWHENq=00ELSE bWHENq=01ELSE cWHENq=10ELSE d;END ar_6;【例例4-10】条件信号赋值语句的用法条件信号赋值语句的用法(3)选择信号赋值语句)选择信号赋值语句 格式:格式:WITH 选择表达式选择表达式 SELECT 赋值目标赋值目标=表达式表达式 WHEN 选择值,选择值,表达式表达式 WHEN 选择值;选择值;选择信号赋值语句不允许有条件重叠的现象,选择信号赋值语句不允许有条件重叠的现象,也不允许存

    40、在条件涵盖不全的情况。也不允许存在条件涵盖不全的情况。注意:注意:选择信号赋值语句本身不能在进程中应选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的用,但其功能却与进程中的CASE语句的功能相似。语句的功能相似。CASE语句的执行依赖于进程中敏感信号的改变而启语句的执行依赖于进程中敏感信号的改变而启动进程。选择信号语句中也有敏感量,即动进程。选择信号语句中也有敏感量,即选择表达选择表达式式。当。当选择表达式选择表达式 的值发生变化时,就将启动此语的值发生变化时,就将启动此语句对各子句的选择值进行测试对比,当发现有满足句对各子句的选择值进行测试对比,当发现有满足条件的子句的选择值时,就

    41、将此子句表达式中的值条件的子句的选择值时,就将此子句表达式中的值赋给赋给赋值目标。赋值目标。ARCHITECTURE ar_7 OF fzh_2 ISBEGINWITH q SELECTyx(1),y=y(1),ci=cm(1),sum=s(1),co=cm(2);yj2:adde_1 PORT MAP(x(2),y(2),cm(2),sum=s(2),co=cm(3);yj3:adde_1 PORT MAP(x(3),y(3),cm(3),s(3),co);ENDar_9;*一位加法器的描述一位加法器的描述*LIBRARY ieee;USEieee.std_logic_1164.ALL;EN

    42、TITY add_1 ISPORT(x,INstd_logic;y:INstd_logic;ci:INstd_logic;sum:OUT std_logic;co:OUT std_logic;END add_1;ARCHITECTURE ar_10 OF add_1 ISBEGINsum=x XOR y XOR ci;co=(x AND y)OR(x AND ci)OR(y AND ci);END ar_10;练习:练习:用用D触发器构成触发器构成4位移位寄存器,用例化语位移位寄存器,用例化语句进行设计。句进行设计。DQclkdin d0DQclkd1DQclkd2DQclkd3d4doutU

    43、0U1U2U3clkLIBRARY ieee;USEieee.std_logic_1164.ALL;ENTITY shifter ISPORT(din,clk:INstd_logic;dout:OUT std_logic);END shifter;ARCHITECTURE a OF shifter IS COMPONENT dff PORT (D,clk:IN std_logic;Q:OUT std_logic);END COMPONENT;SIGNAL d:std_logic _vector(4 DOWNTO 0);BEGINd(0)d(2),clk=clk,Q =d(3);U3:dff P

    44、ORT MAP(D=d(3),clk=clk,Q =d(4);dout X,C1=Z,B1=Y);END a;LIBRARY ieee;USEieee.std_logic_1164.ALL;ENTITY yf2 ISPORT(A1,B1:INstd_logic;C1:OUT std_logic);END yf2;ARCHITECTUREb OF yf2 ISBEGIN C1=A1 NAND B1;END b;5.生成语句生成语句 生成语句具有复制作用,可以生成与某个元件或设生成语句具有复制作用,可以生成与某个元件或设计单元电路完全相同的一组并行元件或设计单元电路结计单元电路完全相同的一组并行元

    45、件或设计单元电路结构。构。格式格式1:标号:标号:FOR 循环变量循环变量 IN 取值范围取值范围 GENERATE 说明语句;说明语句;BEGIN 并行语句;并行语句;END GENERATE标号;标号;格式格式2:标号:标号:IF 条件条件 GENERATE 说明语句;说明语句;BEGIN 并行语句;并行语句;END GENERATE标号;标号;练习:练习:用用D触发器构成触发器构成4位移位寄存器,用生成语位移位寄存器,用生成语句进行设计。句进行设计。LIBRARY ieee;USEieee.std_logic_1164.ALL;ENTITY shifter ISPORT(din,clk:

    46、INstd_logic;dout:OUT std_logic);END shifter;ARCHITECTUREa OF shifter IS COMPONENT dff PORT(D,clk:IN std_logic;Q:OUT std_logic);END COMPONENT;SIGNAL d:std_logic _vector(0 TO 4);BEGINd(0)=din;G:For i IN 0 TO 3 GENERATE U:dff PORT MAP(d(i),clk,d(i+1);END GENERATE G;dout=d(4);END a;6.6.断言语句断言语句l断言语句是面向仿

    47、真的语句,综合器通常忽略此语断言语句是面向仿真的语句,综合器通常忽略此语句。并行断言语句等价一个进程语句,但不作任何句。并行断言语句等价一个进程语句,但不作任何操作,仅用于判断某一条件是否成立。操作,仅用于判断某一条件是否成立。l格式为:格式为:ASSERT 条件条件 REPORT报告信息报告信息SEVERITY出错级别出错级别;当判断条件为当判断条件为FauseFause时报告错误。时报告错误。Note:用在仿真时传递信息。用在仿真时传递信息。Warning:用于非平常情形,仿真仍继续,结果不可预知。用于非平常情形,仿真仍继续,结果不可预知。Error:仿真不能继续。仿真不能继续。Failu

    48、re:致命错误,必须立即停止。致命错误,必须立即停止。错误级别为四级:错误级别为四级:LIBRARY ieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;USEieee.std_logic_unsigned.ALL;ENTITYrs_1ISPORT(s,r:IN std_logic;q,nq:OUT std_logic);END rs_1;ARCHITECTURE ar_11 OF rs_1 ISBEGINPROCESSVARIABLE blh_1:bit:=0;BEGINASSERT NOT(s=1AND r=1)REPOR

    49、TBOTH s AND r EQUAL TO1!“SEVERITY ERROR;IF s=0AND r=0 THEN blh_1:=blh_1;ELSIF s=0AND r=1THEN blh_1:=0;ELSE blh_1:=1;END IF;q=blh_1 after 2 ns;nq=NOT blh_1WAIT ON r,s;END PROCESS;END ar_11;返 回l子程序由一组顺序语句组成,是为了在程序中重复使子程序由一组顺序语句组成,是为了在程序中重复使用而设立的。用而设立的。l子程序不是一个独立的编译单位,只能置于实体或程子程序不是一个独立的编译单位,只能置于实体或程序包中

    50、。序包中。l在结构体中定义的子程序对于该结构体来说是局部的,在结构体中定义的子程序对于该结构体来说是局部的,即不能被其它设计层次的结构体调用。如果要在其它即不能被其它设计层次的结构体调用。如果要在其它结构体中调用同一个子程序,就需要把子程序定义到结构体中调用同一个子程序,就需要把子程序定义到程序包中。程序包中。l VHDL中的子程序有两类:中的子程序有两类:过程子函数:过程通过其接口返回过程子函数:过程通过其接口返回0个或多个值。个或多个值。函数子函数:函数直接返回单个值。函数子函数:函数直接返回单个值。l 子程序包含两部分:即子程序声明和主体部子程序包含两部分:即子程序声明和主体部分。分。在

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:新的硬件描述语言VHDL编程基础课件.ppt
    链接地址:https://www.163wenku.com/p-3539991.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库