VVC 发表于 2010-6-26 01:30:45

在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并不能被一般的综合工具接受,因此是否这样的赋初值方法就是不可靠的?

longt 发表于 2010-6-26 02:42:14

有同样困惑,等待高人解答<br>
<br>
我现在遇到这种问题,一般都是把需要赋初值的变量放在一个always语句块中,然后由reset信号触发,进行赋值<br>
<br>
等待高人解答!

tim 发表于 2010-6-26 02:56:54

reg&nbsp; &nbsp;addr= 8'h03;<br>
可以这样等效:<br>
reg&nbsp; &nbsp;addr;<br>
assign&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;addr = 8'h03;<br>
<br>
最好以后面的方式写代码,呵呵

CHA 发表于 2010-6-26 04:45:16

其實二樓大大&nbsp;&nbsp;說的方法比較正確&nbsp;&nbsp;也比較容易被綜合器所接受&nbsp; &nbsp;<br>
一般的case 我也是都交給 always 區塊&nbsp;&nbsp;內的 reset信號來賦初值

FFT 发表于 2010-6-26 06:32:11

放always中吧~

HANG 发表于 2010-6-26 07:55:11

三楼,你那样的写法犯了最基本的语法错误!

CHANG 发表于 2010-6-26 08:32:20

原帖由 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
:) :) :)

usd 发表于 2010-6-26 09:04:53

怎样的初值都不可综合。只可以仿真。#3.4都说得对了

longtim 发表于 2010-6-26 10:52:33

写在always块中reset=0时(复位状态)给reg赋值一个初值<br>
reset=1时(工作状态)再对reg赋值进行操作<br>
<br>
一般模块刚开始都是复位状态,这不就相当于赋初值了么?<br>
<br>
assign a=1&lsquo;b1;<br>
a只能是wire(input,output,inout也算)型的,不能使reg型的。

longtime 发表于 2010-6-26 11:54:30

原帖由 efly 于 2007-5-31 22:06 发表
       
        http://www.edacn.net/bbs/images/common/back.gif

<br>
三楼,你那样的写法犯了最基本的语法错误! Verilog-2000是可以这样写的
页: [1] 2
查看完整版本: 在verilog的变量定义的时候是否就可以直接赋初值?