星期四, 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

1205:使用SynaptiCAD執行第一階段

將第一階段電路圖的邏輯閘改成NAND閘

使用 SynaptiCAD模擬出來的結果圖

找出0_harzad的波形圖

解決0_hazard的波形圖

星期二, 11月 21, 2006

11/21設定裝置

設定輸出的logic options

點選individual logic options

將turbo bit 取消即可

星期一, 11月 20, 2006

11/20 第一階段測試結果

先從真值表中畫出卡諾圖,右上角的卡諾圖爲了看0-hazard所以沒有畫到最簡,右下角的圖為將0-hazard修改掉的卡諾圖.

下圖為根據真值表所模擬出來的波形圖



下圖為第一個卡諾圖畫出來的電路

下圖為(A,B,C,D)=(0110)<->(1110)可以從圖中看出0-hazard

下圖為將0-hazard去掉的電路圖

從下圖可以看出0-hazard已消失

星期二, 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為修改過後正確的值


星期日, 10月 22, 2006

10/22 多工器危障實現

根據課本的hazard,使用maxpluss II 來執行 ,下圖out為多工器的輸出
,f3為修改過後的輸出

由下圖可看出out有1-hazard,f3是修改過後的值,可看出1-hazard消失了

星期二, 10月 03, 2006

10/03 Verilog 作業

四個1bit的輸入,1bit的輸出,來偵測輸入的位元中若有偶數個1則輸出為1,若有奇數個1輸出則為0.

星期二, 9月 26, 2006

verilog作業-半加器

使用邏輯閘實現加法功能,一位元的A,B相加,會產生總合sum與進位cout.從真值表中可以找出 sum與cout的布林代數,如下圖一.此加法電路為半加器,使用兩個半加器加上一個or閘可變成全加器.從圖一的布林代數可以畫出電路圖,如下圖二.使用MaxPlusII測試波形圖,結果與真值表相 同,MaxPlusII 模擬邏輯電路會有延遲產生,所以在波形圖上會有延遲的現象.

星期二, 9月 19, 2006

Verilog

上課第一天...什麼事都不用做...真輕鬆