设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间13 现在时间13 缓存数据 到现在一共是295天,有了人生中第一张迷你专辑,我期许自己这不会是句号,只会是个逗号,会一直一直一直突破的,直到我唱不动的那天。

到现在一共是295天,有了人生中第一张迷你专辑,我期许自己这不会是句号,只会是个逗号,会一直一直一直突破的,直到我唱不动的那天。 -- 一种原谅

查看: 1928|回复: 4

Verilog关键词的条件语句实例详解

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:226
  • 打卡月天数:0
  • 打卡总奖励:3531
  • 最近打卡:2025-03-07 17:30:26
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
419
主题
383
精华
0
金钱
4783
积分
858
注册时间
2023-1-8
最后登录
2025-3-13

发表于 2023-4-12 12:03:29 | 显示全部楼层 |阅读模式
关键词:if,选择器


条件语句

条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。
条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。
条件语句使用结构说明如下:
  1. if (condition1)       true_statement1 ;
  2. else if (condition2)        true_statement2 ;
  3. else if (condition3)        true_statement3 ;
  4. else                      default_statement ;
复制代码

  • if 语句执行时,如果 condition1 为真,则执行 true_statement1 ;如果 condition1 为假,condition2 为真,则执行 true_statement2;依次类推。
  • else if 与 else 结构可以省略,即可以只有一个 if 条件判断和一组执行语句 ture_statement1 就可以构成一个执行过程。
  • else if 可以叠加多个,不仅限于 1 或 2 个。
  • ture_statement1 等执行语句可以是一条语句,也可以是多条。如果是多条执行语句,则需要用 begin 与 end 关键字进行说明。
下面代码实现了一个 4 路选择器的功能。
  1. module mux4to1(
  2.     input [1:0]     sel ,
  3.     input [1:0]     p0 ,
  4.     input [1:0]     p1 ,
  5.     input [1:0]     p2 ,
  6.     input [1:0]     p3 ,
  7.     output [1:0]    sout);
  8.     reg [1:0]     sout_t ;
  9.     always @(*) begin
  10.         if (sel == 2'b00)
  11.             sout_t = p0 ;
  12.         else if (sel == 2'b01)
  13.             sout_t = p1 ;
  14.         else if (sel == 2'b10)
  15.             sout_t = p2 ;
  16.         else
  17.             sout_t = p3 ;
  18.     end
  19.     assign sout = sout_t ;

  20. endmodule
复制代码
testbench 代码如下:
  1. `timescale 1ns/1ns
  2. module test ;
  3.     reg [1:0]    sel ;
  4.     wire [1:0]   sout ;
  5.     initial begin
  6.         sel       = 0 ;
  7.         #10 sel   = 3 ;
  8.         #10 sel   = 1 ;
  9.         #10 sel   = 0 ;
  10.         #10 sel   = 2 ;
  11.     end
  12.     mux4to1 u_mux4to1 (
  13.         .sel    (sel),
  14.         .p0     (2'b00),        //path0 are assigned to 0
  15.         .p1     (2'b01),        //path1 are assigned to 1
  16.         .p2     (2'b10),        //path2 are assigned to 2
  17.         .p3     (2'b11),        //path3 are assigned to 3
  18.         .sout   (sout));
  19.    //finish the simulation
  20.     always begin
  21.         #100;
  22.         if ($time >= 1000) $finish ;
  23.     end
  24. endmodule
复制代码
仿真结果如下。
由图可知,输出信号与选择信号、输入信号的状态是相匹配的。
130453tn35z9ftvmlv5al4.jpeg

事例中 if 条件每次执行的语句只有一条,没有使用 begin 与 end 关键字。但如果是 if-if-else 的形式,即便执行语句只有一条,不使用 begin 与 end 关键字也会引起歧义。
例如下面代码,虽然格式上加以区分,但是 else 对应哪一个 if 条件,是有歧义的。
  1. if(en)
  2.     if(sel == 2'b1)
  3.         sout = p1s ;
  4.     else
  5.         sout = p0 ;
复制代码
当然,编译器一般按照就近原则,使 else 与最近的一个 if(例子中第二个 if)相对应。
但显然这样的写法是不规范且不安全的。
所以条件语句中加入 begin 与 and 关键字就是一个很好的习惯。
例如上述代码稍作修改,就不会再有书写上的歧义。
  1. if(en) begin
  2.     if(sel == 2'b1) begin
  3.         sout = p1s ;
  4.     end
  5.     else begin
  6.         sout = p0 ;
  7.     end
  8. end
复制代码
以上就是Verilog关键词的多条件语句实例详解的详细内容,更多关于Verilog关键词条件语句的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2024-1-24 00:39:09 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
13
积分
6
注册时间
2022-12-25
最后登录
2022-12-25

发表于 2024-10-25 05:04:22 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
19
积分
18
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2024-11-5 00:02:49 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-4-20 19:26:01 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表