verilog有符号变量赋值中如何处理并发进程对同一变量的赋值

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

可以是可以,但不能用<=。因为该reg还没有指定时钟。

还有所有的reg最好在复位的时候用<=赋一下初值。理由:假设你正在开发某设备,在上电状态下你按某按钮复位了下,期望这时的状态跟上电时的状态是一样的。

你先说不可以用<=,后面又让我用<=赋一下初始值,是不是应该用=

可以,verilog2001支持定义的时候直接初始化

也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义,只是对于用于计数更方便而已。reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变量,和实际的硬件电路中的寄存器有区别。

比如给一个3位宽且初始值为000的信号赋值为111,在仿真波形中看到信号是000,100,110,111这样变化的(在很短的时间内变化完,小于半个周期),而不是一次全部变化完的,这样对吗在/usercenter?uid=75a05e79d90c">tigers

仿真波形是没有问题的,你既然做了时序仿真就应该知道和rtl的区别吧?rtl是不考虑延迟的,延迟来自很多种,最直观的一种就是走完一段距离总是会需要一些时间的,虽然你同时对3条线赋值或驱动,但这三条线的长短不同,导致时延不一致。当然,有时延是正常的,但是如果时延超过了一定的范围那就会出问题,这就是静态时序分析里的建立保持时间。

哦,原来是这样啊,谢谢你,还问您一下,时序仿真过程中有什么办法看到内部信号的波形吗
你如果只是看内部信号的话,用modelsim做rtl仿真保证逻辑正确就行了;如果是想看到时延有没有改变逻辑的话,一般没必要通过时序仿真去做,在静态时序分析里面出现报错的时候针对关键路径做优化就足够了。

我要回帖

更多关于 verilog有符号变量赋值 的文章

 

随机推荐