第五VHDL语言的主要描述语句剖析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第五VHDL语言的主要描述语句剖析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 VHDL 语言 主要 描述 语句 剖析 课件
- 资源描述:
-
1、第五章第五章2023-2-425.1 顺序描述语句顺序描述语句n执行的顺序:顺序描述语句同高级语言的执行执行的顺序:顺序描述语句同高级语言的执行一样,是一样,是按出现次序按出现次序加以执行的;加以执行的;n出现的场合:进程或子程序出现的场合:进程或子程序(过程过程/函数函数)中;中;wait语句语句 断言语句断言语句 信号代入语句信号代入语句 变量赋值语句变量赋值语句 过程调用语句过程调用语句 if语句语句 case语句语句 loop语句语句 next语句语句 exit语句语句 null语句语句2023-2-435.1.1 信号代入语句信号代入语句1)书写格式书写格式目的信号量目的信号量=敏感
2、信号量表达式;敏感信号量表达式;处于处于构造体中构造体中的信号代入语句的信号代入语句 z=a or(b nand c);有有3 个敏感量个敏感量 a、b、c,无论哪一个敏感量发生,无论哪一个敏感量发生变化,该代入语句将被执行。变化,该代入语句将被执行。2)举例举例2023-2-44na=b after 5 ns;表示当表示当b发生新的变化发生新的变化5ns后,才被代入到信后,才被代入到信号号a中;中;nc=a and b after 15 ns;表示当表示当a或或b发生新的变化发生新的变化15ns后,它们进行后,它们进行与逻辑操作的结果才被代入到信号与逻辑操作的结果才被代入到信号a中,可描述中
3、,可描述逻辑门的延时特性;逻辑门的延时特性;na=0 after 5 ns,1 after 10 ns,0 after 15 ns;该信号代入语句描述了怎样的波形呢?该信号代入语句描述了怎样的波形呢?2023-2-453)两类延时语句惯性延时、传输延时两类延时语句惯性延时、传输延时(1)惯性(惯性(Inertial)延时)延时n惯性延时:在惯性模型中,惯性延时:在惯性模型中,系统或器件系统或器件输出信号要发输出信号要发生变化,必须有一段时间的延时,这段延时时间,就生变化,必须有一段时间的延时,这段延时时间,就是系统或元件的惯性延时。是系统或元件的惯性延时。n特点:当一个系统或器件的输入信号周期
4、,小于系统特点:当一个系统或器件的输入信号周期,小于系统或器件的惯性延时,其输出将保持不变。或器件的惯性延时,其输出将保持不变。n如:在一个信号值维持期间,如果存在任何毛刺、脉如:在一个信号值维持期间,如果存在任何毛刺、脉冲等周期小于器件本身的惯性延时的情况,输出信号冲等周期小于器件本身的惯性延时的情况,输出信号的值将不变,否则将引起信号的变化。的值将不变,否则将引起信号的变化。2023-2-46惯性延时举例惯性延时举例假设某门电路的惯性延假设某门电路的惯性延时为时为20 nsb=inertial a after 20 ns;所有器件都存在惯性延时,所有器件都存在惯性延时,在代入语句中加上惯性
5、延在代入语句中加上惯性延时时间,可以仿真硬件电时时间,可以仿真硬件电路实际工作情况,如:路实际工作情况,如:b=a after 10 ns;或:或:b=inertial a after 10 ns;惯性延时说明只在惯性延时说明只在行为行为仿真仿真时才有意义,逻辑综时才有意义,逻辑综合时将被忽略。合时将被忽略。10ns2023-2-47(2)传输传输(Transport)延时延时n传输延时常用于描述传输延时常用于描述总线延迟、连接线总线延迟、连接线的延的延时,及时,及ASIC芯片的路径延时芯片的路径延时。n在在VHDL语言中,语言中,传输延时不能缺省传输延时不能缺省,必须在,必须在语句中使用传输
6、延时的前置词语句中使用传输延时的前置词transport明确明确说明。说明。n特点:输出端的信号在延时规定时间后,将特点:输出端的信号在延时规定时间后,将完全复现完全复现输入端的输入波形,而不管输入波输入端的输入波形,而不管输入波形的形状和宽窄如何。形的形状和宽窄如何。2023-2-48传输延时举例传输延时举例传输延时:不管多传输延时:不管多短的脉冲都根据指短的脉冲都根据指定的延时值,传给定的延时值,传给一个延时信号输出一个延时信号输出。2023-2-495.1.2 变量赋值语句变量赋值语句1)书写格式书写格式目的变量目的变量:表达式;表达式;2)举例举例 a:=2;-值;值;b:=d+e;-
7、表达式;表达式;c:=f;-可为信号、变量、常量;可为信号、变量、常量;2023-2-4105.1.3 断言(断言(assert)语句)语句n作用:主要用于程序的仿真、调试中的人机会话。作用:主要用于程序的仿真、调试中的人机会话。assert 条件条件 report 输出信息输出信息severity 级别级别;格式:格式:assert语句检查一个布尔表达式为真或假,如果值语句检查一个布尔表达式为真或假,如果值是是真真,则,则该语句任何事都不做该语句任何事都不做,如果值是如果值是假假,断言断言语句将输出一用户规定的字符串到标准输出终端语句将输出一用户规定的字符串到标准输出终端。2023-2-41
8、1assert 条件条件 report 输出信息输出信息severity 级别级别;设计者所写的文设计者所写的文字串,通常是说字串,通常是说明错误的原因,明错误的原因,文字串应用双引文字串应用双引号括起来。号括起来。错误严重程度的级别,错误严重程度的级别,分为分为4级别:级别:failure,error,waring,note布尔表达式布尔表达式 assert(sendb=1)report“sendb timed out at 1”severity error;2023-2-4125.1.4 wait语句语句n等待语句用于等待语句用于控制进程的执行时间控制进程的执行时间;n当进程执行到当进程执
9、行到wait语句时,将被语句时,将被挂起挂起,直到,直到wait语句的语句的条件满足条件满足,才继续,才继续执行执行后续语句;此时进后续语句;此时进程中该语句之前的信号赋值语句得到执行;程中该语句之前的信号赋值语句得到执行;n注意:注意:wait语句通常不存在具体电路对应,在电语句通常不存在具体电路对应,在电路综合时通常不产生影响;路综合时通常不产生影响;2023-2-413wait语句可设置的四种不同条件语句可设置的四种不同条件无限等待、时间到、条件满足以及敏感信号量变化。无限等待、时间到、条件满足以及敏感信号量变化。wait 无限等待无限等待wait for 时间到时间到wait unti
10、l 条件满足条件满足wait on 敏感信号变化敏感信号变化后三种条件可以单独使用也可以混合使用。后三种条件可以单独使用也可以混合使用。书写格式书写格式2023-2-4141.wait on 语句语句wait on语句后面可跟一个或多个信号量,语句后面可跟一个或多个信号量,等待等待所列举信号中任何一个发生变化所列举信号中任何一个发生变化。1)书写格式书写格式wait on 信号信号1 ,信号,信号2 ;2)举例举例wait on a,b;等待信号量等待信号量a或或b发生变化,发生变化,a或或b中只要有一个发生变化,中只要有一个发生变化,进程将结束挂起状态,继续执行进程将结束挂起状态,继续执行w
11、ait on语句后面的语句。语句后面的语句。2023-2-415例:判断以下三段程序的正误例:判断以下三段程序的正误process(a,b)begin y=a and b;end process;processbegin wait on a,b;y=a and b;end process;process(a,b)begin wait on a,b;y=a and b;end process;wait on 所起作用与进程的敏感信号量表相所起作用与进程的敏感信号量表相同,两者不能同时存在。同,两者不能同时存在。2023-2-4162.wait until 语句语句v利用表达式建立隐含的利用表达式
12、建立隐含的敏感信号量表敏感信号量表;v当任何一个涉及的信号发生变化时,就自动检测当任何一个涉及的信号发生变化时,就自动检测布尔表达式是否为真;布尔表达式是否为真;v如果为真,如果为真,则进程脱离等待状态则进程脱离等待状态,执行后续语句;执行后续语句;如果为假,则继续等待。如果为假,则继续等待。1)书写格式书写格式wait until 布尔表达式;布尔表达式;2023-2-417nwait until(x*10)100);a.当信号量当信号量x的值大于或等于的值大于或等于10时,进程执行到该时,进程执行到该语句,就被挂起;语句,就被挂起;b.当当x的值小于的值小于10时,进程再次被启动,继续执行
13、时,进程再次被启动,继续执行wait until语句的后继语句。语句的后继语句。2)举例)举例:利用表达式建立隐含的利用表达式建立隐含的敏感信号量表敏感信号量表2023-2-418library ieee;use ieee.std_logic_1164.all;entity kdec24 isport(a:in std_logic_vector(1 downto 0);en:in std_logic;f:out std_logic_vector(3 downto 0);end entity kdec24;例:例:architecture d of kdec24 isbegin process
14、begin wait until en=1;f(0)=not a(1)and not a(0);f(1)=not a(1)and a(0);f(2)=a(1)and not a(0);f(3)=a(1)and a(0);end process;end architecture d;2023-2-4193.wait for 语句语句 当进程执行到该语句时将被挂起,直到指当进程执行到该语句时将被挂起,直到指定的时间到了,进程再次开始执行定的时间到了,进程再次开始执行wait for 语句语句后继的语句。后继的语句。1)书写格式书写格式 wait for 时间表达式;时间表达式;2023-2-420
15、若若a=2,b=50ns,c=70ns,则执行到该语句时,就要等待则执行到该语句时,就要等待2*(50+70)=240ns后,后,再继续执行后续语句。再继续执行后续语句。wait for(a*(b+c););2)举例举例执行到该语句等待执行到该语句等待20ns以后,再继续执行下一条指令。以后,再继续执行下一条指令。wait for 20 ns;2023-2-421例:利用例:利用wait for构成输入信号波形构成输入信号波形entity inhibittestbench isend entity inhibittestbench;architecture beh of inhibittest
16、bench iscomponent inhibit isport(x,y:in bit;z:out bit);end component inhibit;signal xt,yt,zt:bit;begin u1:inhibit port map(xt,yt,zt);process begin xt=0;yt=0;wait for 10 ns;xt=0;yt=1;wait for 10 ns;xt=1;yt=0;wait for 10 ns;xt=1;yt=1;wait;-进入无限期等待,进入无限期等待,避免进入无限期循环;避免进入无限期循环;end process;end architectu
17、re beh;2023-2-422entity inhibit isport(x,y:in bit;z:out bit);end entity inhibit;architecture rtl of inhibit isbegin z=x and(not y);end architecture rtl;component inhibit is port(x,y:in bit;z:out bit);end component inhibit;2023-2-4234.多条件等待语句多条件等待语句上述语句等待的是上述语句等待的是3个条件:个条件:1)信号量信号量umi和和interrupt任何一个有
18、一次新的变化;任何一个有一次新的变化;2)信号量信号量umi或或interrupt 任何一个取值为任何一个取值为“真真”;3)该语句已等待该语句已等待5 us。前面所讲的三类前面所讲的三类wait 语句,等待的条件都是单一的,语句,等待的条件都是单一的,要么是信号量要么是信号量(wait on),要么是布尔量,要么是布尔量(wait until),要,要么是时间量么是时间量(wait for)。wait语句可同时使用多个等待条语句可同时使用多个等待条件件。例如例如wait on umi,interruptuntil(umi=true)or(interrupt=true)for 5 us;202
19、3-2-424 多条件等待中的表达式,至少应包含一个多条件等待中的表达式,至少应包含一个信号量,信号量,比如,比如,wait until(interrupt=true)or(old_clk=1););结论:在等待语句中结论:在等待语句中信号的变化信号的变化才能引起等待语句才能引起等待语句表达式的一次评价和计算。表达式的一次评价和计算。若上面语句中若上面语句中interrupt和和old_clk两个都是两个都是变量,变量,而没有一个信号量,那么,即使两个变量有变化,而没有一个信号量,那么,即使两个变量有变化,这条语句也不会对表达式进行评估和计算。这条语句也不会对表达式进行评估和计算。事实上,挂起
20、的两个变量的值是不可能改变的,事实上,挂起的两个变量的值是不可能改变的,这样,该语句将变成无限的等待语句,包含该等待这样,该语句将变成无限的等待语句,包含该等待语句的进程就不可能再次启动。语句的进程就不可能再次启动。2023-2-4255.超时等待超时等待 wait until(sendb=1)for 1 us;assert(sendb=1)report“sendb timed out at 1”severity.;等待语句加超时等待项的等待语句加超时等待项的目的目的:防止等待语句:防止等待语句进入无限期的等待状态。进入无限期的等待状态。for 1 us:作为超时等待项;:作为超时等待项;as
21、sert 语句:用于检测进程是否遇到等待条件,语句:用于检测进程是否遇到等待条件,还是因超时等待而执行后续语句。还是因超时等待而执行后续语句。2023-2-426例:可能进入死锁的进程通信例:可能进入死锁的进程通信architecture wait_example of wait_example issignal sendb,senda:std_logic;begin senda=0;a:process begin wait until sendb=1;senda=1 after 10 ns;wait until sendb=0;senda=0 after 10 ns;end process;
22、b:processbegin wait until senda=0;sendb=0 after 10 ns;wait until senda=1;sendb=1 after 10 ns;end process;end architecture wait_example;2023-2-4272023-2-428例:使用超时等待项的进程通信例:使用超时等待项的进程通信 senda=0;a:process begin wait until sendb=1 for 1 us;assert(sendb=1)report“sendb timed out at 1”severity error;senda=
23、1 after 10 ns;wait until sendb=0 for 1 us;assert(sendb=0)report“sendb timed out at 0”severity error;senda=0 after 10 ns;end process;b:process begin wait until senda=0 for 1 us;assert(senda=0)report“senda timed out at 0”severity error;sendb=0 after 10 ns;wait until senda=1 for 1 us;assert(senda=1)rep
24、ort“senda timed out at 1”severity error;sendb=1 after 10 ns;end process;end wait_example;2023-2-429wait until sendb=1 for 1 us;assert(sendb=1)report“sendb timed out at 1”severity error;senda=1 after 10 ns;程序解释:程序解释:1)如果等待时间超过了如果等待时间超过了1us进程则执行进程则执行assert语句。语句。2)assert语句判断条件(语句判断条件(sendb=1)为)为真真,则继续执
25、,则继续执行下一条语句行下一条语句senda=1 after 10 ns;3)若若assert语句判断条件为语句判断条件为假,假,则向操作人员提供错则向操作人员提供错误信息输出,误信息输出,report后的字符串后的字符串“sendb timed out at 1”以及以及severity后的错误等级。后的错误等级。2023-2-4305.1.5 if 语句语句 nif 语句根据所指定的条件来确定执行哪一些语语句根据所指定的条件来确定执行哪一些语句,书写格式通常可分成三种类型:句,书写格式通常可分成三种类型:qif 语句的门闩控制语句的门闩控制qif 语句的二选择控制语句的二选择控制qif 语
展开阅读全文