"Target of concurrent assignment or output port connection should be a net type"

"Target of concurrent assignment or output port connection should be a net type"

在我的 Anvyl 板上尝试将我的代码合成到 运行 时,我 运行 遇到了以下错误:

 ERROR:HDLCompiler:329 - "C:/Users/Chase/Desktop/Code 
 Templates/final_bcd_counter.v" Line 25: Target <digit_1> of concurrent assignment or output port connection should be a net type.

 ERROR:HDLCompiler:329 - "C:/Users/Chase/Desktop/Code 
 Templates/final_bcd_counter.v" Line 26: Target <digit_2> of concurrent assignment or output port connection should be a net type.

我得到了一个 Lab_board.v 文件来驱动板子,如下所示:

`timescale 1ns / 1ps

module lab_board(LED, SW, CLK);

output  [7:0] LED;
input  [7:0] SW;
input CLK;

bcd_count_7 counter( 
.max_count(SW[6:0]), 
.CLK(CLK), 
.run(SW[7]), 
.digit_l(LED[3:0]),
.digit_2(LED[7:4])
); 


endmodule

抛出错误的代码是我的 final_bcd_counter.v 文件,它是将所有需要的值传递给开发板的程序的主要驱动程序。如下:

// This is the top module for the programmable BCD counter.
// It implements a programmable 7-bit counter and a binary-
// to-bcd converter that can output two digits.


module bcd_count_7(max_count, CLK, run, digit_1, digit_2);

  input [6:0] max_count;
  input CLK, run;
  output reg [3:0] digit_1;
  output reg [3:0] digit_2;

  //Wires and registers for interconnect if needed
  wire [6:0] countin_out;

  // Programmable 7-bit counter module
  prog_count_7 counter(.max_count(max_count), 
            .run(run), 
            .CLK(CLK), 
            .count_out(countin_out));

  // Binary-to-BCD Converter for converting count_out to BCD
  binary_bcd_2 bcd_converter(.bin_in(countin_out),
                  .digit_1(digit_1), 
                  .digit_2(digit_2));

endmodule

我试过更改 digit_1 和 digit_2 的类型,但没有成功。解决方案是否可以创建连接到实验室板而不是传递输出寄存器的电线,如果是这样,那会是什么样子?

感谢任何帮助。如果需要,我可以提供程序中其他模块的代码。

谢谢!

您已将 digit_1/2 声明为一个变量,它需要是 Verilog 中的一个网络 我假设这些是您的 binary_bcd_2 模块的输出端口。 SystemVerilog没有这个限制。

只需从端口声明中删除 reg 关键字即可。为了清楚起见,我添加了 wire,但这是隐含的

module bcd_count_7(
  input wire [6:0] max_count,
  input wire CLK, run,
  output wire [3:0] digit_1,
  output wire [3:0] digit_2
);