module top;
wire d7,d6,d5,d4,d3,d2,d1,d0,g,a2,a1,a0;
system_clock #200 clock1(g);
system_clock #100 clock2(a2);
system_clock #50 clock3(a1);
system_clock #25 clock3(a0);
decoder_3to8 xxx(d7,d6,d5,d4,d3,d2,d1,d0,g,a2,a1,a0);
endmodule
module decoder_3to8(d7,d6,d5,d4,d3,d2,d1,d0,g,a2,a1,a0);
input g,a2,a1,a0;
output d7,d6,d5,d4,d3,d2,d1,d0;
reg d7,d6,d5,d4,d3,d2,d1,d0;
always@(g)
begin
if(g==1'b0)
begin
case({a2,a1,a0})
3'b000:
begin
d7=1;d6=1;d5=1;d4=1;d3=1;d2=1;d1=1;d0=0;
end
3'b001:
begin
d7=1;d6=1;d5=1;d4=1;d3=1;d2=1;d1=0;d0=1;
end
3'b010:
begin
d7=1;d6=1;d5=1;d4=1;d3=1;d2=0;d1=1;d0=1;
end
3'b011:
begin
d7=1;d6=1;d5=1;d4=1;d3=0;d2=1;d1=1;d0=1;
end
3'b100:
begin
d7=1;d6=1;d5=1;d4=0;d3=1;d2=1;d1=1;d0=1;
end
3'b101:
begin
d7=1;d6=1;d5=0;d4=1;d3=1;d2=1;d1=1;d0=1;
end
3'b110:
begin
d7=1;d6=0;d5=1;d4=1;d3=1;d2=1;d1=1;d0=1;
end
3'b111:
begin
d7=0;d6=1;d5=1;d4=1;d3=1;d2=1;d1=1;d0=1;
end
endcase
end
else
begin
d7=1;d6=1;d5=1;d4=1;d3=1;d2=1;d1=1;d0=1;
end
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
沒有留言:
張貼留言