verilog behavioral modeling--branch statement
conditional statement
case statement
1. conditional statement
if(expression)
statement_or_null[else statement_or_null]
| if_else_if_statement
If the expression evaluates to true(that is ,has a nonzero know value),the first statement shall be executed.
If it evaluates to flase(that is ,has a zero value or the value is x or z) , the first statement shall not execute.
If there is an else statement and expression is false , the else statement shall be executed.
if-else-if construct(mutiway decision statement)
The expression shall be evaluated in order.If any expression is true,the statement associated with it shall be executed,and this shall terminate the whole chain.
Each statement is either a single statement or a block of statement.
2.case statement(multiway decision statement)
The case expression given in parentheses shall be evaluated exactly once and before any of the case item expression.
The case item expressions shall be evaluated and compared in the exactly order in which they are given.
If there is a default case item, it is ignored during this linear search.
During the linear search , if one of the case item shall be executed, and the linear search shall terminate.
If all comparisions fail and the default item is given,then the default item statement shall be executed .
If the default statement is not given and all of the comparision fail, then none of the case item statements shall be executed.
linear search ??
The case statement differs from the multiway if-else-if construct in two important ways:
a) The condition expression in the if-else-if construct are more general than comparing one expression with several others,as in the case statement.
b) The case statement provides a definitive result when there are x and z values in an expression.
In a case expression comparison,the comparison only succeeds when each bit mathes exactly with respect to the valule 0 、 1、x and z.
As a consequence, care is needed in specifying the expression in the case statement.
The bit length of all the expression shall be equal so that exact bitwise matching can be performed.
The length of all the case item expressions as well as the case expression in the parentheses,shall be made equal to the length of the longest case expression and case item expression.
If any of these expression is unsigned , then all of them shall be treated as unsigned.
If all of these expressions are signed, then they shall be treated as signed.
3.casex / casez --dont care
case x --- treats x /z as do-not-care condition
case z ---treats z as do-not-care condition
allows the use of mark(?) in place of z it these case statements(可以用来实现具有优先级的分支选择类似if-else-if)
eg:
reg [7:0] ir;
casez(ir)
8'b1???????:instruction(ir);
8'b01??????:instruction(ir);
8'b001?????:instruction(ir);
8'b0001????:instruction(ir);
8'b00001???:instruction(ir);
endcase
constant expression in case statement(也可以实现priority,觉得相比于 mark(?)实现priority,这个更好 )
reg [2:0] encode;
case(1)
encode[2]: $display("Select line 2");
encode[1]:$display("Select line 1");
encode[0]:$display("Select line 0");
default $display("Error:one of the bits expected ON");
endcase
verilog behavioral modeling--branch statement的更多相关文章
- verilog behavioral modeling --loop statement
1.forever 2.repeat 3.while 4.for The for statement accomplishes the same results as the following ps ...
- verilog behavioral modeling ---Block statements
block statements : 1. sequential block : begin-end block 2.parallel block : fork - join bloc ...
- verilog behavioral modeling --procedural assignments
1.procedural assignments are used for updating reg ,integer , time ,real,realtime and memory data ty ...
- verilog behavioral modeling--overview
1.verilog behavioral models contain procedural statements that control the simulation and manipulate ...
- verilog behaviral modeling -- procedural timing contronls
1.delay control : an expression specifies the time duration between initially encountering the state ...
- verilog behavioral modeling--procedural continous assignment(不用)
assign / deassgin force /release the procedural continuous assignments(using keywords assign and for ...
- verilog behavioral modeling--blocking and nonblocking
BLOCKIN ...
- verilog behavioral modeling--sequential and parallel statements
1.Sequential statement groups the begin-end keywords: .group several statements togethor .cause the ...
- verilog FAQ(zz)
1. What is the race condition in verilog? Ans :The situation when two expressions are allowed to exe ...
随机推荐
- JQuery数组遍历 - $.each(),$().each()和forEach()
- $.each(obj,function(index,value)遍历的学习
JQuery遍历对象 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 洛谷 P1578 奶牛浴场
https://www.luogu.org/problemnew/show/P1578 题解 另外这题有一些小坑,洛谷的题解里面有讲 #pragma GCC optimize("Ofast& ...
- 096 Unique Binary Search Trees 不同的二叉查找树
给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?例如,给出 n = 3,则有 5 种不同形态的二叉查找树: 1 3 3 2 1 ...
- 安装wamp时出现httpd.exe无法找到组件MSVCR100.dll的解决办法
很多朋友在安装wamp server时会出现以下错误,安装之后无法启动httpd.exe服务. --------------------------- httpd.exe - 无法找到组件 ----- ...
- .net 键盘
private void txtGoodsGroup_KeyPress(object sender, KeyPressEventArgs e) { base.OnKeyPress(e); if ((i ...
- babel-loader7和babel8版本的问题
根据官网https://www.npmjs.com/package/babel-loader要对应版本 一.babel7.X版本 1.要安装的包 第1套包:npm i babel-core babe ...
- as 开启代码混淆和混淆规则
app的builde.gradle的文件下,buildTypes节点添加release节点,minifyEnabled属性表示是否开启混淆,proguardFiles表示混淆依赖的文件,具体开启方法如 ...
- GreenDao3.2的使用
原文:http://blog.csdn.net/qq_30379689/article/details/54410838 GreenDao3.2的使用,爱不释手 本篇文章包括以下内容: 前言 Gree ...
- Chisel语言
1 What is Chisel? Chisel(Constructing Hardware In a Scala Embedded Language)是一种嵌入在高级编程语言Scala的硬 ...