|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
- module adder(A,B,Cin,Sum,Cout);
- input A,B,Cin;
- output Sum,Cout;
- wire Sum,Cout;
- wire A,B,Cin;
- wire T1,T2,T3;
- assign Sum = (A^B)^Cin;
- assign T1 = A&Cin;
- assign T2 = B&Cin;
- assign T3 = A&B;
- assign Cout = (T1|T2)|T3;
- endmodule
- module multiplication4_4(a,b,c,clk);
- input [3:0] a,b;
- input clk;
- output [7:0] c;
- wire [7:0] c;
- wire Z = 0;
- wire [15:0] mid;
- wire [5:0] t;
- wire s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10;
- always@(posedge clk)
- begin
- assign c[0]=a[0]&b[0];
- assign mid[1]=a[1]&b[0];
- assign mid[2]=a[2]&b[0];
- assign mid[3]=a[3]&b[0];
- assign mid[4]=a[0]&b[1];
- assign mid[5]=a[1]&b[1];
- assign mid[6]=a[2]&b[1];
- assign mid[7]=a[3]&b[1];
- assign mid[8]=a[0]&b[2];
- assign mid[9]=a[1]&b[2];
- assign mid[10]=a[2]&b[2];
- assign mid[11]=a[3]&b[2];
- assign mid[12]=a[0]&b[3];
- assign mid[13]=a[1]&b[3];
- assign mid[14]=a[2]&b[3];
- assign mid[15]=a[3]&b[3];
- adder ad1(mid[1],mid[4],Z,c[1],s0);
- adder ad2(mid[2],mid[5],Z,t[5],s1);
- adder ad3(mid[3],mid[6],Z,t[4],s2);
- adder ad4(t[5],mid[8],s0,c[2],s3);
- adder ad5(t[4],mid[9],s1,t[3],s4);
- adder ad6(mid[7],mid[10],s2,t[2],s5);
- adder ad7(t[3],mid[12],s3,c[3],s6);
- adder ad8(t[2],mid[13],s4,t[1],s7);
- adder ad9 (mid[11],mid[14],s5,t[0],s8);
- adder ad10 (t[1],Z,s6,c[4],s9);
- adder ad11 (t[0],Z,s7,c[5],s10);
- adder ad12 (mid[15],Z,s8,c[6],c[7]);
- end
- endmodule
复制代码
Modelsim上的报错是“checker 'adder' not found. Instantiation 'ad1' must be of a visible checker”,找不到adder模块,请大家帮我看看是什么问题
还有几个小问题:1.在always中赋值的参数要被定义为reg 型,那我在always中实例化一个加法器,这个加法器的输出也要定义为reg型吗?
2.如果加法器要在always中实例化,加法器模块的输出需要改为reg 型吗? |
|