linux下verilog功能验证,Verilog 条件语句介绍
导读
条件(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 条件语句介绍相关推荐
- linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令
Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...
- Linux下 ASLR功能与 -no-pie 选项说明
一. Linux下ASLR功能 1. ASLR 技术介绍 ASLR 技术是一种针对缓冲区溢出的安全保护技术. ASLR,全称为 Address Space Layout Randomzati ...
- 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 # ...
- linux内核vrrp配置,在Linux下的(VRRP)虚拟路由冗余协议介绍(转)
在Linux下的(VRRP)虚拟路由冗余协议介绍(转)[@more@] 这篇文章描述的是如何在Linux下实现VRRP (Virtual Router Redundancy Protocol 虚拟路由 ...
- [转]Linux下pppoe配合Drcom插件上网方法介绍......
Linux下pppoe配合Drcom插件上网方法介绍 近几天在西邮bbs上闲逛,无意间注意到很多人纠结于同一个问题---linux上网,众所周知,linux系统在宿舍上网时比较烦人的一件事,虽然bbs ...
- oracle tcpdump生成bpf,[20140212]linux下使用tcpdump抓取sql语句
[20140212]linu下使用tcpdump抓取sql语句.txt 我们生产系统问题多多,经常要跟踪用户执行的sql语句,当出现问题时要跟踪比较麻烦,我需要一个快捷的方式"看到" ...
- python 判断等于0_Python 条件语句介绍
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tr ...
- python和sqlserver应用_Windows和Linux下使用Python访问SqlServer的方法介绍
经常用Python写demo来验证方案的可行性,最近遇到了Python访问SqlServer的问题,这里总结下. 一.Windows下配置Python访问Sqlserver 环境:Windows 7 ...
- Linux下密码凭证窃取技巧和工具介绍
当获得一台主机的root权限,我们总是会想办法通过收集各种密码凭证,以便继续扩大战果.Linux下的环境,相对比更纯粹一些,介绍几个比较常见的技巧和工具. 关键词:凭证窃取.口令收集.密码抓取.密码嗅 ...
- Linux下多功能编辑器,Linux下的编辑器——vi大全
xp 交换两个字符位置 ddp 上下两行调换 J 上下两行合并 dG 删除所有行 d$ 从当前位置删除到行尾 y$ 从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了 :ab string s ...
最新文章
- java教务系统类设计_基于Java EE体系的高校教务管理系统的设计开发
- Python 模块初始化的时候,发生了什么?
- MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
- 老赖整治升级,不还钱直接扣微信钱包!
- 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
- 蓝桥杯2015初赛-奖券数目-枚举
- 集合框架(用LinkedList实现栈结构的集合代码)
- MySQL客户端连接被频繁杀掉,企业案例(一):由于mysql sleep线程过多小故障
- SQL Server 2005 Express数据库为“只读”
- Google Earth Engine——Landsat (数据介绍)GEE数据到底是否满足几何和辐射校正?
- (附源码)计算机毕业设计SSM久宠宠物店管理系统
- flutter ios打包_Flutter 的Android 、iOS 打包
- 推荐效果线上评测:AB测试平台的设计与实现
- PCB板材的基本分类
- 手游人类一败涂地联机一直连接服务器,人类一败涂地手游怎么联机
- word-wrap控制长单词或URL地址换行
- Yapi远程命令执行漏洞
- 前沿|十位顶级大咖为您把脉容器技术大势
- python——实现鼠标与键盘监听与事件处理
- No row with the given identifier exists 的原因和解决方法
热门文章
- Mac端SVN工具CornerStone详解
- HDU 2544 最短路 Dijkstra
- TensorFlow 1.0已死,TensorFlow 2.0万岁
- MySQL错误ERROR 1786 (HY000)解决
- 关于android输入框被键盘遮挡的问题
- PostgreSQL and MySQL lock compare ext.
- PHP网站安装程序制作的原理、步骤、注意事项和示例代码
- 分布式缓存MemcacheHelper
- poj 3074(DLX)
- 【10g中db_recovery_file_dest和log_archive_dest参数的关系】