我想用verilog实现如图所示的延时!
在5 MHz时钟CLK控制下对同步信号SYNC进行N延时(SYNC脉冲宽度为2 μs,脉冲重复频率为1 kHz;0μs≤N≤998 μs)。要求每次在同步脉冲上升沿到来时开始延时,并在延时结束后产生宽度可调的选通信号。
不晓得哪位能够提供下思路啊,下面是我自己写的一个程序,
module delay ( //input
clk,
sync,
//output
delay );
input clk;
input sync;
output delay;
reg delay_r;
reg [4:0] cnt1;
reg [4:0] cnt2;
reg [4:0] cnt3;
wire dlyen;
reg dly_en;
reg dly_en1;
parameter n=20;
assign dlyen=sync ||dly_en;
//assign delay=(dlyen==0)? 0:1;
always @( posedge clk ) begin
delay_r<=0;
if(dlyen==0)
delay_r<=0;
if (cnt3<n+10) begin
dly_en<=1;
cnt3<=cnt3+1;
end
else begin
dly_en<=0;
cnt3<=0;
end
if(cnt1>=n)
dly_en1<=1;
else
cnt1<=cnt1+1;
if (dly_en1==1) begin
if(cnt2>=10) begin
dly_en1<=0;
cnt1<=0;
cnt2<=0;
end
else
cnt2<=cnt2+1;
end
end
assign delay=delay_r;
endmodule
我自己的程序没有实现延时功能,然后我的程序是参照 http://blog.cec.pandabuying.com/ting123/249045.aspx图3所写的,大家帮我看下有什么问题啊,谢谢了