Verilog关键词的多分支语句实例详解

2023-12-05 0 326
目录

关键词:case,选择器case 语句casex/casez 语句

关键词:case,选择器

case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题。

case 语句

case 语句格式如下:

case(case_expr)
condition1 : true_statement1 ;
condition2 : true_statement2 ;
……
default : default_statement ;
endcase

case 语句执行时,如果 condition1 为真,则执行 true_statement1 ; 如果 condition1 为假,condition2 为真,则执行 true_statement2;依次类推。如果各个 condition 都不为真,则执行 default_statement 语句。

default 语句是可选的,且在一个 case 语句中不能有多个 default 语句。

条件选项可以有多个,不仅限于 condition1、condition2 等,而且这些条件选项不要求互斥。虽然这些条件选项是并发比较的,但执行效果是谁在前且条件为真谁被执行。

ture_statement1 等执行语句可以是一条语句,也可以是多条。如果是多条执行语句,则需要用 begin 与 end 关键字进行说明。

case 语句支持嵌套使用。

下面用 case 语句代替 if 语句实现了一个 4 路选择器的功能。仿真结果与 testbench 可参考条件语句一章,两者完全一致。

module mux4to1(
input [1:0] sel ,
input [1:0] p0 ,
input [1:0] p1 ,
input [1:0] p2 ,
input [1:0] p3 ,
output [1:0] sout);
reg [1:0] sout_t ;
always @(*)
case(sel)
2\’b00: begin
sout_t = p0 ;
end
2\’b01: sout_t = p1 ;
2\’b10: sout_t = p2 ;
default: sout_t = p3 ;
endcase
assign sout = sout_t ;
endmodule

case 语句中的条件选项表单式不必都是常量,也可以是 x 值或 z 值。

当多个条件选项下需要执行相同的语句时,多个条件选项可以用逗号分开,放在同一个语句块的候选项中。

但是 case 语句中的 x 或 z 的比较逻辑是不可综合的,所以一般不建议在 case 语句中使用 x 或 z 作为比较值。

例如,对 4 路选择器的 case 语句进行扩展,举例如下:

case(sel)
2\’b00: sout_t = p0 ;
2\’b01: sout_t = p1 ;
2\’b10: sout_t = p2 ;
2\’b11: sout_t = p3 ;
2\’bx0, 2\’bx1, 2\’bxz, 2\’bxx, 2\’b0x, 2\’b1x, 2\’bzx :
sout_t = 2\’bxx ;
2\’bz0, 2\’bz1, 2\’bzz, 2\’b0z, 2\’b1z :
sout_t = 2\’bzz ;
default: $display(\”Unexpected input control!!!\”);
endcase

casex/casez 语句

casex、 casez 语句是 case 语句的变形,用来表示条件选项中的无关项。

casex 用 "x" 来表示无关值,casez 用问号 "?" 来表示无关值。

两者的实现的功能是完全一致的,语法与 case 语句也完全一致。

但是 casex、casez 一般是不可综合的,多用于仿真。

例如用 casez 语句来实现一个 4bit 控制端的 4 路选择选择器。

module mux4to1(
input [3:0] sel ,
input [1:0] p0 ,
input [1:0] p1 ,
input [1:0] p2 ,
input [1:0] p3 ,
output [1:0] sout);
reg [1:0] sout_t ;
always @(*)
casez(sel)
4\’b???1: sout_t = p0 ;
4\’b??1?: sout_t = p1 ;
4\’b?1??: sout_t = p2 ;
4\’b1???: sout_t = p3 ;
default: sout_t = 2\’b0 ;
endcase
assign sout = sout_t ;
endmodule

以上就是Verilog关键词的多分支语句实例详解的详细内容,更多关于Verilog关键词多分支语句的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:Verilog语言数据类型基础教程Verilog语言表达式基本使用Verilog  8 种编译指令使用详解Verilog关键词的条件语句实例详解Verilog语言关键字模块例化实例讲解Verilog语言的循环语句示例详解Verilog设计方法及流程详解

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 其它脚本 Verilog关键词的多分支语句实例详解 https://www.u-9.cn/jiaoben/qita-jiaoben/101945.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务