题意整理

本题要求根据加法器的逻辑表达式实现该电路,采用门级描述方式。

注意,题目中给出的是总体的逻辑表达式,还需要求出各个位的G  P  Ci。

题解主体

根据题目所给的Ci 逻辑表达式,求出C0 、C1 、C2 、C3 的逻辑表达式如下:

由上述逻辑表达式,可画出超前进位产生电路如下.


进而可画出超前进位加法器电路图如下:


根据电路图和逻辑表达式,将电路转换成Verilog代码描述如下:


and   ad0(ad_o0, P0, C_1),

      ad1(ad_o1, P1, G0 ),

      ad2(ad_o2, P1, P0, C_1),

      ad3(ad_o3, P2, G1 ),

      ad4(ad_o4, P2, P1, G0),

      ad5(ad_o5, P2, P1, P0, C_1),

      ad6(ad_o6, P3, G0 ),

      ad7(ad_o7, P3, P2, G1),

      ad8(ad_o8, P3, P2, P1, G0 ),

      ad9(ad_o9, P3, P2, P1, P0, C_1);

     

or    or0(C0, ad_o0, G0),

      or1(C1, ad_o2, ad_o1, G1),

      or2(C2, ad_o5, ad_o4, ad_o3, G2),

      or3(CO, ad_o9, ad_o8, ad_o7, ad_o6, G3);

     

xor   xr3(P3, A_in[3], B_in[3]),

      xr2(P2, A_in[2], B_in[2]),

      xr1(P1, A_in[1], B_in[1]),

      xr0(P0, A_in[0], B_in[0]);


and   ad10(G3, A_in[3], B_in[3]),

      ad11(G2, A_in[2], B_in[2]),

      ad12(G1, A_in[1], B_in[1]),

      ad13(G0, A_in[0], B_in[0]);

     

xor   xr7(S[3], P3, C2  ),

      xr6(S[2], P2, C1  ),

      xr5(S[1], P1, C0  ),

      xr4(S[0], P0, C_1 );   


关于门级描述方式,需要注意的是


上图实例代码中,1位置表示的是门类型,2位置表示的是门实例名,3位置表示的是门实例输出,4及以后位置表示的是门输入 ,1和2中间还可添加驱动能力和延时参数。

参考答案

`timescale 1ns/1ns

module lca_4(
	input		[3:0]       A_in  ,
	input	    [3:0]		B_in  ,
    input                   C_1   ,
 
 	output	 wire			CO    ,
	output   wire [3:0]	    S
);

and   ad0(ad_o0, P0, C_1),
      ad1(ad_o1, P1, G0 ),
      ad2(ad_o2, P1, P0, C_1),
      ad3(ad_o3, P2, G1 ),
      ad4(ad_o4, P2, P1, G0),
      ad5(ad_o5, P2, P1, P0, C_1),
      ad6(ad_o6, P3, G0 ),
      ad7(ad_o7, P3, P2, G1),
      ad8(ad_o8, P3, P2, P1, G0 ),
      ad9(ad_o9, P3, P2, P1, P0, C_1);
      
or    or0(C0, ad_o0, G0),
      or1(C1, ad_o2, ad_o1, G1),
      or2(C2, ad_o5, ad_o4, ad_o3, G2),
      or3(CO, ad_o9, ad_o8, ad_o7, ad_o6, G3);
      
xor   xr3(P3, A_in[3], B_in[3]),
      xr2(P2, A_in[2], B_in[2]),
      xr1(P1, A_in[1], B_in[1]),
      xr0(P0, A_in[0], B_in[0]);

and   ad10(G3, A_in[3], B_in[3]),
      ad11(G2, A_in[2], B_in[2]),
      ad12(G1, A_in[1], B_in[1]),
      ad13(G0, A_in[0], B_in[0]);
      
xor   xr7(S[3], P3, C2  ),
      xr6(S[2], P2, C1  ),
      xr5(S[1], P1, C0  ),
      xr4(S[0], P0, C_1 );      
endmodule