使用老師上課程式加上課本尋找危障的多工器程式組合而成.使用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為修改過後正確的值
沒有留言:
張貼留言