���(3)
皜祈岫璅∠��

(4)蝔�撘�蝣澆��皜祈岫璅∠��銋�隤芣��
1雿������典����券��頛舫��撅文神瘜�
module fulladder_1(a,b,Cin,Sum,Cout);
//璅∠�����蝔勗恐���頝�蝺�頝臬恐��� ��嗡葉module憿�隡劍隤�閮�銋�{
input a,b,Cin;
//頛詨�亦��頝臬恐���
output Sum,Cout;
//頛詨�箇��頝臬恐���
wire d,e,f;
//鞈����������蝺�銋�摰����
xor(d,a,b);
//���頛舫��摰����,頛詨�箇�榛,頛詨�亦�榮,b
and(e,a,b);
//���頛舫��摰����,頛詨�箇�榷,頛詨�亦�榮,b
xor(Sum,d,Cin);
//���頛舫��摰����,頛詨�箇�搴um,頛詨�亦�榛,Cin
and(f,d,Cin);
//���頛舫��摰����,頛詨�箇�榻,頛詨�亦�榛,Cin
or(Cout,f,e);
//���頛舫��摰����,頛詨�箇�慢out,頛詨�亦�榻,e
endmodule
//蝔�撘�蝯���� 憿�隡劍隤�閮�}
1雿������典����刻�����������撅文神瘜�
module fulladder_1(a,b,Cin,Sum,Cout);
//璅∠�����蝔勗恐���頝�蝺�頝臬恐��� ��嗡葉module憿�隡劍隤�閮�銋�{
input a,b,Cin;
//頛詨�亦��頝臬恐���
output Sum,Cout;
//頛詨�箇��頝臬恐���
assign {Cout,Sum}=a+b+Cin;
//assign���摰����餈唬�������箄�����������撅日����萄��,��嗡葉Cout��粹��雿����,Sum��箔��雿����
endmodule
//蝔�撘�蝯���� 憿�隡劍隤�閮�}
1雿������典����券��撅文��撖急��
module fulladder(a,b,Cin,Sum,Cout);
//璅∠�����蝔勗恐���頝�蝺�頝臬恐��� ��嗡葉module憿�隡劍隤�閮�銋�{
input a,b,Cin;
//頛詨�亦��頝臬恐���
output Sum,Cout;
//頛詨�箇��頝臬恐���
wire d,e,f;
//鞈����������蝺�銋�摰����
halfadder h1(a,b,d,e);
//憿�隡劍隤�閮���賢����澆��,��澆�怠�箔�����撅文��������,銝虫����賢����榴1
halfadder h2(d,Cin,Sum,f);
//憿�隡劍隤�閮���賢����澆��,��澆�怠�箔�����撅文��������,銝虫����賢����榴2
or(Cout,f,e);
//���頛舫��摰����,頛詨�箇�慢out,頛詨�亦�榻,e
endmodule
//蝔�撘�蝯���� 憿�隡劍隤�閮�}
module halfadder(a,b,Sum,Cout);
//璅∠�����蝔勗恐���頝�蝺�頝臬恐��� ��嗡葉module憿�隡劍隤�閮�銋�{
input a,b;
//頛詨�亦��頝臬恐���
output Sum,Cout;
//頛詨�箇��頝臬恐���
xor(Sum,a,b);
//���頛舫��摰����,頛詨�箇�搴um,頛詨�亦�榮,b
and(Cout,a,b);
//���頛舫��摰����,頛詨�箇�慢out,頛詨�亦�榮,b
endmodule
//蝔�撘�蝯���� 憿�隡劍隤�閮�}
1雿������典����冽葫閰行芋蝯�
module testbench;
//皜祈岫璅∠�����蝔勗恐���
reg a,b,Cin;
//摰����鞈������������箸�怠����函��頝�,��箔��蝛拙��閮����
wire Sum,Cout;
//摰����鞈������������箔����祉��頝�
fulladder_1 f1(a,b,Cin,Sum,Cout);
//憿�隡劍隤�閮���賢��銋���澆��,銝虫����賢��甇文��瘜���典��蝔梁�榻1
initial
//�����萄��,��嗡�������賣�舀����折��摨�1���1���頛詨��
begin
//憿�隡劍隤�閮�銋�{
#0 a=0;b=0;Cin=0;
//������0 頛詨�亥�����
#5 a=1;b=0;Cin=0;
//������5�����������桐�� 頛詨�亥�����
#5 a=0;b=1;Cin=0;
//���������5�����������桐�� 頛詨�亥�����
#5 a=0;b=0;Cin=1;
#5 a=1;b=1;Cin=0;
#5 a=1;b=0;Cin=1;
#5 a=0;b=1;Cin=1;
#5 a=1;b=1;Cin=1;
#5 $finish;
//皜祈岫蝯�甇Y�����銋�霅���亙��
end
//憿�隡劍隤�閮�銋�}
initial
$monitor($time," a=%d b=%d Cin=%d Sum=%d Cout=%d",a,b,Cin,Sum,Cout);
//憿�隡澆��C隤�閮�printf銋�撌乩�� �����啣�箸�����
endmodule
//蝔�撘�蝯���� 憿�隡劍隤�閮�}
(5)蝯�������閮�隢�
MAX+plus2瘜W�����

silos皜祈岫銋�蝯����

閮�隢�:
��望郭������頝�皜祈岫璅∠��敺���亦�������箸迤蝣�,������靘�摮�靘����,�����舐洵0蝘����頛詨�仟=0,b=0,Cin=0 ���頛詨�箇�搴um=0,Cout=0撠梁�箸迤蝣�,�����搴um=a+b+Cin,0=0+0+0,�����嗡葉Cin��箄撓��乩����脖��,���Cout��箄撓��粹�脖��銋����,��函��撟曄��靘�摮�蝚�5蝘�a=1,b=0,Cin=0,Sum=1+0+0,���銝���∟撓��箔����脖��,���隞兄um=1,Cout=0,蝚�20蝘�Sum=1+1+0甇斗����������脖��������雿�霈����0,���隞兄um=0,Cout=1,蝚�35蝘����Sum=1+1+1甇斗����������脖��������雿�������1,���甇又um=1,Cout=1,隞乩��鈭血�臬����典�冽郭������銝�敺���亦�����甇�蝣漢