欢迎来到天天文库
浏览记录
ID:39494262
大小:233.00 KB
页数:58页
时间:2019-07-04
《条件语句、循环语句》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章条件语句、循环语句、块语句与生成语句15.1条件语句(if_else语句)if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。VerilogHDL语言提供了三种形式的if语句。2(1)if(表达式)语句例如:if(a>b)out1<=int1;(2)if(表达式)语句1else语句2例如:if(a>b)out1<=int1;elseout1<=int2;3(3)if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;........elseif(表达式m)语句m;else语句n;4注意(书上6点):在
2、if和else后面可以包含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用begin和end这两个关键词将几个语句包含起来成为一个复合块语句。if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,else总是与它上面的最近的if配对。如果if与else的数目不一样,为了实现程序设计者的企图,可以用begin_end块语句来确定配对关系。5if(index>0)for(scani=0;scani0)begin$display("...");mem
3、ory[scani]=0;endelse/*WRONG*/$display("error-indexiszero");尽管程序设计者把else写在与第一个if(外层if)同一列上,希望与第一个if对应,但实际上else是与第二个if对应,因为它们相距最近。6正确的写法应当是这样的:if(index>0)beginfor(scani=0;scani0)begin$display("...");memory[scani]=0;endendelse/*WRONG*/$display("error-indexi
4、szero");7modulecounter16(q,clk);output[3:0]q;inputclk;reg[3:0]q;always@(posedgeclk)q<=q+1'b1;endmodule一位16进制计数器8modulecounter16b(q,clk,clr);output[3:0]q;inputclk,clr;reg[3:0]q=4'b0000;//ModelSim仿真用,QuartusII不用初值always@(posedgeclkorposedgeclr)beginif(clr)q<=4'b0000;elseq<=q+1'b1;endendmodule一
5、位16进制计数器,增加清零端9modulecounter10b(q,clk,clr);output[3:0]q;inputclk,clr;reg[3:0]q=4'b0000;//ModelSim仿真用,QuartusII不用初值always@(posedgeclkorposedgeclr)beginif(clr)q<=4'b0000;elsebeginif(q==4'b1001)q<=4'b0000;elseq<=q+1'b1;endendendmodule10modulecounter10c(q,c,clk,clr);output[3:0]q;outputc;inputclk
6、,clr;reg[3:0]q=4'b0000;//ModelSim仿真用,QuartusII不用初值regc=1'b0;11always@(posedgeclkorposedgeclr)beginif(clr)beginq<=4'b0000;c<=1'b0;endelse12beginif(q==4'b1000)beginq<=q+1'b1;c<=1'b1;endelseif(q==4'b1001)beginq<=4'b0000;c<=1'b0;endelsebeginq<=q+1'b1;c<=1'b0;endendendendmodule13case语句case语句是一种多分
7、支选择语句,if语句只有两个分支可供选择,而实际问题中常常需要用到多分支选择,Verilog语言提供的case语句直接处理多分支选择。它的一般形式如下:1)case(表达式)endcase2)casez(表达式)endcase3)casex(表达式)endcasecase分支项的一般格式如下:分支表达式:语句缺省项(default项):语句14case括弧内的表达式称为控制表达式,case分支项中的表达式称为分支表达式。控制表达式通常表示
此文档下载收益归作者所有