wq_601840968 发表于 2015-6-11 09:43:37

cpld如何对输入的光电信号进行去抖?

如题:cpld需要对光电信号进行计数,但是信号有抖动,可以通过程序去掉吗?

zxq6 发表于 2015-6-11 09:52:53

本帖最后由 zxq6 于 2015-6-11 09:54 编辑

这个是时序逻辑,用fpga比较好,可以判断脉冲宽度,用cpld,很占资源。

y595906642 发表于 2015-6-11 10:17:38

施密特触发器

3DA502 发表于 2015-6-11 14:24:31

低通滤波器   数字的那种

Y = (S1 | S2 |S3)

NJ8888 发表于 2015-6-11 22:18:26

要是正交两相就没问题,RC或软件滤波都难兼顾极低频率到相对高频的大动态。

wq_601840968 发表于 2015-6-15 07:45:50

zxq6 发表于 2015-6-11 09:52
这个是时序逻辑,用fpga比较好,可以判断脉冲宽度,用cpld,很占资源。

判断脉冲宽度是用延时的方法么

wq_601840968 发表于 2015-6-15 07:46:24

y595906642 发表于 2015-6-11 10:17
施密特触发器

用cpld如何搭建施密特触发器

wq_601840968 发表于 2015-6-15 07:46:58

3DA502 发表于 2015-6-11 14:24
低通滤波器   数字的那种

Y = (S1 | S2 |S3)

不大明白 Y=(S1|S2|S3)公式的意思

wq_601840968 发表于 2015-6-15 07:47:30

NJ8888 发表于 2015-6-11 22:18
要是正交两相就没问题,RC或软件滤波都难兼顾极低频率到相对高频的大动态。 ...

现在输入就一路光电信号

zxq6 发表于 2015-6-15 09:11:17

wq_601840968 发表于 2015-6-15 07:45
判断脉冲宽度是用延时的方法么

常规使用的方法,计数。

3DA502 发表于 2015-6-15 10:29:28

wq_601840968 发表于 2015-6-15 07:46
不大明白 Y=(S1|S2|S3)公式的意思

module glitchfilter(clk,in,out)
input clk,in;
output out
reg s1,s2,s3;

always@(posedge clk) begin

s1 <= in;
s2 <= s1;
s3 <= s2;
end

assign out = s1 | s2 | s3;

endmodule

zaldy30 发表于 2015-6-24 11:44:48

3DA502 发表于 2015-6-15 10:29
module glitchfilter(clk,in,out)
input clk,in;
output out


输入高电平信号是否应改为
assign out = s1 & s2 & s3;



页: [1]
查看完整版本: cpld如何对输入的光电信号进行去抖?