Professional Documents
Culture Documents
input se,sclk,fclk,si;
output out;
wire p,q,r,s,t,u,v;
upperblock a1(se,reset,sclk,fclk,s);
icg a2(t,s, gated_clk,out);
shift_reg a3(s,sclk,si,se,reset,t);
endmodule
not( a,se);
dff_ p(sclk,a,reset,b);
icg r(b,fclk,gated_clk,c);
endmodule
module dff_(clk,in,reset,q);
input clk,in,reset ;
output reg q;
always@(posedge clk)
begin
if (reset)
begin
q<=0;
end
else
begin
q<= in;
end
end
endmodule
module shift_reg(fclk,sclk,si,se,reset,e);
input fclk,sclk,reset,se,si;
output e;
wire clk,in,q,e1;
wire[n-1:0] w;
parameter n = 3;
and o(in,si,se);
genvar i;
dff_ a (clk,in,reset,w[0]);
generate
for (i=1;i<n;i=i+1)
begin
dff_ b(clk,w[i-1],reset,w[i]);
end
endgenerate
dff_ c(clk,w[n-1],reset,q);
end
endmodule