加分考題目
module top;
wire a,b,c,d,f;
system_clock #400 clock(a);
system_clock #200 clock(b);
system_clock #100 clock(c);
system_clock #50 clock(d);
Unit U1(f,a,b,c,d);
endmodule
module Unit(f,a,b,c,d);
input a,b,c,d;
output f;
wire a1,b1,d1;
wire w1,w2,w3;
not(a1,a);
not(b1,b);
not(d1,d);
and(w1,c,d1);
and(w2,a1,b1,c);
and(w3,a,b,c);
or(f,w1,w2,w3);
endmodule
module system_clock(clk);
parameter PERIOD =100;
output clk; reg clk;
initial
clk=0;
always
begin
#(PERIOD/2)clk=~clk;
#(PERIOD/2)clk=~clk;
end
always@(posedge clk)
if($time>1000) #(PERIOD-1)$stop;
endmodule
wire a,b,c,d,f;
system_clock #400 clock(a);
system_clock #200 clock(b);
system_clock #100 clock(c);
system_clock #50 clock(d);
Unit U1(f,a,b,c,d);
endmodule
module Unit(f,a,b,c,d);
input a,b,c,d;
output f;
wire a1,b1,d1;
wire w1,w2,w3;
not(a1,a);
not(b1,b);
not(d1,d);
and(w1,c,d1);
and(w2,a1,b1,c);
and(w3,a,b,c);
or(f,w1,w2,w3);
endmodule
module system_clock(clk);
parameter PERIOD =100;
output clk; reg clk;
initial
clk=0;
always
begin
#(PERIOD/2)clk=~clk;
#(PERIOD/2)clk=~clk;
end
always@(posedge clk)
if($time>1000) #(PERIOD-1)$stop;
endmodule
完成後 (上圖程式碼)用產生之訊號輸出如圖