您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第三讲 VHDL基本语句
第三讲主要内容:VHDL基本语句(顺序语句和并行语句)一、顺序语句1.赋值语句信号赋值符号是“=“;变量的赋值符号是“:=”。如:SIGNALaBIT;VARIABLEbBIT;a=‘0’;b:=‘0’;2.IF语句四种语句结构:(1)IF条件句THEN顺序语句ENDIF;(2)IF条件句THEN顺序语句ELSE顺序语句ENDIF;(3)IF条件句THENIF条件句THEN…ENDIF;ENDIF;非完整性条件语句,通常用于产生时序电路完整性条件语句,通常用于产生组合电路多重IF语句嵌套式条件句,可产生时序、组合或混合电路(4)IF条件句THEN顺序语句ELSIF条件句THEN顺序语句ELSIF条件句THEN顺序语句ELSE顺序语句ENDIF;可以实现不同类型的电路。条件执行分支可以超过两个。顺序语句的执行条件具有向上相与的功能(即相关条件同时成立)。3.CASE语句CASE语句的结构如下:CASE表达式ISWhen选择值=顺序语句;When选择值=顺序语句;…ENDCASE;选择值有四种表达方式:单个普通数值,如6;数值选择范围,如(2TO4),表示2、3、4。并列数值,如3|5,表示取值为3或5。混合方式,以上三种方式的混合。5.31位二进制全加器的VHDL设计1位全加器顶层设计原理图或门逻辑描述底层元件VHDL设计半加器设计原理图半加器描述(1)并行赋值语句底层元件VHDL设计半加器描述(2)CASE语句:属于顺序语句,必须放在进程语句中使用。不是操作符相当于THEN与真值表对应半加器的真值表absoco0000011010101101利用CASE语句直接表达电路的真值表是一种十分有效和直接的方法。半加器描述(3)并置操作符&数组宽度(位宽)标准逻辑矢量数据类型(标准一维数组)数的表示:二进制数(矢量位)“01101100”单一二进制数:‘0’,‘1’1位二进制全加器顶层设计VHDL描述元件定义语句定义信号d,e,f作为器件内部的连接线对准备调用的元件做声明元件例化语句例化名:元件名PORTMAP(端口名=连接端口名,…);端口映射语句(元件及端口的连接说明)1位二进制全加器顶层设计VHDL描述上页1位二进制全加器VHDL顶层设计描述与该页原理图顶层设计文件的作用相同。1位二进制全加器工作波形4.LOOP语句(1)单个LOOP语句,其语法格式为:[LOOP标号:]LOOP顺序语句ENDLOOP[LOOP标号];例如:…L2:LOOPa:=a+1;EXITL2WHENa10;ENDLOOPL2;…(2)FOR_LOOP语句,语法格式为:[LOOP标号:]FOR循环变量IN循环次数范围LOOP顺序语句ENDLOOP[LOOP标号];例如:…L2:FORaIN0TO10LOOPa:=a+1;ENDLOOPL2;…8位奇偶校验逻辑电路5.NEXT语句它的语句格式有以下三种:(1)NEXT;(2)NEXTLOOP标号;(3)NEXTLOOP标号WHEN条件表达式;对于第一种语句格式,当LOOP内的顺序语句执行到NEXT语句时,即刻无条件终止当前的循环,跳回到本次循环LOOP语句处,开始下一次循环。对于第二种语句格式,与第一种功能基本相同,只是当有多重LOOP语句嵌套时,可以调到指定的标号LOOP语句处,重新开始执行循环操作。对于第三种语句格式,如果条件表达式的值为TRUE,则执行NEXT语句,进入跳转操作,否则继续向下执行。6.EXIT语句EXIT语句也有三种格式;(1)EXIT;(2)EXITLOOP标号;(3)EXITLOOP标号WHEN条件表达式;每一种语句格式与对应的NEXT语句和操作功能非常相似,唯一的区别就是:NEXT语句是转向LOOP语句的起始点;EXIT语句是转向LOOP语句的终点。7.WAIT语句WAIT语句有四种不同的语句格式:(1)WAIT;(2)WAITON信号表;(3)WAITUNTIL条件表达式;(4)WAITFOR时间表达式;第一种语句格式中,未设置停止挂起条件的表达式,表示永远挂起。第二种语句格式称为敏感信号等待语句,当处于等待时,敏感信号的任何变化将结束挂起,再次启动进程。第三种语句格式称为条件等待语句,当信号变化且满足条件时,将结束挂起,再次进入进程。等待时钟信号检测复位信号rst无复位信号,执行赋值操作第四种语句格式称为超时等待语句,在此时间段内,进程处于挂起状态,当超过这一事件段后,进程自动恢复执行。例如:…PROCESSBEGINWAITUNTILclk=‘1’;Ave=a;WAITUNTILclk=‘1’;Ave=ave+a;WAITUNTILclk=‘1’;Ave=ave+a;WAITUNTILclk=‘1’;Ave=ave+a;ENDPROCESS;…在四个脉冲过后,求得4个数值的平均值。8.子程序调用语句(下节课讲)9.RETURN语句返回语句有两种格式:(1)RETURN;(2)RETURN表达式;第一种语句格式只能用于过程,它只是结束过程,并不返回任何值。第二种语句格式只能用于函数,并且必须返回一个值。10.NULL语句空操作语句的语句格式为:NULL;NULL常用于CASE语句中。二、并行语句各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写顺序无关。每一并行语句内部的语句运行方式可以有两种不同的方式,即并行执行方式和顺序执行方式。结构体中的并行语句主要有7种:并行信号赋值语句条件信号赋值语句进程语句块语句元件例化语句生成语句并行过程调用语句1.并行信号赋值语句(1)简单信号赋值语句赋值目标=表达式;(2)条件信号赋值语句赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE…表达式;(3)选择信号赋值语句WITH选择表达式SELECT赋值目标信号=表达式WHEN选择值,表达式WHEN选择值,…表达式WHEN选择值;2.进程语句结构在一个结构体中,允许放置任意多个进程语句结构,而每一进程的内部是由一系列顺序语句构成的。进程语句一般格式:[进程标号:]PROCESS[(敏感信号参数表)][IS][进程说明部分]BEGIN顺序描述语句ENDPROCESS[进程标号];在一个结构体中,所有被激活的进程都是并行运行的。PROCESS组成(1)进程说明部分主要定义一些局部量,可包括数据类型、变量、常数、属性、子程序等。不允许定义信号和共享变量。(2)顺序描述语句部分信号赋值语句:将计算或处理的结果向信号赋值。变量赋值语句:以变量的形式存储计算的中间值。进程启动语句:当没有敏感信号表时,用WAIT语句。子程序调用语句:对已定义的过程和函数进行调用并参与计算。顺序描述语句:包括IF、CASE、LOOP、NULL语句等。进程跳出语句:包括NEXT、EXIT语句。(3)敏感信号表需列出用于启动本进程可读入的信号名。进程要点1.PROCESS是一无限循环语句2.PROCESS中的顺序语句具有明显的顺序/并行运行双重性3.进程必须由敏感信号的变化来启动4.进程语句本身是并行语句5.信号是多个进程间的通信线6.一个进程中只允许描述对应于一个时钟信号的同步时序逻辑3.块语句结构(BLOCK)BLOCK语句应用只是一种将结构中的并行描述语句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性,或是利用BLOCK的保护表达式关闭某些信号。BLOCK语句的表达格式如下:块标号:BLOCK[(块保护表达式)]接口说明类属说明BEGIN并行语句ENDBLOCK块标号;4.并行过程调用语句并行过程语句可以作为一个并行语句直接出现在结构体中,或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。并行条用语句的调用格式与顺序过程调用语句是相同的,即过程名(关联参量名);5.元件例化语句元件例化语句由两部分组成,前一部分是对一个现成的设计实体定义为一个元件,第二部分则是此元件与当前设计实体中的连接说明。语句格式如下:COMPENT元件名ISGENERIC(类属表);PORT(端口名表);ENDCOMPONENT元件名;例化名:元件名PORTMAP([端口名=]连接端口名,…);6.生成语句生成语句可以简化为由规则设计结构的逻辑描述。生成语句有一种复制作用,在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。第6章VHDL设计进阶6.14位加法计数器的VHDL描述注意:表面上BUFFER具有双向端口INOUT的功能,但实际上其输入功能是不完整的,只能将自己输出的信号再反馈回来。VHDL规定:加、减等算术操作符+、-对应的操作数的数据类型只能是INTEGER。注意:文件名取为实体名,扩展名为.vhd4位加法计数器的另一种表达方式(常用)数据类型定义为标准逻辑位或位矢量,容易与其他电路模块接口。调用+号的算符重载函数,允许使用不同的数据类型。4位加法计数器工作时序6.2不同工作方式的时序电路设计中间未引入信号定义变量cqi用于数据暂存变量赋值符号省略赋值操作符异步清零,独立于CLK带有复位和时钟使能的10进制计数器带有复位和时钟使能的10进制计数器工作时序带有并行置位的移位寄存器带有并行置位的移位寄存器工作波形6.4双向电路和三态控制电路设计三态门设计三态门工作波形双向端口设计q定义为双向端口q履行输入功能时将其设定为高阻态输出使q成为真正的双向端口设计能够产生独立控制的多通道电路必须使用并行语句结构三态总线电路设计注意:P152程序改错8线-3线优先编码器真值表输入输出din0din1din2din3din4din5din6din7output0output1output2xxxxxxx0000xxxxxx01100xxxxx011010xxxx0111110xxx01111001xx011111101x0111111011011111111118线-3线优先编码器6.6仿真延时1.固有延时:由于分布电容效应,任何电子器件都存在的一种惯性延时特性。2.传输延时:输入与输出之间的一种绝对延时,由半导体的延时特性决定。3.仿真δ延时量:一个VHDL模拟器的最小分辨时间。实验内容1、利用参数可设置LPM兆功能块设计一个4位乘法器。(See教材P94)2、熟悉Max+plusⅡ的VHDL文本设计流程全过程。设计1位二进制全加器,并进行时序仿真;在实验箱上锁定引脚并进行硬件下载测试。(See教材P117、实验指导书)3、用VHDL设计一个含异步清0和同步时钟使能的4位16进制加法计数器。(See教材P163、实验指导书)4、用VHDL设计一个16进制7段数码显示译码器并进行硬件测试。5、将3、4的设计作为底层元件,完成顶层文件设计,显示计数值。方法一:用原理图输入法。方法二:用例化语句。6、用状态机实现对A/D转换器ADC0809的采样控制。(See教材P195)
本文标题:第三讲 VHDL基本语句
链接地址:https://www.777doc.com/doc-3337242 .html