Verilog 主模块内的模块实例化
义务:我是Verilog的新手。 我有两个独立的工作verilog模块:一个nios ii ADC和一个计数器模块。 nios ii控制的ADC qsys在主模块中正确实例化。我也尝试在主模块内实例化计数器。Quartus不会抛出错误,但计数器应该输出的输出上不会出现任何错误。 主要模块代码如下:Verilog 主模块内的模块实例化,verilog,quartus,Verilog,Quartus,义务:我是Verilog的新手。 我有两个独立的工作verilog模块:一个nios ii ADC和一个计数器模块。 nios ii控制的ADC qsys在主模块中正确实例化。我也尝试在主模块内实例化计数器。Quartus不会抛出错误,但计数器应该输出的输出上不会出现任何错误。 主要模块代码如下: module niosADCv2( input CLOCK, input ADC1IN1, // Voltage Level 2.5 V input AD
module niosADCv2(
input CLOCK,
input ADC1IN1, // Voltage Level 2.5 V
input ADC1IN2, // Voltage Level 2.5 V
input RESET_N // Voltage Level 2.5 V
);
niosADCv2_qsys u0 (
.clk_clk (CLOCK), // clk.clk
.reset_reset_n (RESET_N) // reset.reset_n
);
verilog_counter verilog_counter_c0(
.CLOCK (CLOCK),
.usec (usec),
.nsec (nsec)
);
endmodule
在单独的verilog文件中是我的verliog_计数器模块:
module verilog_counter(CLOCK, usec, nsec);
input CLOCK;
output reg [7:0] usec;
output reg [5:0] nsec; //counts by 20nsecs (50MHz clock)
wire CLOCK;
always @ (posedge CLOCK)
if (nsec == 6'b110001) begin //if count is 49 (980ns)
nsec <= 7'b0; //reset 20nsec count
usec <= usec + 7'b1; //incriment usec count
end
else nsec <= nsec + 8'b1; //if a usec not reached, incriment 20ns counter
endmodule
模块verilog_计数器(时钟、usec、nsec);
输入时钟;
输出寄存器[7:0]usec;
输出寄存器[5:0]nsec//按20N秒计数(50MHz时钟)
线钟;
始终@(posedge时钟)
如果(nsec==6'b110001)开始//如果计数为49(980ns)
nsec您应该在顶部模块中添加usec和nsec声明。比如
reg [7:0] usec;
reg [5:0] nsec;
并将文件verilog_counter.v添加到项目中。感谢您的帮助,我最终解决了这个问题。我在连接到nsec和usec的顶部模块中没有变量。一旦我创建了这些变量并在实例化中连接它们,输出就会正确地显示出来。