2012-05-02 7 views
-1

を合計誰もがここでPGとGGの変数のためのものであるか知っているん:Verilogの4ビットは

module sum(S, Cout,PG,GG,A,B,Cin); 

wire [3:0] G,P,C; 

output [3:0] S; 
output Cout,PG,GG; 
input [3:0] A,B; 
input Cin; 

assign G = A & B; 
assign P = A^B; 
assign C[0] = Cin; 
assign C[1] = G[0] | (P[0] & C[0]); 
assign C[2] = G[1] | (P[1] & G[0]) | (P[1] & P[0] & C[0]); 
assign C[3] = G[2] | (P[2] & G[1]) | (P[2] & P[1] & G[0]) | (P[2] & P[1] & P[0] & C[0]); 
assign Cout = G[3] | (P[3] & G[2]) | (P[3] & P[2] & G[1]) | (P[3] & P[2] & P[1] & G[0]) |(P[3] & P[2] & P[1] & P[0] & C[0]); 

assign S[0] = P[0]^C[0]; 
assign S[1] = P[1]^C[1]; 
assign S[2] = P[2]^C[2]; 
assign S[3] = P[3]^C[3]; 
endmodule 

答えて

3

あなたのコードは、4ビットキャリールックアヘッド加算器ユニットです。 PGおよびGGは、グループ伝播およびグループ生成とすることができる。 PGおよびGGを別のCLA加算器ユニットに与えて、そのようなユニットを結合して上位ビット加算器を形成することができる。彼らはここで

assign PG = P[3] & P[2] & P[1] & P[0];

assign GG = G[3] | P[3] & G[2] | P[3] & P[2] | G[1] | P[3] & P[2] & P[1] & G[0];

詳細として与えられています。 http://en.wikipedia.org/wiki/Lookahead_Carry_Unit#16-bit_adder

0

GGPGは、あなたが示されているコードによって駆動されていないoutputポートです。私は彼らのための使用を考えることができません。モジュール外の階層指定子によって駆動されない限り(これは可能ですが例外ではありません)、その値は常に不明です(x)。

元の設計者がこれらの出力を使用することを意図していた可能性があり、それらを削除するのを忘れたのかもしれません。

関連する問題