EDA技术教程结构系统任务及显示ppt课件_第1页
EDA技术教程结构系统任务及显示ppt课件_第2页
EDA技术教程结构系统任务及显示ppt课件_第3页
EDA技术教程结构系统任务及显示ppt课件_第4页
EDA技术教程结构系统任务及显示ppt课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第第7章章 条件语句和循环语句条件语句和循环语句条件语句条件语句循环语句循环语句Casex Casex 和和casezcasez7.1 7.1 条件语句条件语句一、一、if-elseif-else语句语句二、二、casecase语句语句三、运用条件语句本卷须知三、运用条件语句本卷须知7.1 7.1 条件语句条件语句一、一、if-elseif-else语句语句断定所给条件能否满足,根据断定的结果真或假决议断定所给条件能否满足,根据断定的结果真或假决议执行给出的两种操作之一。执行给出的两种操作之一。if-elseif-else语句有语句有3 3种方式种方式其中其中“表达式为逻辑表达式或关系表达式,

2、或一位的变表达式为逻辑表达式或关系表达式,或一位的变量。量。假设表达式的值为假设表达式的值为0 0、或、或z z,那么断定的结果为,那么断定的结果为“假;假假;假设为设为1 1,那么结果为,那么结果为“真。真。语句可为单句,也可为多句;多句时一定要用语句可为单句,也可为多句;多句时一定要用“begin_endbegin_end语句括起来,构成一个复合块语句。语句括起来,构成一个复合块语句。对于每个断定对于每个断定只需两个分支只需两个分支 条件语句分为两种:条件语句分为两种:if-elseif-else语句和语句和casecase语句;语句; 它们都是顺序语句,应放在它们都是顺序语句,应放在“a

3、lways“always块内!块内!7.1 7.1 条件语句条件语句 允许一定方式的表达式简写方式,如:允许一定方式的表达式简写方式,如: if(expression) if(expression) 等同于等同于if(expression = = 1) if(expression = = 1) if(if(!expression) expression) 等同于等同于if(expression if(expression != 1) = 1) ifif表达式表达式 语句语句1 1;ifif表达式表达式1 1 语句语句1 1;else else 语句语句2 2;ifif表达式表达式1 1 语句语

4、句1 1;else ifelse if表达式表达式2 2语句语句2 2; else ifelse if表达式表达式n n语句语句n n;方式方式1 1:方式方式2 2:方式方式3 3:适于对不同的适于对不同的条件,执行不条件,执行不同的语句同的语句7.1 7.1 条件语句条件语句 if if语句可以嵌套;语句可以嵌套; 假 设假 设 i f i f 与与 e l s ee l s e 的 数 目 不 一 样 , 留 意 用的 数 目 不 一 样 , 留 意 用“begin_endbegin_end语句来确定语句来确定if if与与elseelse的配对关系!的配对关系!ifif表达式表达式1

5、1 if if表达式表达式2 2语句语句1 1; else else 语句语句2 2;elseelse if if表达式表达式3 3语句语句3 3; else else 语句语句4 4;ifif表达式表达式1 1 begin begin if if表达式表达式2 2语句语句1 1; end endelseelse 语句语句2 2;当当if if与与elseelse的数目不一样时,最好用的数目不一样时,最好用“begin_endbegin_end语句将单独的语句将单独的if if语句括起来:语句括起来:if if语句的嵌套:语句的嵌套:if else nested wrong wayif (in

6、dex0) forscani=0;scani0) begin $display(“); memoryscani=0; end else /* wrong*/$display(“error-index is zero);if else nested right wayif (index0) begin forscani=0;scani0) begin $display(“); memoryscani=0; end end else /* wrong*/ $display(“error-index is zero); if-else examplesreg31:0 instruction, seg

7、ment_area255:0;reg7:0 index;reg5:0 modify_seg1,modify_seg2,modify_seg3;parameter segment1=0,inc_seg1=1; segment2=20,inc_seg2=2; segment3=64,inc_seg3=4; data=128;if (indexsegment2) begin instruction=segment_areaindex+modify_seg1; index=index+inc_seg1; endelse if( indexsegment3)else if(indexdata)else

8、instruction=segment_areaindex; 7.1 7.1 条件语句条件语句 例例 模为模为6060的的BCDBCD码加法计数器码加法计数器counter60.vcounter60.valwaysalways块语句块语句和和assignassign语句语句是并行执行的!是并行执行的!在在alwaysalways块内块内的语句是顺序的语句是顺序执行的!执行的!7.1 7.1 条件语句条件语句v 留意:留意:if (reset)v else if (load)v else if (cin)v 不要写成不要写成3个并列的个并列的if语句:语句:v if (reset)v if (l

9、oad)v if (cin)v 由于这样写那么是同时对由于这样写那么是同时对3个信号个信号reset、load和和cin进展判进展判别,现实中很能够出现三者同时为别,现实中很能够出现三者同时为“1的情况,即的情况,即3个条个条件同时满足,那么应该同时执行它们对应的执行语句,件同时满足,那么应该同时执行它们对应的执行语句,但但3条执行语句是对同一个信号条执行语句是对同一个信号qout赋不同的值,显然相赋不同的值,显然相互矛盾。故编译时会报错!互矛盾。故编译时会报错!7.1 7.1 条件语句条件语句cincin为来自下一级计数器的进位为来自下一级计数器的进位alwaysalways与与assign

10、assign语句是并行执行的!语句是并行执行的!count60.vwfcount60.vwf置数进位输出当cin=1那么加1计数7.1 7.1 条件语句条件语句二、二、casecase语句语句多分支语句多分支语句casecase敏感表达式敏感表达式 值值1 1:语句:语句1 1; 值值2 2:语句:语句2 2; 值值n n:语句:语句n n; default: default: 语句语句n+1n+1;endcaseendcase1. case1. case语句语句 当敏感表达式取不同的值时当敏感表达式取不同的值时, , 执行不同的语句。执行不同的语句。 功能:当某个控制信号取不同的值时,给另一

11、个功能:当某个控制信号取不同的值时,给另一个输出信号赋不同的值。常用于多条件译码电路如输出信号赋不同的值。常用于多条件译码电路如译码器、数据选择器、形状机、微处置器的指令译码!译码器、数据选择器、形状机、微处置器的指令译码! casecase语句有语句有3 3种方式:种方式:casecase,casezcasez,casexcasex适于对同一个控制适于对同一个控制信号取不同的值时,信号取不同的值时,输出取不同的值!输出取不同的值!case语句与语句与if-else语句语句有什么区别有什么区别呢?呢?7.1 7.1 条件语句条件语句 阐明:阐明: 其中其中“敏感表达式又称为敏感表达式又称为“控

12、制表达式,通常表示为控控制表达式,通常表示为控制信号的某些位。制信号的某些位。 值值1值值n称为分支表达式,用控制信号的详细形状值表示,称为分支表达式,用控制信号的详细形状值表示,因此又称为常量表达式。因此又称为常量表达式。 default项可有可无,一个项可有可无,一个case语句里只能有一个语句里只能有一个default项项! 值值1值值n必需互不一样,否那么矛盾。必需互不一样,否那么矛盾。 值值1值值n的位宽必需相等,且与控制表达式的位宽一样。的位宽必需相等,且与控制表达式的位宽一样。7.1 7.1 条件语句条件语句2. casez2. casez与与casexcasex语句语句是是ca

13、secase语句的两种变体语句的两种变体 在在casecase语句中,分支表达式每一位的值都是确定的语句中,分支表达式每一位的值都是确定的或者为或者为0 0,或者为,或者为1 1; 在在casezcasez语句中,假设分支表达式某些位的值为高语句中,假设分支表达式某些位的值为高阻值阻值z z,那么不思索对这些位的比较;,那么不思索对这些位的比较; 在在casexcasex语句中,假设分支表达式某些位的值为语句中,假设分支表达式某些位的值为z z或或不定值不定值x x,那么不思索对这些位的比较。,那么不思索对这些位的比较。 在分支表达式中,可用在分支表达式中,可用“?来标识?来标识x x或或z

14、z。 7.1 7.1 条件语句条件语句module mux_z(out,a,b,c,d,select); output out; input a,b,c,d; input3:0 select; reg out; /必需声明必需声明 always (select3:0 or a or b or c or d) begin casez (select) 4b?1: out = a; 4b?1? : out = b; 4b? 1? : out = c; 4b 1? : out = d; endcase endendmodule 例例 用用casezcasez描画的数据选择器描画的数据选择器这里这里“

15、?表示高阻态表示高阻态case examplereg15:0 rega; reg9:0 result;case(rega)16d0:result=10b0111111111;16d1:result=10b1011111111;16d2:result=10b1101111111;16d3:result=10b1110111111;16d4:result=10b1111011111;16d5:result=10b1111101111;16d6:result=10b1111110111;16d7:result=10b1111111011;16d8:result=10b1111111101;16d9:

16、result=10b1111111110;default: result=10bx;endcase case, casez & casex : Truth tablecase01xzcasez01xzcasex01xz010000100101011101001010110111x001x0011x1111z0001z1111z1111case与与if-else的区别的区别1与与case语句中的控制表达式和多分支表达式这种比较构造相比,语句中的控制表达式和多分支表达式这种比较构造相比,if-else-if构构造中的条件表达式更为直观一些;造中的条件表达式更为直观一些;2对那些分支表达式中存在值为

17、不定值对那些分支表达式中存在值为不定值x和高阻值和高阻值z的位时,的位时,case语句提供了处语句提供了处置这种情况的手段。置这种情况的手段。例例7.1 case (select1:2) 2b00: result=0; 2b01: result=flaga; 2b0 x, 2b0z: result=flaga?bx:0; 2b10: result=flagb; 2bx0, 2bz0: result=bx; default: result=bx; endcaseExample of casezreg7:0 ir;casez(ir) 8b1?:instruction1(ir); 8b01?:ins

18、truction2(ir); 8b00010?:instruction3(ir); 8b000001?:instruction4(ir);endcase Casex examplereg7:0 r,mask;mask=8bx0 x0 x0 x0;casex(rmask) 8b001100 xx:stat1; 8b1100 xx00:stat2; 8b00 xx0011:stat3; 8bxx001100:stat4;endcase7.1 7.1 条件语句条件语句三、运用条件语句本卷须知三、运用条件语句本卷须知应留意列出一切条件分支,否那么当条件不满足时,应留意列出一切条件分支,否那么当条件不满

19、足时,编译器会生成一个锁存器坚持原值!编译器会生成一个锁存器坚持原值!这一点可用于设计时序电路,如计数器:条件满足时这一点可用于设计时序电路,如计数器:条件满足时加加1 1,否那么坚持原值不变。,否那么坚持原值不变。而在组合电路设计中,应防止生成隐含锁存器!有效而在组合电路设计中,应防止生成隐含锁存器!有效的方法是在的方法是在ifif语句最后写上语句最后写上elseelse项;在项;在casecase语句最语句最后写上后写上defaultdefault项。项。7.1 7.1 条件语句条件语句如何正确运用如何正确运用if语句?语句?生成了不想要的锁存器:不会生成锁存器:always (al or

20、 d) begin if(al) q=d; enddDFFD Qalq例例 设计一个数据选择器设计一个数据选择器always (al or d) begin if(al) q=d; else q=0; end0dalqmultiplexer当当al为为0时,时,q坚持原值!坚持原值!当当al为为0时,时,q等于等于0!7.1 7.1 条件语句条件语句always (sel1:0 or a or b) case(sel1:0) 2b00: q=a; 2b11: q=b; endcase生成了不想要的锁存器:例例 设计一个数据选择器设计一个数据选择器always (sel1:0 or a or b

21、) case(sel1:0) 2b00: q=a; 2b11: q=b; default: q=b0; endcase不会生成锁存器:如何正确运用如何正确运用case语句?语句?当当sel为为00或或11以外的值以外的值时,时,q坚持原值!坚持原值!v防止生成锁存器的原那么:防止生成锁存器的原那么:v假设用到假设用到if if语句,最好写上语句,最好写上elseelse项;项;v假设用到假设用到casecase语句,最好写上语句,最好写上defaultdefault项。项。7.2 7.2 循环语句循环语句一、一、forfor语句语句二、二、repeatrepeat语句语句三、三、whilewh

22、ile和和foreverforever语句语句3.8 3.8 循环语句循环语句循环语句分为循环语句分为4 4种:种:forfor语句语句经过经过3 3个步骤来决议语句的循环执行:个步骤来决议语句的循环执行:1 1给控制循环次数的变量赋初值。给控制循环次数的变量赋初值。2 2断定循环执行条件,假设为假那么跳出循环;假设为真,那么执行指断定循环执行条件,假设为假那么跳出循环;假设为真,那么执行指定的语句后,转到第定的语句后,转到第3 3步。步。3 3修正循环变量的值,前往第修正循环变量的值,前往第2 2步。步。repeatrepeat语句语句延续执行一条语句延续执行一条语句n n次次whilewh

23、ile语句语句执行一条语句,直到循环执行条件不满足;假设一开场条件执行一条语句,直到循环执行条件不满足;假设一开场条件即不满足,那么该语句一次也不能被执行!即不满足,那么该语句一次也不能被执行!foreverforever语句语句无限延续地执行语句,可用无限延续地执行语句,可用disabledisable语句中断!语句中断!3.8 3.8 循环语句循环语句一、一、forfor语句语句for for 表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3语句语句forfor循环变量赋初值;循环执行条件;循环变量增值循环变量赋初值;循环执行条件;循环变量增值 执行语句执行语句两条语句两条语

24、句8 8条语句条语句普通方式普通方式简单运用方式简单运用方式 相当于采用相当于采用whilewhile语句建立的循环构造:语句建立的循环构造: beginbegin 循环变量赋初值;循环变量赋初值; while( while(循环执行条件循环执行条件) ) begin begin 循环变量增值;循环变量增值; end end endendfor语句比语句比while语句简约!语句简约!3.8 3.8 循环语句循环语句 例例 用用forfor语句描画的语句描画的7 7人投票表决器:假设超越人投票表决器:假设超越4 4人含人含4 4人投赞成票,人投赞成票,那么表决经过。那么表决经过。module

25、vote7 ( pass,vote ); output pass; input 6:0 vote; reg2:0 sum; /sum为为reg型变量,用于统计赞成的人数型变量,用于统计赞成的人数 integer i; reg pass; always (vote) begin sum = 0; /sum初值为初值为0 for(i = 0;i=3d4) 3.8 3.8 循环语句循环语句voter7.vwf超越超越4人赞成人赞成,那么那么pass=1 用用forfor语句描画语句描画1111人投票表决器:假设超人投票表决器:假设超越越6 6人含人含6 6人投赞成票,那么表决人投赞成票,那么表决经过。经过。3.8 3.8 循环语句循环语句 例例 用用forfor语句初始化语句初始化memorymemory。注:当执行语句有多条时,可注:当执行语句有多条时,可用用begin_end语句将其括起来!语句将其括起来!begin:init_mem reg7:0 tempi; /存储器的地址变量存储器的地址变量 for(tempi =

温馨提示

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

评论

0/150

提交评论