verilog中assign和[email protected](*)的区别和值得注意

verilog描述组合逻辑一般常用的有两种:assign赋值语句和[email protected](*)语句。两者之间的差别有:

1. 被assign赋值的信号定义为wire型,被[email protected](*)结构块下的信号定义为reg型,值得注意的是,这里的reg并不是一个真正的触发器,只有敏感列表为上升沿触发的写法才会综合为触发器,在仿真时才具有触发器的特性。

2. 另外一个区别则是更细微的差别:举个例子,

wire a;

reg b;

assign a = 1‘b0;

[email protected](*)

b = 1‘b0;

在这种情况下,做仿真时a将会正常为0, 但是b却是不定态。这是为什么?verilog规定,[email protected](*)中的*是指该always块内的所有输入信号的变化为敏感列表,也就是仿真时只有当[email protected](*)块内的输入信号产生变化,该块内描述的信号才会产生变化,而像[email protected](*) b = 1‘b0;

这种写法由于1‘b0一直没有变化,所以b的信号状态一直没有改变,由于b是组合逻辑输出,所以复位时没有明确的值(不定态),而又因为[email protected](*)块内没有敏感信号变化,因此b的信号状态一直保持为不定态。事实上该语句的综合结果有可能跟assign一样(本人没有去尝试),但是在功能仿真时就差之千里了。

时间: 2024-11-07 22:01:44

verilog中assign和[email protected](*)的区别和值得注意的相关文章

shell script中的$*和[email protected]

在shell script中,$*和[email protected]都是获取所有的命令行参数,但是这两者在使用的过程中会有细微的差别,差别主要是在有没有使用双引号,即是直接使用$*,[email protected],还是使用"$*","[email protected]". 直接使用$*,[email protected] #!/bin/bash count=1 for param in $*;do echo "\$* Parameter #$coun

【转】linux中shell变量$#,[email protected],$0,$1,$2的含义解释

原文网址:http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况

$*和[email protected]之间区别代码分析

#!/bin/bash set 'apple pie' pears peaches for i in $*           /*单引号被去掉,循环单个字符输出*/ do echo $i done [[email protected] Ex_14.02-14.31]# sh 14-14-1 apple pie pears peaches -------------------------------------------------------------- #!/bin/bash set

linux中shell变量$#,[email protected],$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&qu

$* 和[email protected]的区别

1 概述 $* 和[email protected]在有加双引号和没有双引号的情况下有明显的区别,在这边用一个实验进行测试 实验的环境如下 为了让实验结果更加明确,在参数里多了一个被双引号引用的参数,而且双引号内里也有多个数值,如下 运行语句 ./varnu.sh a b "12 66 a1c" 99 参数为  a b "12 66 a1c" 99 2 实验 2.1 $* 和 [email protected]没有双引号 $* 和 [email protected]

inux中shell变量$#,[email protected],$0,$1,$2的含义

转自:http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以

shell脚本中的$# $0 [email protected] $* $$ $! $?的意义

转载自:http://www.cnblogs.com/davygeek/p/5670212.html 今天学写脚本遇到一些变量不认识,在此做下记录. 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 [email protected] 传递给脚本或函数的所有参数.被双引号(" ")包含时,与 $* 稍有不同 $? 上个命令的退出状

【Shell】linux中shell变量$#,[email protected],$0,$1,$2的含义解释 && set 关键字使用

linux中shell变量$#,[email protected],$0,$1,$2的含义解释 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定

linux中shell变量$#,[email protected],$0,$1,$2的含义

#!/bin/bash #Created by ley on 2014-11-14 #Testing the Paramters echo  "The compleate list is %s\n" "$$" echo  "The compleate list is %s\n" "$!" echo  "The compleate list is %s\n" "$?" echo  &quo