verilog仿真的时钟问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog仿真的时钟问题相关的知识,希望对你有一定的参考价值。

`timescale 1 us/ 1 us

parameter PERIOD = 4;

always
begin
语句1:clock<=#(PERIOD/2) ~clock;
语句2:#(PERIOD/2) clock<= ~clock;
end
请问,语句1和语句2有什么区别么?
请不要告诉我没有区别!因为我用modelsim仿真的时候,使用语句2就正确。而是用语句1导致memory space不足。。。
我是4G内存,仿真个100us,不可能不足吧。。。
求高手指点。。。

语句1的意思是在A时刻计算等号右边的值,再在A+PERIOD/2赋值给目标变量,语句2则是在A+PERIOD/2时刻计算右边的值并赋值给变量。比如C= #10 A+B;是在0时刻计算A+B的值,后在10时刻更新C的值为A+B,而“#10 C=A+B”是在10时刻计算A+B的值并更新至C;两个语句本身都没有问题,造成报错的原因可能是其他语句里有冲突。追问

其它语句的确没问题,我只修改了这一个地方,直接就把内存跑爆了,仿真一个128字节的RAM而已,内存没这么容易爆吧?我之前50M的时钟跑了40多分钟,电脑都没问题。。。
这次一个笔误将这个延时放在语句内延时,作为时钟信号,果断内存爆了。。。

参考技术A 提示这种错误应该不是语句的问题,而且你只仿真100us,不会超出此范围的 参考技术B 。。 参考技术C 建议你把所有us 改成ns,试试

以上是关于verilog仿真的时钟问题的主要内容,如果未能解决你的问题,请参考以下文章

用verilog 如何写vga 显示时钟

verilog中除法运算在modelsim仿真中只要一个时钟周期就能完成,实际上也是这样吗?

verilog 实现一个时钟

基于FPGA的数字时钟verilog开发

verilog的timescale问题请教

verilog之简单时钟信号的编写