导读

条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。

关键词:if,选择器

条件语句

条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。

条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。

条件语句使用结构说明如下:

if (condition1) true_statement1 ;

else if (condition2) true_statement2 ;

else if (condition3) true_statement3 ;

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 路选择器的功能。

实例

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 @(*) begin

if (sel == 2'b00)

sout_t = p0 ;

else if (sel == 2'b01)

sout_t = p1 ;

else if (sel == 2'b10)

sout_t = p2 ;

else

sout_t = p3 ;

end

assign sout = sout_t ;

endmodule

testbench 代码如下:

实例

`timescale 1ns/1ns

module test ;

reg [1:0] sel ;

wire [1:0] sout ;

initial begin

sel = 0 ;

#10 sel = 3 ;

#10 sel = 1 ;

#10 sel = 0 ;

#10 sel = 2 ;

end

mux4to1 u_mux4to1 (

.sel (sel),

.p0 (2'b00), //path0 are assigned to 0

.p1 (2'b01), //path1 are assigned to 1

.p2 (2'b10), //path2 are assigned to 2

.p3 (2'b11), //path3 are assigned to 3

.sout (sout));

//finish the simulation

always begin

#100;

if ($time >= 1000) $finish ;

end

endmodule

仿真结果如下。

由图可知,输出信号与选择信号、输入信号的状态是相匹配的。

事例中 if 条件每次执行的语句只有一条,没有使用 begin 与 end 关键字。但如果是 if-if-else 的形式,即便执行语句只有一条,不使用 begin 与 end 关键字也会引起歧义。

例如下面代码,虽然格式上加以区分,但是 else 对应哪一个 if 条件,是有歧义的。

实例

if(en)

if(sel == 2'b1)

sout = p1s ;

else

sout = p0 ;

当然,编译器一般按照就近原则,使 else 与最近的一个 if(例子中第二个 if)相对应。

但显然这样的写法是不规范且不安全的。

所以条件语句中加入 begin 与 and 关键字就是一个很好的习惯。

例如上述代码稍作修改,就不会再有书写上的歧义。

实例

if(en) begin

if(sel == 2'b1) begin

sout = p1s ;

end

else begin

sout = p0 ;

end

end

linux下verilog功能验证,Verilog 条件语句介绍相关推荐

  1. linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...

  2. Linux下 ASLR功能与 -no-pie 选项说明

    一.   Linux下ASLR功能 1.   ASLR 技术介绍 ASLR 技术是一种针对缓冲区溢出的安全保护技术. ASLR,全称为 Address  Space Layout Randomzati ...

  3. linux下telnet批量验证某端口开放

    1.ip库 cat iplist.txt 10.1.1.1 10.1.1.2 10.1.1.3 10.1.1.4 10.1.1.5 2.相关脚本 cat telnet.sh #!/bin/bash # ...

  4. linux内核vrrp配置,在Linux下的(VRRP)虚拟路由冗余协议介绍(转)

    在Linux下的(VRRP)虚拟路由冗余协议介绍(转)[@more@] 这篇文章描述的是如何在Linux下实现VRRP (Virtual Router Redundancy Protocol 虚拟路由 ...

  5. [转]Linux下pppoe配合Drcom插件上网方法介绍......

    Linux下pppoe配合Drcom插件上网方法介绍 近几天在西邮bbs上闲逛,无意间注意到很多人纠结于同一个问题---linux上网,众所周知,linux系统在宿舍上网时比较烦人的一件事,虽然bbs ...

  6. oracle tcpdump生成bpf,[20140212]linux下使用tcpdump抓取sql语句

    [20140212]linu下使用tcpdump抓取sql语句.txt 我们生产系统问题多多,经常要跟踪用户执行的sql语句,当出现问题时要跟踪比较麻烦,我需要一个快捷的方式"看到" ...

  7. python 判断等于0_Python 条件语句介绍

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tr ...

  8. python和sqlserver应用_Windows和Linux下使用Python访问SqlServer的方法介绍

    经常用Python写demo来验证方案的可行性,最近遇到了Python访问SqlServer的问题,这里总结下. 一.Windows下配置Python访问Sqlserver 环境:Windows 7 ...

  9. Linux下密码凭证窃取技巧和工具介绍

    当获得一台主机的root权限,我们总是会想办法通过收集各种密码凭证,以便继续扩大战果.Linux下的环境,相对比更纯粹一些,介绍几个比较常见的技巧和工具. 关键词:凭证窃取.口令收集.密码抓取.密码嗅 ...

  10. Linux下多功能编辑器,Linux下的编辑器——vi大全

    xp 交换两个字符位置 ddp 上下两行调换 J 上下两行合并 dG 删除所有行 d$ 从当前位置删除到行尾 y$ 从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了 :ab string s ...

最新文章

  1. java教务系统类设计_基于Java EE体系的高校教务管理系统的设计开发
  2. Python 模块初始化的时候,发生了什么?
  3. MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
  4. 老赖整治升级,不还钱直接扣微信钱包!
  5. 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
  6. 蓝桥杯2015初赛-奖券数目-枚举
  7. 集合框架(用LinkedList实现栈结构的集合代码)
  8. MySQL客户端连接被频繁杀掉,企业案例(一):由于mysql sleep线程过多小故障
  9. SQL Server 2005 Express数据库为“只读”
  10. Google Earth Engine——Landsat (数据介绍)GEE数据到底是否满足几何和辐射校正?
  11. (附源码)计算机毕业设计SSM久宠宠物店管理系统
  12. flutter ios打包_Flutter 的Android 、iOS 打包
  13. 推荐效果线上评测:AB测试平台的设计与实现
  14. PCB板材的基本分类
  15. 手游人类一败涂地联机一直连接服务器,人类一败涂地手游怎么联机
  16. word-wrap控制长单词或URL地址换行
  17. Yapi远程命令执行漏洞
  18. 前沿|十位顶级大咖为您把脉容器技术大势
  19. python——实现鼠标与键盘监听与事件处理
  20. No row with the given identifier exists 的原因和解决方法

热门文章

  1. Mac端SVN工具CornerStone详解
  2. HDU 2544 最短路 Dijkstra
  3. TensorFlow 1.0已死,TensorFlow 2.0万岁
  4. MySQL错误ERROR 1786 (HY000)解决
  5. 关于android输入框被键盘遮挡的问题
  6. PostgreSQL and MySQL lock compare ext.
  7. PHP网站安装程序制作的原理、步骤、注意事项和示例代码
  8. 分布式缓存MemcacheHelper
  9. poj 3074(DLX)
  10. 【10g中db_recovery_file_dest和log_archive_dest参数的关系】