2008年12月28日 星期日

11月11日2位元比較器

module top;
wire a,b,c,d;
wire e,f,g;
sclock #200 clock(a);
sclock #100 clock(b);
sclock #50 clock(c);
sclock #25 clock(d);
xxx t(e,f,g,a,b,c,d);
endmodule

module xxx(e,f,g,a,b,c,d);
input a,b,c,d;
ouput e,f,g;
wire w1,w2,w3,w4,w5,w6,w7;
or(e,w1,w2,w3);
nor(f,e,g);
and(g,w4,w5);
and(w1,w6,d);
and(w2,w6,w7.c);
and(w3,w7,c,d);
not(w6,b);
not(w7,a);
xnor(w4,b,d);
xnor(w5,a,c);
endmodule

module sclock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial
clk=0;
always
begin
#(PERIOD/2) clk=~clk;
#(PERIOD/2) clk=~clk;
endalways@(posedge clk)
if($time>1000)#(PERIOD-1)$stop;
endmodule

沒有留言: