Vous êtes sur la page 1sur 1

module top(clk0,rst,clk1,clk2,clk3,clk4,clk1b,clk2b,clk3b,clk4b,s,z);

input clk0,rst;
input [1:0]s;
output clk1,clk2,clk3,clk4,clk1b,clk2b,clk3b,clk4b,z;
divide8 a1(clk0,rst,clk1,clk1b,clk2,clk2b,clk3,clk3b,clk4,clk4b);
mux1 a2(clk1,clk2,s[0],x);
mux1 a3(clk3,clk4,s[0],y);
mux1 a4(x,y,s[1],z);
endmodule
module mux1(a,b,s,y);
input a,b,s;
output y;
reg y;
always @(s)
begin
if(!s)
y=a;
else
y=b;
end
endmodule
module divide8(clk,rst,q1,q1b,q2,q2b,q3,q3b,q4,q4b);
input clk,rst;
output q1,q1b,q2,q2b,q3,q3b,q4,q4b;
dff1 a1(clk,rst,q1b,q1,q1b);
dff1 a2(q1,rst,q2b,q2,q2b);
dff1 a3(q2,rst,q3b,q3,q3b);
dff1 a4(q3,rst,q4b,q4,q4b);
endmodule
module dff1(clk,rst,d,q,qb);
input clk,rst,d;
output q,qb;
reg q;
always @(posedge clk)
begin
if(rst)
q=0;
else
q=d;
end
assign qb=~q;
endmodule