07 verilog基础语法-条件语句

虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1



一、学习内容

  这节主要学习了条件语句if-ekse和case语句。
在这里插入图片描述


二、条件语句

  条件语句有if-else和case两类,都属于顺序执行语句,都写在always块内。

(1)if-else语句

  • 判定所给条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
  • if-else语句有3种形式,其中“表达式”为逻辑表达式或关系表达式,或一位的变量;若表达式的值为0、或z,则判定的结果为“假”;若为1,则结果为“真”。语句可为单句,也可为多句;多句时一定要用“begin_end”语句括起来,形成一个复合块语句。
//方式1
if(表达式) 语句1;

//方式2
if(表达式) 语句1;
else      语句2;

//方式3
if(表达式1) 				语句1;
else if(表达式2)     语句2;
...
else if(表达式n)     语句n;
  • if语句可以嵌套;若if与else的数目不一样,注意用“begin_end”语句来确定if与else的配对关系!
if(表达式) 
	if(表达式2) 语句1;
	else       语句2;
else
	if(表达式3)  语句3;
	else        语句4;
if (表达式1begin
	if (表达式2)语句1;
end
else begin
	语句2;
	语句3;
end

【例 1】
在这里插入图片描述  在always块内,语句是顺序执行的,always和assign是并发执行的。

(2)case语句

  • 当敏感表达式取不同的值时, 执行不同的语句。
  • 功能:当某个(控制)信号取不同的值时,给另一个(输出)信号赋不同的值。常用于多条件译码电路(如译码器、数据选择器、状态机、微处理器的指令译码)
  • case语句有3种形式:case,casez,casex
case(敏感表达式)
	值1:语句1;2:语句2;
	…
	值n:语句n;
	default: 语句n+1;
endcase

说 明 :

  • 其中“敏感表达式”又称为“控制表达式”,通常表示为控制信号的某些位。
  • 值1~值n称为分支表达式,用控制信号的具体状态值表示,因此又称为常量表达式。
  • default项可有可无,一个case语句里只能有一个default项!
  • 值1~值n必须互不相同,否则矛盾。
  • 值1~值n的位宽必须相等,且与控制表达式的位宽相同。

在这里插入图片描述

  • 在case语句中,分支表达式每一位的值都是确定的(或者为0,或者为1);
  • 在casez语句中,若分支表达式某些位的值为高阻值z,则不考虑对这些位的比较;
  • 在casex语句中,若分支表达式某些位的值为z或不定值x,则不考虑对这些位的比较。
  • 在分支表达式中,可用“?”来标识x或z
    【例 2】用casez描述的数据选择器
module mux_z(out,a,b,c,d,select);
	output out;
	input a,b,c,d;
	input[3:0] select;
	reg out; //必须声明
	
always@ (select[3:0] or a or b or c or d) begin
	casez (select)
		4’b???1: out = a;//?表示高阻态
		4’b??1? : out = b;
		4’b? 1?? : out = c;
		4’b 1??? : out = d;
	endcase
end
endmodule

在这里插入图片描述
  在组合电路中,左图缺少else,会生成锁存器,锁存器不利于时序收敛。避免生成锁存器的原则:如果用到if语句,最好写上else项;如果用到case语句,最好写上default项。


三、思考和小结

(1)思考

  • 【例 3】用case语句实现四选一多路选择器
module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);
	output out;
	input i0, i1, i2, i3;
	input s1, s0;
	reg out;
always @(s1 or s0 or i0 or i1 or i2 or i3) begin
	case ({s1, s0})
		2'b00: out = i0;
		2'b01: out = i1;
		2'b10: out = i2;
		2'b11: out = i3;
		default: out = 1'bx;
	endcase
end
endmodule

(2)小结

在这里插入图片描述


作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlinxdu

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值