集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 14250|回复: 13

在verilog的变量定义的时候是否就可以直接赋初值?

[复制链接]
VVC 发表于 2010-6-26 01:30:45 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-6-27 20:25 编辑

请问在verilog的变量定义的时候是否就可以直接赋初值?
比如定义了一个reg变量addr
reg[7:0]
addr = 8'h03;
这样是否会在实现中有用?
我查看了IEEE1364-2001的Page73页中关于“Variable declaration assignment”部分,其介绍是等效与:
reg[7:0];
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[7:0]&nbsp; &nbsp;addr= 8'h03;<br>
可以这样等效:<br>
reg[7:0]&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 发表
       
       

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

       

       
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 发表
       
       

<br>
三楼,你那样的写法犯了最基本的语法错误! Verilog-2000是可以这样写的
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 17:25 , Processed in 0.069292 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表