我完全不习惯使用Verilog,我一直习惯使用VHDL。 为了试图理解,我在互联网上查找了一些代码,并发现了以下关于我认为是函数的声明,而且我根本不理解。
sext #(.inwidth(1), .outwidth(32)) scc_sext_i0(
.i0(paw_0_i0_outport0[32]),
.o0(scc_sext_i0_o0));
combine2_wn #(.inwidth0(32), .inwidth1(32)) scc_combine2_wn_i0(
.i0(paw_0_i0_outport0[31 : 0]),
.i1(scc_sext_i0_o0),
.o0(scc_combine2_wn_i0_o0));
combine2_wn #(.inwidth0(32), .inwidth1(32)) scc_combine2_wn_i1(
.i0(scc_combine2_wn_i2_o0[31 : 0]),
.i1(scc_combine2_wn_i2_o0[63 : 32]),
.o0(scc_combine2_wn_i1_o0));
我的问题如下:
更一般地说,这些是什么类型的连接函数?
感谢您的时间。
答案 0 :(得分:4)
这些很可能是模块实例化,而不是函数调用。
你应该在Verilog搜索路径的某个地方的文件中声明一个名为sext
的模块和另一个名为combine2_wn
的模块。
#()
表示您要为指定模块中的parameter
分配值。
inwidth
模块中有一个名为sext
的参数。您为其指定值为1。
网上有很多参考资料。查看verilog wiki站点,例如: