在verilog的变量定义的时候是否就可以直接赋初值?
本帖最后由 fpgaw 于 2010-6-27 20:25 编辑请问在verilog的变量定义的时候是否就可以直接赋初值?
比如定义了一个reg变量addr
reg
addr = 8'h03;
这样是否会在实现中有用?
我查看了IEEE1364-2001的Page73页中关于“Variable declaration assignment”部分,其介绍是等效与:
reg;
addr;<br>
initial
addr = 8'h03;的,如果这样的话,由于initial并不能被一般的综合工具接受,因此是否这样的赋初值方法就是不可靠的? 有同样困惑,等待高人解答<br>
<br>
我现在遇到这种问题,一般都是把需要赋初值的变量放在一个always语句块中,然后由reset信号触发,进行赋值<br>
<br>
等待高人解答! reg addr= 8'h03;<br>
可以这样等效:<br>
reg addr;<br>
assign addr = 8'h03;<br>
<br>
最好以后面的方式写代码,呵呵 其實二樓大大 說的方法比較正確 也比較容易被綜合器所接受 <br>
一般的case 我也是都交給 always 區塊 內的 reset信號來賦初值 放always中吧~ 三楼,你那样的写法犯了最基本的语法错误! 原帖由 efly 于 2007-5-31 22:06 发表
http://www.edacn.net/bbs/images/common/back.gif
<br>
三楼,你那样的写法犯了最基本的语法错误!
http://bbs.vibesic.com/images/smilies/default/smile.gif
http://bbs.vibesic.com/images/smilies/default/smile.gif
http://bbs.vibesic.com/images/smilies/default/smile.gif
:) :) :) 怎样的初值都不可综合。只可以仿真。#3.4都说得对了 写在always块中reset=0时(复位状态)给reg赋值一个初值<br>
reset=1时(工作状态)再对reg赋值进行操作<br>
<br>
一般模块刚开始都是复位状态,这不就相当于赋初值了么?<br>
<br>
assign a=1‘b1;<br>
a只能是wire(input,output,inout也算)型的,不能使reg型的。 原帖由 efly 于 2007-5-31 22:06 发表
http://www.edacn.net/bbs/images/common/back.gif
<br>
三楼,你那样的写法犯了最基本的语法错误! Verilog-2000是可以这样写的
页:
[1]
2