Verilog关键词的多分支语句怎么实现 |
您所在的位置:网站首页 › verilog仿真结果全是x › Verilog关键词的多分支语句怎么实现 |
Verilog关键词的多分支语句怎么实现
发布时间:2023-04-11 14:56:53
来源:亿速云
阅读:65
作者:iii
栏目:开发技术
今天小编给大家分享一下Verilog关键词的多分支语句怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 关键词:case,选择器case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题。 case 语句case 语句格式如下: case(case_expr) condition1 : true_statement1 ; condition2 : true_statement2 ; …… default : default_statement ; endcasecase 语句执行时,如果 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 ; ; endmodulecase 语句中的条件选项表单式不必都是常量,也可以是 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!!!"); endcasecasex/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编辑利器之Notepad++怎么安装 sublime text3 verilog代码编写的操作示例免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。 verilog 上一篇新闻:Redis常用数据结构哈希表是什么 下一篇新闻:Verilog关键词的条件语句怎么使用 猜你喜欢 enum枚举如何在C语言或和C++11中使用 RedisMQ如何在Asp.net项目中实现 利用PHP怎么给图片添加水印 C#中的arcpy方式怎么利用python.exe实现 利用C# 怎么将TXT文档转换为Table表格 利用原生JS怎么实现一个表单验证功能 利用C#获取对象属性值的方法 利用C#怎么对注册表建获取并指定键值 Action与Func委托怎么在Asp.Net项目中实现 dir函数中python中的使用方法 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |