Verilog基本输出连接中出现错误,必须是标量var或net

时间:2019-09-14 06:44:49

标签: verilog

我是使用HDL的初学者,并且已经在Verilog中制作了几个基本模块。今天,今天,在Verilog中创建我的项目时,在第5行出现了这个奇怪的错误,内容为:“原始输出连接必须是标量var或net”。我不知道如何解决这个问题。

我尝试将缓冲区模块更改为xor模块,但未发现任何更改。

module decoder(A, B);
    input[1:32] A;
    output[1:38] B;
    buf p1(B[3:3], A[1:1]);
    buf p2(B[5:7], A[2:4]);
    buf p3(B[9:15], A[5:11]);
    buf p4(B[17:31], A[12:26]);
    buf p5(B[33:38], A[27:32]);
    xor u1(B[1], A[3], A[5], A[7], A[9], A[11], A[13], A[15], A[17], A[19], A[21], A[23], A[25], A[27], A[29], A[31]);
    xor u2(B[2], A[3], A[6], A[7], A[10], A[11], A[14], A[15], A[18], A[19], A[22], A[23], A[26], A[27], A[30], A[31]);
    xor u3(B[4], A[5], A[6], A[7], A[12], A[13], A[14], A[15], A[20], A[21], A[22], A[23], A[28], A[29], A[30], A[31]);
    xor u4(B[8], A[9], A[10], A[11], A[12], A[13], A[14], A[15], A[24], A[25], A[26], A[27], A[28], A[29], A[30], A[31]);
    xor u5(B[16], A[17], A[18], A[19], A[20], A[21], A[22], A[23], A[24], A[25], A[26], A[27], A[28], A[29], A[30], A[31]);
    xor u6(B[32], 0, A[32]);
endmodule

模拟未运行并显示此错误。

1 个答案:

答案 0 :(得分:1)

Verilog内置原语分为几组,每组都有特定数量的输入和输出端口。

  • and nand or nor xor xnor具有一个输出和多个输入。
  • bufnot具有多个输出和一个输入。

(还有更多类型,如启用门和通过门,但让我们暂时将其保留)

因此buf实例必须为buf <name> (output, output, output,... input);
  因此,xor实例必须为xor<name> (output, input, input, input ...);

您会看到p2(B[5:7], A[2:4]);不遵循此规则,因为您有以下三个输入:A [2:4]。

请注意:习惯上是将向量从高到低:B[13:8]索引,也从高到零:input [31:0] value,。您所做的是没错,但是如果您的代码必须与已建立的代码一起使用,则会使工作变得更加困难。