±âÃʺÎÅÍ ÀÀ¿ë±îÁö Verilog HDL
- ´ÙÀ½Àº 4ºñÆ® µ¡¼À »¬¼À±âÀÇ ³í¸® ȸ·Î ÀÌ´Ù.
1. À§ÀÇ ³í¸® ȸ·Î¸¦ Gate level modeling ¹æ¹ýÀ» »ç¿ëÇÏ¿© Verilog Äڵ带 ÄÚµùÇϽÿÀ.
Gate level modeling
module Add_Subtraction
input m;
input [3:0] a,b;
output [3:0] s;
output c,v;
wire [4:1] cn ;
wire [3:0] n ;
xor U1(n[0],m,b[0]);
xor U2(n[1],m,b[1]);
xor U3(n[2],m,b[2]);
xor U4(n[3],m,b[3]);
FA U5(s[0],cn[1],a[0],n[0],m);
FA U6(s[1],cn[2],a[1],n[1],cn[1]);
FA U7(s[2],cn[3],a[2],n[2],cn[2]);
FA U8(s[3],cn[4],a[3],n[3],cn[3]);
xor U9(v,cn[4],cn[3]);
buf U10(c,cn[4]);
endmodule
module FA
output s,c;
input a,b,cin;
wire [4:1] n ;
xor U1(n[1],b,cin);
xor U2 (s,a,n[1]);
and U3(n[2],a,cin);
and U4(n[3],b,cin);
and U5(n[4],a,b);
or U6(c,n[2],n[3],n[4]);
endmodule
module FA
output s,c;
input a,b,cin;
wire [4:1] n ;
xor U1(n[1],b,cin);
xor U2 (s,a,n[1]);
and U3(n[2],a,cin);
and U4(n[3],b,cin);
and U5(n[4],a,b);
or U6(c,n[2],n[3],n[4]);
¡¦(»ý·«)
|
n[2]= m ^ b[2];
n[3]= m ^ b[3];
end
always @(cn)
begin
v = cn[4] ^ cn[3];
c = cn[4] ;
end
FA U5(s[0],cn[1],a[0],n[0],m);
FA U6(s[1],cn[2],a[1],n[1],cn[1]);
FA U7(s[2],cn[3],a[2],n[2],cn[2]);
FA U8(s[3],cn[4],a[3],n[3],cn[3]);
endmodule
module FA
output reg s,c;
input a,b,cin;
always @(a,b,cin)
{c,s} = a + b + cin;
endmodule