EDA应用技术 第2版 课件 02-VHDL顺序语句课件_第1页
EDA应用技术 第2版 课件 02-VHDL顺序语句课件_第2页
EDA应用技术 第2版 课件 02-VHDL顺序语句课件_第3页
EDA应用技术 第2版 课件 02-VHDL顺序语句课件_第4页
EDA应用技术 第2版 课件 02-VHDL顺序语句课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL的顺序语句只能出现在进程(process)、过程(procedure)和函数(function)中,利用顺序语句可以描述数字逻辑系统中的组合逻辑电路和时序逻辑电路。VHDL程序中常见的顺序语句有:赋值语句、流程控制语句、wait语句、子程序调用语句、空操作语句、断言语句、report语句等。项目5VHDL的顺序语句1.顺序赋值语句顺序赋值语句是出现在进程、过程和函数中的赋值语句,有信号赋值语句和变量赋值语句。它们的格式如下:

变量名:=表达式;

信号名<=表达式;变量赋值具有局部特征,它的赋值是立即发生的。信号赋值具有全局特征,它可以作为一个设计实体内部各单元之间数据传送的载体,还可通过信号进行实体间通信。信号在顺序语句中的赋值发生在一个进程结束或子程序调用完成以后,信号的赋值有一定的延时。项目5VHDL的顺序语句【例5.1】变量赋值和信号赋值的应用项目5VHDL的顺序语句信号“scnt”与变量“vcnt”都从0开始加1计数,但是信号计数输出“sigcnt”值比变量计数输出“varcnt”值延迟一个时钟周期。相当于信号赋值是通过寄存器赋值,而变量赋值是直接赋值。2.流程控制语句流程控制语句通过对条件的判断来决定执行哪一条或几条语句,常用的流程控制语句有if语句、case语句、loop语句等。(1)if语句if语句是通过对分支条件的判断决定执行哪个分支的顺序语句。if语句的常用格式有以下三种。①单分支if语句。单分支if语句格式如下:If条件判断表达式then

顺序执行语句;endif;当程序执行到单分支if语句时,如果if的判断条件为真,则if语句所包含的顺序执行语句将被执行;否则,不做任何操作。项目5VHDL的顺序语句【例5.2】单分支if语句的应用项目5VHDL的顺序语句在组合电路中使用单分支if语句,从“in_a”到“out_a”产生的是锁存器;在时序电路中使用单分支if语句,从“in_b”到“out_b”产生的是寄存器。②两分支if语句。两分支if语句格式:If条件判断表达式then

顺序执行语句1;else

顺序执行语句2;Endif;当if条件成立时,程序执行then和else之间的顺序执行语句;当if语句的条件不成立时,程序执行else和endif之间的顺序执行语句,即根据所指定的条件是否满足,程序可以选择两条不同的执行路径,可以看成是一个二选一数选择器。项目5VHDL的顺序语句【例5.3】两分支if语句的应用项目5VHDL的顺序语句从两分支if语句寄存器传输级综合效果图中可知,两分支if语句是一个二选一数据选择器。③多分支if语句。多分支if语句的格式:if条件判断表达式1then

顺序语句1;elsif条件判断表达式2then

顺序语句2; …elsif条件判断表达式nthen

顺序语句n;else

顺序语句n+1;endif;项目5VHDL的顺序语句没有else分支的格式:if条件判断表达式1then

顺序语句1;elsif条件判断表达式2then

顺序语句2; …elsif条件判断表达式nthen

顺序语句n;endif;多分支if语句执行多选择控制功能,允许在一个语句中出现多重条件,即条件嵌套。当满足所设置的多个条件之一时,就执行该条件后的顺序执行语句。【例5.4】多分支if语句的应用项目5VHDL的顺序语句从多分支if语句寄存器传输级综合效果图中可知,输出“out_a”的多分支if语句最后加了else分支,没有产生锁存器;输出“out_b”的多分支if语句最后没有加else分支,产生了锁存器,而且前面还产生了一个3输入的“或门”等资源消耗。(2)case语句case语句的格式如下:case判断表达式iswhen选择项值1=>顺序语句1;when选择项值2=>顺序语句2;

…when选择项值n=>顺序语句n;whenothers=>顺序语句n+1;endcase;当执行case语句时,首先计算判断表达式的值,然后根据条件句中与之相同的选择值对应的顺序语句执行,最后结束case语句。选择项可以是一个值,也可以是多个用“值|值|值”表示的值,还可用“值to值”约束一个范围,但选择项不能有重复。项目5VHDL的顺序语句使用case语句注意点:①条件句中的“=>”是操作符,它相当于if语句中的“then”。②条件句中的选择值,必须在“判断表达式”的取值范围之内。③case语句中每一条语句的选择值只能出现一次。④除非所有条件句中的选择值能完全覆盖case语句表达式的取值,否则最末一个条件句中的选择值,必须用“others”表示,它代表已给的所有条件句中未能列出的其他可能的取值。关键词“others”只能出现一次,且只能作为最后一条件取值。⑤与if语句相比,if语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件。case语句是无序的,所有表达式的值都并行处理。项目5VHDL的顺序语句【例5.5】case语句与多分支if语句的差别项目5VHDL的顺序语句使用case语句从输入到输出“out_a”是一个数据选择器,只有一个数据选择器的延时。多分支if语句从输入到输出“out_b”由多级级连的二选一数据选择器组成,等级最低的if分支从输入到输出要经过多级二选一数据选择器的延时。(3)loop语句loop语句的功能是循环执行一条或多条顺序语句,主要有for循环、while循环和条件跳出等三种形式。①for/loop语句。for/loop语句格式如下:[标号]:for循环变量in循环变量的范围loop

顺序语句;endloop[标号];for循环语句中的循环变量是一个临时变量,是loop语句的局部变量,不必事先定义,由loop语句自动定义,它只能作为赋值源,不能被赋值。在同一loop语句中不能再使用与此变量同名的标识符。循环变量的循环范围从循环变量的初值开始,每执行一次,就改变一次,直到循环变量范围的终值。项目5VHDL的顺序语句【例5.6】for/loop语句的应用项目5VHDL的顺序语句例5.6VHDL程序是16位偶校验电路。从仿真结果可知,输入第1个“data”值的所有位中有4个1,校验结果“xoro”为“0”,与偶校验位相同,输入的“data”值中有偶数个“1”;输入第2个“data”值的所有位中有5个1,校验结果“xoro”为“1”,与偶校验位不相同,输入的“data”值中有奇数个“1”。同理,可分析图中其它输入数值的偶校验。②while/loop语句。while/loop语句格式如下:[标号]:while条件loop

顺序处理语句;endloop[标号];在while/loop语句中,没有给出循环次数的范围,而给出了循环执行顺序语句的条件,没有自动递增循环变量的功能。如果循环控制条件为真,则进行循环,否则结束循环。因而需要在顺序处理语句中有修改循环条件的语句,使循环条件不满足,从而结束循环。项目5VHDL的顺序语句【例5.7】while/loop语句的应用项目5VHDL的顺序语句例5.7的VHDL程序是16位奇校验电路。从仿真结果可知,输入第1个“data”值的所有位中有4个1,校验结果“xoro”为“1”,与奇校验位相同,说明输入的“data”值中有偶数个“1”;输入第2个“data”值的所有位中有5个1,校验结果“xoro”为“0”,与奇校验位不相同,说明输入的“data”值中有奇数个“1”;同理,可分析图中其它输入数值的奇校验。③条件跳出循环。循环语句中的next与exit语句,用来结束循环或跳出循环。next语句用于控制内循环的结束,其格式为:next[标号][when条件];exit语句用于结束loop循环状态,其格式为:exit[标号][when条件];next语句与exit语句具有相似的语句格式和跳转功能,它们都是loop语句的内部循环控制语句。next语句是跳向loop语句的起始点,而exit语句是跳向loop语句的终点。项目5VHDL的顺序语句3.wait语句wait语句的功能是把一个进程挂起,直到满足等待的条件成立才重新开始进程的执行,含wait语句的进程,process后不能加敏感信号,否则是非法的。wait语句使用形式通常有waiton(敏感信号列表)、waituntil(判断条件表达式)和waitfor(时间)等三种形式。项目5VHDL的顺序语句(1)waiton语句waiton语句的使用格式为:processbegin

顺序语句1;顺序语句2;

…顺序语句n;waiton信号[,信号];endprocess;waiton语句后的信号也可以称为敏感信号,如果信号发生变化,则执行,否则进程处于挂起状态。waiton语句有些综合工具不支持。3.wait语句项目5VHDL的顺序语句(2)waituntil语句waituntil语句的使用格式为:processbegin

顺序语句1;顺序语句2;

…顺序语句n;waituntil条件判断表达式;endprocess;当进程执行到waituntil语句时进程被挂起,若条件判断表达式为真,则进程将被启动。waituntil语句中,条件判断表达式隐式地建立了一个敏感信号量表。wait语句的功能是把一个进程挂起,直到满足等待的条件成立才重新开始进程的执行,含wait语句的进程,process后不能加敏感信号,否则是非法的。wait语句使用形式通常有waiton(敏感信号列表)、waituntil(判断条件表达式)和waitfor(时间)等三种形式。3.wait语句项目5VHDL的顺序语句(3)waitfor语句waitfor语句的格式为:processbegin

顺序语句1;顺序语句2;

…顺序语句n;waitfor时间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论