Verilog 主模块内的模块实例化

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

义务:我是Verilog的新手。 我有两个独立的工作verilog模块:一个nios ii ADC和一个计数器模块。 nios ii控制的ADC qsys在主模块中正确实例化。我也尝试在主模块内实例化计数器。Quartus不会抛出错误,但计数器应该输出的输出上不会出现任何错误。 主要模块代码如下:

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的顶部模块中没有变量。一旦我创建了这些变量并在实例化中连接它们,输出就会正确地显示出来。