verilog中#是什么意思?#有什么作用?

在使用verilog语言进行硬件描述时,你是否也经常用到#这个符号,那么你是否关心过这个符号到底是什么意思呢?它的作用是什么呢?

1.可用作参数的传递

`我们在进行verilog编程时经常会遇到如下一样的代码块

module	study_test #(
	parameter c = 12'd169
	)
	(
	input	wire	[11:0]	a,
	output 	wire	[11:0]	b
	)
	assign b = a + c;
endmodule
	

上述的代码块在最开始定义模块时#的作用就是为了将169这个常数在一开始的时候传递给c,是一个参数传递的作用。值得注意的是在例化的时候代码如下

study_test 			study_test #(
	.c (12'd288)
	)
	(
	.a	(a),
	.b	(b)
	)

例化以后的模块用#将200的值传递给c,那么之前定义的169将不会被使用。

2.用于时序仿真中的延时

而在仿真中我们经常又可以看到这样的语句

always #20	clk = ~clk;

在这里的意思是每通过延时20个事件单位后执行clk信号的翻转,因此#还可以表示延时的意思。

以上就是#在verilog中的作用,如果你觉得这篇回答对你有帮助,请帮我点赞收藏加关注,如果有哪些不妥的地方也请评论指正。

你可能感兴趣的:(fpga开发)