Verilog 在原语输出连接中获取错误必须是标量变量或网络
我是一个使用HDL的初学者,并用Verilog制作了几个基本模块。今天,在Verilog中创建一个项目时,我在第5行遇到了一个奇怪的错误: 基元输出连接必须是标量变量或网络 我不知道怎么解决这个问题 我尝试将缓冲模块更改为Verilog 在原语输出连接中获取错误必须是标量变量或网络,verilog,Verilog,我是一个使用HDL的初学者,并用Verilog制作了几个基本模块。今天,在Verilog中创建一个项目时,我在第5行遇到了一个奇怪的错误: 基元输出连接必须是标量变量或网络 我不知道怎么解决这个问题 我尝试将缓冲模块更改为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]); bu
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
模拟未运行,因此会出现此错误。Verilog内置原语被分成多个组,每个组具有特定数量的输入和输出端口
具有一个输出和多个输入和nand或nor xor xnor
和buf
具有多个输出和一个输入not
buf(输出,输出,输出,…输入)代码>
因此,xor实例必须是xor(输出、输入、输入、输入…)代码>
你可以看到你的p2(B[5:7],A[2:4])代码>不遵循此规则,因为您有三个输入:A[2:4]
作为旁注:通常从高到低索引向量:B[13:8]
,也从高到零:输入[31:0]值,
。您所做的没有错,但如果您的代码必须与已建立的代码一起工作,则会使生活更加困难 还需要注意的是,每个位必须用逗号分隔。这是非法的:buf(B[3:5],A[2])代码>。但是,这是合法的:buf(B[3],B[4],B[5],A[2])代码>。