星期四, 12月 28, 2006
星期二, 12月 26, 2006
星期二, 12月 12, 2006
1212第二階段
module top;
reg a,b,c,d;
wire a1,b1,c1,d1,f1,f2,f3,f4,f5,F;
nand q1(a1,a,a);
nand q2(b1,b,b);
nand q3(c1,c,c);
nand q4(d1,d,d);
nand q7(f1,a,b1,c);
nand q8(f2,a,c,d1);
nand q9(f3,a1,c1);
nand q10(f4,a1,b,c,d);
nand q6(f5,f4,f1,f2,f3);
nand q5(F,f5,f5,f5,f5);
initial
begin
a=0;b=0;c=0;d=0;
#1000 $finish;
end
always
#200 a=~a;
always
#100 b=~b;
always
#50 c=~c;
always
#25 d=~d;
endmodule
module top;
reg a,b,c,d;
wire a1,b1,c1,d1,f1,f2,f3,f4,f5,F;
nand #3 q1(a1,a,a);
nand #3 q2(b1,b,b);
nand #3 q3(c1,c,c);
nand #3 q4(d1,d,d);
nand #3 q7(f1,a,b1,c);
nand #3 q8(f2,a,c,d1);
nand #3 q9(f3,a1,c1);
nand #3 q10(f4,a1,b,c,d);
nand #3 q10(f4,a1,b,d);//去掉0_hazard
nand #3 q6(f5,f4,f1,f2,f3);
nand #3 q5(F,f5,f5,f5,f5);
initial
begin
a=0;b=1;c=0;d=1;
#1000 $finish;
end
always
#50 c=~c;
endmodule
星期二, 12月 05, 2006
星期二, 11月 21, 2006
星期一, 11月 20, 2006
11/20 第一階段測試結果
星期二, 10月 31, 2006
1031 上課程式
module top(a,b,c,f);
input a,b,c;
output f;
wire f1,f2,f3,f4,f5;
and #10 h1(f1,a,c);
not #10 h2(f2,c);
and #10 h3(f3,b,f2);
not #30 h4(f4,f2);
or #10 h5(f5,f3,f1);
and #10 h6(f,f5,f4);
endmodule
========================================
module testbench;
reg a,b,c;
wire f;
top a1(a,b,c,f);
initial
begin
#0 c=1; a=1;b=1;
#100 c=0;
#1000 $stop;
end
endmodule
星期二, 10月 24, 2006
1024 三輸入一輸出尋找危障
使用老師上課程式加上課本尋找危障的多工器程式組合而成.使用SynaptiCAD執行
module top;
wire a,b,c;
reg C_bar,F0,F1,F2,F3,F;
system_clock #100 clock1(a);
system_clock #100 clock2(b);
system_clock #50 clock3(c);
always
begin
#3 F0=a&c;
#3 C_bar=~c;
#3 F1=b&C_bar;
#3 F=F1|F0;
#3 F2=a&b;
#3 F3=F0|F1|F2;
end
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial
clk=0;
always
begin#(PERIOD/2) clk=~clk;
#(PERIOD-PERIOD/2) clk=~clk;
end
always @ (posedge clk)
if ($time >1000)
#(PERIOD-1) $stop;
endmodule
將a與b的輸入都相同,只有在控制線c會改變,出來的F應與a,b輸入相同
圖中的F出現危障,經過修改以後,輸出值F3並不會出現危障
下圖F為多工器產生的危障,F3為修改過後正確的值
module top;
wire a,b,c;
reg C_bar,F0,F1,F2,F3,F;
system_clock #100 clock1(a);
system_clock #100 clock2(b);
system_clock #50 clock3(c);
always
begin
#3 F0=a&c;
#3 C_bar=~c;
#3 F1=b&C_bar;
#3 F=F1|F0;
#3 F2=a&b;
#3 F3=F0|F1|F2;
end
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial
clk=0;
always
begin#(PERIOD/2) clk=~clk;
#(PERIOD-PERIOD/2) clk=~clk;
end
always @ (posedge clk)
if ($time >1000)
#(PERIOD-1) $stop;
endmodule
將a與b的輸入都相同,只有在控制線c會改變,出來的F應與a,b輸入相同
圖中的F出現危障,經過修改以後,輸出值F3並不會出現危障
下圖F為多工器產生的危障,F3為修改過後正確的值
星期日, 10月 22, 2006
星期二, 10月 03, 2006
星期二, 9月 26, 2006
verilog作業-半加器
訂閱:
文章 (Atom)