文中的意思是,只要是复位状态下就把shift_ena置于四个时钟的1.
本题给出了用两个计数器来解决问题的一种思路.
首先定义一个计数器,只要复位状态下,计数器就开始计数,直到复位结束.
在定义一个计数器,也在复位状态下开始计数,当第二个计数器数值比第一个计数器数值大4的时候器件,我们让输出唯一,这样就得到一个延迟四个时钟的输出1.
module top_module (
input clk,
input reset, // Synchronous reset
output shift_ena);
reg [2:0] counter=3'b000;
reg [2:0] count=3'b000;
always@(posedge clk)
if(reset)
counter <= counter +1'b1;
else if(count>0)
counter<=counter;
else
counter<=0;
always@(posedge clk)
if(reset)begin
count<=count+1'b1;
shift_ena <=1'b1;
end
else if(count==counter+3'd4)begin
count<=0;
shift_ena <=1'b0;
end
else begin
count<=count+1'b1;
shift_ena <=shift_ena;
end
endmodule