weixin_73261029 2024-12-24 16:03 采纳率: 0%
浏览 187

[VRFC 10-426] cannot find port resetn on this module

[VRFC 10-426] cannot find port resetn on this module vivado仿真过程出现这个报错,查询半天无果,下面贴了top

`timescale 1ns / 1ps
module top(sys_clk);
  // 系统端口
  input sys_clk;
  // 内部变量
  reg sys_rstn; // 系统复位
  wire clk_100M; // 100MHz时钟
  reg [15:0] rstn_cnt = 16'd0; // 复位计数器
  (*mark_debug = "true"*)wire signed [15:0] sine_val_1M; // 1MHz正弦波
  (*mark_debug = "true"*)wire signed [15:0] square_val_1M; // 1MHz方波
  (*mark_debug = "true"*)wire signed [15:0] triangle_val_1M; // 1MHz三角波
  (*mark_debug = "true"*)wire signed [15:0] sine_val_15M; // 15MHz正弦波
  (*mark_debug = "true"*)wire signed [15:0] square_val_15M; // 15MHz方波
  (*mark_debug = "true"*)wire signed [15:0] triangle_val_15M; // 15MHz三角波
  (*mark_debug = "true"*)wire signed [15:0] sine_val_mixed; // 15MHz正弦波
  (*mark_debug = "true"*)wire signed [15:0] square_val_mixed; // 15MHz方波
  (*mark_debug = "true"*)wire signed [15:0] triangle_val_mixed; // 15MHz三角波
  (*mark_debug = "true"*)wire signed [63:0] filtered_sine_val_1M; // 滤波后1MHz正弦波
  (*mark_debug = "true"*)wire signed [63:0] filtered_square_val_1M; // 滤波后1MHz方波
  (*mark_debug = "true"*)wire signed [63:0] filtered_triangle_val_1M; // 滤波后1MHz三角波
  (*mark_debug = "true"*)wire signed [63:0] filtered_sine_val_mixed; // 滤波后混合频率正弦波
  (*mark_debug = "true"*)wire signed [63:0] filtered_square_val_mixed; // 滤波后混合频率方波
  (*mark_debug = "true"*)wire signed [63:0] filtered_triangle_val_mixed; // 滤波后混合频率三角波
  // 参数定义
  parameter [15:0] RST_COUNT = 25_000; // 复位1ms
  parameter [15:0] sine_frequency_1M = 16'd1000; // 正弦波频率,以kHz为单位
  parameter [15:0] square_frequency_1M = 16'd1000; // 方波频率,以kHz为单位
  parameter [15:0] triangle_frequency_1M = 16'd1000; // 三角波频率,以kHz为单位
  parameter [15:0] sine_frequency_15M = 16'd15_000; // 正弦波频率,以kHz为单位
  parameter [15:0] square_frequency_15M = 16'd15_000; // 方波频率,以kHz为单位
  parameter [15:0] triangle_frequency_15M = 16'd15_000; // 三角波频率,以kHz为单位
  // 系统复位
  always@(posedge sys_clk)begin
  if(rstn_cnt <= RST_COUNT)begin
  rstn_cnt <= rstn_cnt + 1;
  sys_rstn <= 1'b0;
  end
  else begin
  rstn_cnt <= rstn_cnt;
  sys_rstn <= 1'b1;
  end
  end
  // 例化时钟模块
  clk_wiz_0 u0_clk_wiz_0(
  .resetn(sys_rstn),
  .clk_in1(sys_clk),
  .clk_out1(clk_100M)
  );
  // 例化波形生成模块
  waveform_generate u1_waveform_generate(
  .sys_clk(sys_clk),
  .sys_rstn(sys_rstn),
  .clk_100M(clk_100M),
  .sine_frequency(sine_frequency_1M),
  .sine_val(sine_val_1M),
  .square_frequency(square_frequency_1M),
  .square_val(square_val_1M),
  .triangle_frequency(triangle_frequency_1M),
  .triangle_val(triangle_val_1M)
  );
  // 例化滤波器模块
  fir_filter u2_fir_filter_sine(
  .sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(sine_val_1M),
  .result(filtered_sine_val_1M)
  );
  fir_filter u3_fir_filter_square(
  .sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(square_val_1M),
  .result(filtered_square_val_1M)
  );
  fir_filter u4_fir_filter_triangle(
  .sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(triangle_val_1M),
  .result(filtered_triangle_val_1M)
  );
  // 例化高频的波形生成模块
  waveform_generate u5_waveform_generate(
  .sys_clk(sys_clk),
  .sys_rstn(sys_rstn),
  .clk_100M(clk_100M),
  .sine_frequency(sine_frequency_15M),
  .sine_val(sine_val_15M),
  .square_frequency(square_frequency_15M),
  .square_val(square_val_15M),
  .triangle_frequency(triangle_frequency_15M),
  .triangle_val(triangle_val_15M)
  );
  // 信号叠加,权重为各0.5,均只叠加正弦波模拟加性调制过程
  assign sine_val_mixed = (sine_val_15M >>> 1) + (sine_val_1M >>> 1);
  assign square_val_mixed = (sine_val_15M >>> 1) + (square_val_1M >>> 1);
  assign triangle_val_mixed = (sine_val_15M >>> 1) + (triangle_val_1M >>> 1);
  // 例化滤波器模块
  fir_filter u6_fir_filter_sine(
  .sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(sine_val_mixed),
  .result(filtered_sine_val_mixed)
  );
  fir_filter u7_fir_filter_square(
  .sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(square_val_mixed),
  .result(filtered_square_val_mixed)
  );
  fir_filter u8_fir_filter_triangle(.sys_clk(clk_100M),
  .sys_rstn(sys_rstn),
  .signal(triangle_val_mixed),
  .result(filtered_triangle_val_mixed)
  );
endmodule

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-12-24 19:33
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据报错信息 [VRFC 10-426] cannot find port resetn on this module,我们可以看到在顶层模块中没有定义名为 resetn 的端口。因此,需要在顶层模块中添加 resetn 端口,并在实例化其他模块时将该端口连接。 以下是修改后的代码示例:
    module top(
        input sys_clk,
        input resetn // 添加 resetn 端口
    );
    reg sys_rstn;
    wire clk_100M;
    reg [15:0] rstn_cnt = 16'd0;
    // 其他信号定义省略...
    always @(posedge sys_clk) begin
        if (rstn_cnt <= RST_COUNT) begin
            rstn_cnt <= rstn_cnt + 1;
            sys_rstn <= 1'b0;
        end else begin
            rstn_cnt <= rstn_cnt;
            sys_rstn <= 1'b1;
        end
    end
    // 实例化其他模块时将 resetn 端口连接
    // 例:u0_clk_wiz_0 中添加 .resetn(resetn)
    // 其他模块实例化同理
    endmodule
    

    在该示例中,我们添加了名为 resetn 的端口,并在顶层模块中也做了相应的连接。这样应该能解决报错信息中提到的端口找不到的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月24日