一、 设计原理:
1、基本公式: A1 A0 * B1 B0=Y3 Y2 Y1 Y0
2、设计理念: 两位二进制数 A1 A0 和B1 B0 相乘后,结果最高为四位Y3 Y2 Y1 Y0
3、归纳得出:由上式可归纳得出输出的4位二进制数与输入的两位二进制数之间的逻辑,得出下表:
Y0 | A0 B0 |
Y1 | A1 B0 A0 B1 |
Y2 | A1 B1 ( A1 B0 * A0 B1 ) |
Y3 | A1 B1 * ( A1 B0 * A0 B1 ) |
二、 Verilog模块描述:
代码表:
源代码: module multiply(A,B,Y); input[1:0] A,B; output[3:0] Y; and #1 u1(Y[0],A[0],B[0]); and #1 u2(sela,A[1],B[0]); and #1 u3(selb,A[0],B[1]); and #1 u4(selc,A[1],B[1]); and #1 u5(seld,sela,selb); xor #1 u6(Y[1],sela,selb); xor #1 u7(Y[2],seld,selc); and #1 u8(Y[3],seld,selc); endmodule | 测试文件: module multiply_t; reg[1:0]ain,bin; reg clock; wire[3:0]yout; initial begin ain=0;bin=0;clock=0; end always #50 clock=~clock; always@(posedge clock) begin ain={$random}%4; bin={$random}%4; end multiply m(.A(ain),.B(bin),.Y(yout)); endmodule |
仿真图:
仿真图分析: 在 117ns时,ain=01,bin=11,yout=0011;
275ns时,ain=01,bin=01,yout=0001;
375ns时,ain=01,bin=10,yout=0010;
575ns时,ain=10,bin=01,yout=0010;
分析可知 yout=ain*bin 式成立,此逻辑设计可行。
三、 电路设计:
由verilog逻辑代码可作出以下逻辑电路图:
Multisim电路连接图:
逻辑仿真图:
(仿真先自上到下依次为 A1 A0 B1 B0 Y3 Y2 Y1 Y0)
由仿真图分析:8ms时 A1A0*B1B0=11*00=0000
14.4ms时 A1A0*B1B0=11*10=0110
20.8ms时 A1A0*B1B0=01*10=0010
24ms时 A1A0*B1B0=00*00=0000
由仿真图分析可得出此两位二进制乘法器电路设计可行。
(以下电路图及版图均为手绘图,不考虑尺寸宽长比)