在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4075|回复: 4

[求助] 如何用FPGA捕捉低频脉冲信号

[复制链接]
发表于 2013-5-2 17:22:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
RT输入是一个只有100HZ左右的低频脉冲信号,要求输出一个和此脉冲信号相同的脉冲信号,占空比可调,要求精度在1ns以内。
现在FPGA经过PLL倍频出来的信号也就250Mhz,老板说可以四个不同相位的信号来捕捉这个信号,phase delay刚好是1ns。
现在比较头大,因为以前没做过,而且是用actel的器件,我也不是太熟,不知道从何入手,想请高人指点一二了。
 楼主| 发表于 2013-5-3 13:18:44 | 显示全部楼层
期待大神出现
发表于 2013-5-3 15:46:57 | 显示全部楼层
我的理解是这样的;你这个PLL输出的时钟周期是4ns,用四个相位的话各个时钟之间的相位延迟恰好是1ns。可以满足精度是1ns的需求。
发表于 2013-5-3 18:29:00 | 显示全部楼层
使用两时钟,一个PLL直接输出clk1,一个PLL偏移90度输出clk2,这两时钟属于同一个输入时钟的派生时钟,算同源。
使用clk1将输入的脉冲以双沿打两拍,sig1_d1, sig1_d2,采到脉冲上升沿时取sig1_d2,下降沿时取sig_d1, 输出为sig1_out
使用clk2将输入的脉冲以双沿打两拍,sig2_d1, sig2_d2,不管上升下降沿都取sig2_d2,得到sig2_out
然后输出信号将两信号取或output = sig1_out | sig2_out

说明:以同一个时钟上下沿取数,这样就可以将四个信号减少一半为两信号,最后的输出只能为组合逻辑,不能为寄存器输出。这两信号比较时,其中快的信号先从0变1时,就是要选择的输出信号的上升开始;快的信号由1变0时,就是输出信号的下降开始,这样直接&或|都不方便操作,所以我将sig1_out的下降时刻提前半个周期,然后再作|操作就可以了。
 楼主| 发表于 2013-5-5 22:28:19 | 显示全部楼层
本帖最后由 pontiff 于 2013-5-5 22:33 编辑

先谢谢楼上的回复了。
你的意思是不是这样的:
input sig //待测低频信号
always @ (posedge clk1)
begin
sig1_d1 <= sig;
sig1_d2 <= sig1_d1;

if (sig1 == 1'b1 && sig_d2 == 1'b2)          //pos edge   
        sig1_out<=sig1_d2;
        else if(sig1 == 1'b0 && sig_d2 == 1'b1)  //neg edge
                  sig1_out<=sig1_d1;
end

always @ (posedge clk2)
begin
sig2_d1 <= sig;
sig2_d2 <= sig2_d1;
sig2_out<=sig_d2;
end

assign output = sig1_out | sig2_out;

output就是待测信号由0变1的信号;问题是这个output还不是我需要的输出。
我想输出的信号是脉冲宽度和相位都可编程的信号,这个sig信号相当于是个触发信号,输出信号要求精度1ns.
请教一下,我可以用这个output信号,再用系统的时钟信号来计数已达到相位和脉冲宽度可调的目的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-23 17:59 , Processed in 0.025907 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表