Syntax 当它';在verilog中,处理器中的不同模块是相反的吗?

Syntax 当它';在verilog中,处理器中的不同模块是相反的吗?,syntax,verilog,alu,Syntax,Verilog,Alu,模块控制(iw、cntrl、Ra、Rb、Wa); 输入[14:0]iw; 输出寄存器[3:0]cntrl; 输出reg[3:0]Ra; 输出寄存器[3:0]Rb; 输出寄存器[3:0]Wa; 始终@(*) 开始 cntrl=iw[14:12]; Ra=iw[11:8]; Rb=iw[7:4]; Wa=iw[3:0]; 结束 端模 //////////////////////////////////////////// 内存模块(Ra、Rb、Wa、A、B); 输入线[3:0]Ra、Rb、Wa; 输

模块控制(iw、cntrl、Ra、Rb、Wa);
输入[14:0]iw;
输出寄存器[3:0]cntrl;
输出reg[3:0]Ra;
输出寄存器[3:0]Rb;
输出寄存器[3:0]Wa;
始终@(*)
开始
cntrl=iw[14:12];
Ra=iw[11:8];
Rb=iw[7:4];
Wa=iw[3:0];
结束
端模
////////////////////////////////////////////
内存模块(Ra、Rb、Wa、A、B);
输入线[3:0]Ra、Rb、Wa;
输出寄存器[3:0]A,B;
注册[3:0]成员[0:15];
reg数组[3:0][0:15];
始终@(*)
开始
阵列[3:0][0]=4'b0100;
阵列[3:0][1]=4'b1001;
阵列[3:0][2]=4'b0110;
阵列[3:0][3]=4'b0010;
阵列[3:0][4]=4'b0100;
阵列[3:0][5]=4'b1101;
阵列[3:0][6]=4'b0100;
阵列[3:0][7]=4'b0001;
阵列[3:0][8]=4'b0000;
阵列[3:0][9]=4'b1111;
阵列[3:0][10]=4'b1000;
阵列[3:0][11]=4'b1001;
阵列[3:0][12]=4'b1000;
阵列[3:0][13]=4'b1011;
阵列[3:0][14]=4'b1100;
阵列[3:0][15]=4'b1010;
结束
整数my_int1;
始终@(1)
开始
my_int1=Ra;
A[3:0]=数组[3:0][my_int1];
结束
整数my_int2;
始终@(1)
开始
my_int2=Rb;
B[3:0]=数组[3:0][my_int2];
结束
整数my_int3;
始终@(1)
开始
my_int3=Wa;
数组[3:0][my_int3]=C[3:0];
结束
端模
////////////////////////////////////
模块解码器(cntrl[3:0]、加法器、suben、mulen、diven、anden、oren、xoren、noten);
输入[3:0]cntrl;
输出加法器,suben,mulen,diven,anden,oren,xoren,noten;
分配加法=(~a&~b&~c),
苏本=(~a&~b&c),
穆伦=(~a&b&~c),
迪文=(~a&b&c),
安登=(a&~b&~c),
奥伦=(a&b&c),
xoren=(a&b&~c),
注n=(a&b&c);
端模
//////////////////////////////////////////////////
模块算术运算器(输入[3:0]A,
输入加法器,输入子元素,输入子元素,输入子元素,输入子元素,输入anden,输入oren,输入xoren,输入注释,
输入[3:0]B,
输出调节器[7:0]C
);
reg CNTRLIP[7:0];
//导线[3:0]A;
//导线[3:0]B;
分配cntrlinp[0]=加法器,
cntrlinp[1]=suben,
cntrlinp[2]=mulen,cntrlinp[3]=diven,cntrlinp[4]=anden,cntrlinp[5]=oren,cntrlinp[6]=xoren,cntrlinp[7]=noten;
始终@(*)
开始
案例(ctrlinp[7:0])
00000001:C=A+B;
00000010:C=A-B;
00000100:C=A*B;
000011000:C=A/B;
00010000:C=A&B;
00100000:C=A | B;
01000000:C=A^B;
10000000:C=~A;
默认值:C=8'b00000001;
尾声
结束
端模
///////////////////////////////////////////////////////
模块测试台;
reg[14:0]iw;
导线[7:0]C;
ALU控制a1(iw、cntrl、Ra、Rb、Wa);
内存a2(Ra、Rb、Wa、A、B);
alu_arith a3(A、B、C);
解码器a4(cntrl、adden、suben、mulen、diven、anden、oren、xoren、noten);
初始开始
$display(“时间\t A B cntrl C”);
$monitor(“%g\t%b%b%b”,
$time,A,B,cntrl,C);
#0 C=8'b00000000;
iw=15'b101000101011010;
#5 iw=15'B0011001001;
#10 iw=15'B0101011101110;
结束

endmodule
以更简单的方式声明端口:

module alumemory(
  input wire [3:0] Ra, Rb, Wa, 
  output reg [3:0] A,B
);
  reg [3:0]  mem [0:15]; 
  reg array[3:0][0:15];
  ...

我注意到在您的alumemory端口声明中有一个逗号:
input[3:0]Ra,input…
另外,定义端口的方法已经被取代很久了。谢谢,我这样做了,但这并不能解决问题。运行代码仍然会显示大量错误。我怀疑这是由于reg和wire的声明不当造成的。如果你能看一看,我会非常感激的。我已经更新了问题,以包含我编写的完整代码。谢谢正如你刚才提到的,你有很多错误。请开始修复它们,并询问有关您有问题的错误的问题。您询问的问题将通过删除逗号(参见回复原始邮件)或dave的建议来解决。