在Verilog语言中#是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/27 21:05:21
在Verilog语言中#是什么意思?

前仿真用的,无法综合的。
例如:#5 data_in = data_tmp;
就是延迟5个时间单位后,在进行复制。
具体延迟多少,得看你的 timescale
`timescale n/n
根据这个来看你具体延迟的时间

这得分情况的,如果出现在赋值语句前面或者中间,表示延时,比如:
#5 variable1 = xxxx;
varibale2 = #6 xxxx;

如果出现在模块实例化的时候,既可以表示延时,又可以表示对模块内部parameter的重新赋值,比如:
对于门电路,表示延时:Nand #(3,4) nand1(a,b,c)->输入a,b各延时3和4个单位
对于一般模块,表示对parameter的重新复制,如:
你定义了而一个子模块:
module sub_module(clk,rst,....);
parameter WIDTH=8;
parameter ADDR=5;
.....
...
endmodule

然后在一个顶层模块中实例化sub_module,但是你要改变sub_module中定义的parameter值,可以这样:
sub_module #(32,6) U1(clk,rst.....);
这样的话,WIDTH和ADDR就分别为32和6了

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
#1 a=1;#表延迟,延迟一个时间单位后执行a=1;语句
#1 b=1; 延迟一个时间单位后执行b=1;语句

前仿真用的,无法综合的。
for(i=1;i++;)
{#5 a=!a} 5个时间单位后a去反就实现了a的数据的定义,就不用在仿真的时候手动设定波形了。

表示时延的意思,例如 #3表示延迟3个单位时间,#0表示延迟0个时间单位