在FPGA中,如何实现一个时钟信号的可控延时? (用高频50MHZ的时钟去延时一个22KHZ的信号)

22KHZ的一个同步信号,现在需要进行延时,采用FPGA的内部50MHZ时钟取实现... 22KHZ的一个同步信号,现在需要进行延时,采用FPGA的内部50MHZ时钟取实现 展开
 我来答
lcq012345lcq
2012-04-08
知道答主
回答量:15
采纳率:0%
帮助的人:8.1万
展开全部
如果是FPGA的话,建议用PLL把时钟提高。然后用这个信号去采样22kHz的信号,用计数器记录信号电平改变的时间,记录相邻几次的值(总时间大于延迟时间就可以了),然后加上延时,从新计数输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pleiades001
2012-04-07 · TA获得超过436个赞
知道答主
回答量:173
采纳率:0%
帮助的人:123万
展开全部
没细考虑也没验证,仅可做一个基本出发点来参考。mclk=50M,lclk=22k输入,delay_word控制延时字,lclkout=22k延时时钟输出.

module clkdelay (mclk,lclk,delay_word,lclkout);
input mclk,lclk;
input [11:0] delay_word;
ouptut lclkout;
reg lclkout;

reg [11:0] p_c,n_c;
reg hf,lf;

always @(posedge mclk)
begin
if (hf) p_c=p_c+1;
if(p_c>=delay_word) begin lclkout=1; p_c=0; end
if (lf) n_c=n_c+1;
if(n_c>=delay_word) begin lclkout=0; n_c=0; end
end

always @(posedge lclk or negedge lclk)
begin
if (lclk) hf=1;
if(lclkout) hf=0;
if (!lclk) lf=1;
if(!lclkout) hf=0;
end

endmodule

参考资料: i

来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式