Filters123 发表于 2023-5-31 15:01:28

请教:两个不同频率的时钟怎样找到上升沿在同一时刻的那个点

请教:
两个时钟信号,一个19.8MHz,一个20Mhz,占空比都是50%,他俩的相位差一直在变化,怎么通过电路的处理找到两个时钟上升沿对齐的那一刻呢,最好找到后能输出一个高电平,或者用单片机能否检测呢。因为频率比较接近,对齐时有一点偏差也可以,基本对齐就可以。



t3486784401 发表于 2023-5-31 15:01:29

如图,两个上升沿型 D 触发器,互锁存对方时钟。



同步上升沿时,两个锁存结果均为 L,最终或门输出 L (CH3下降尖峰):



我按照 19.8khz, 20khz 仿的, CH3 下降尖峰间隔 5ms(频率 200Hz),与拍频(20kHz-19.8kHz)相符。

然而这都是理论上的,实际这个电路很考验 D 触发器性能,因为 D 与 CLK 同步发生跳转,实际锁存结果可能并不可靠。
若想可靠锁存同步上升沿,可以在两根 D 线上加延迟环节(多级反相器),适当放宽竞争范围。

kitten 发表于 2023-5-31 15:05:30

目测门电路加触发器就可以了

Filters123 发表于 2023-5-31 15:07:28

kitten 发表于 2023-5-31 15:05
目测门电路加触发器就可以了
(引用自2楼)

我感觉也是,只是想来想去没画出具体的图来……

keshipt 发表于 2023-5-31 15:12:26

本帖最后由 keshipt 于 2023-5-31 15:22 编辑

用与门电路取重叠的部分你看看是否可行


智涅 发表于 2023-5-31 15:15:57

微分+与门?

智涅 发表于 2023-5-31 15:20:46

按道理,用两个电容将两个信号进行相加,然后用一个比较器也可以{:titter:}

kitten 发表于 2023-5-31 15:26:05

用异或门,然后异或门的输出高电平的脉宽就是两个信号上升沿的差值,脉宽小于某个值就人为两个上升沿是同步的,想法测这个脉宽就行了。单片机用定时器捕获的方式测量不确定能不能到这么高的速度。

d__xin 发表于 2023-5-31 15:29:24

电容耦合+与门??   数电没咋学早都忘光了

dukelec 发表于 2023-5-31 15:55:47

异或 或其它 数字 运算

输出通过电阻电容滤波成正弦波

mcu 再检测正弦波过零点

andy 发表于 2023-5-31 16:02:31

用(一个与门罗辑电路)就解决问题非常简单。
两个输入高电平就有高电平输出就是这么简单。

???

kitten 发表于 2023-5-31 16:04:44

andy 发表于 2023-5-31 16:02
用(一个与门罗辑电路)就解决问题非常简单。
两个输入高电平就有高电平输出就是这么简单。

(引用自10楼)

你再想想是这么简单么?

Joshua_Astray 发表于 2023-5-31 16:25:14

CD4046,看一下锁相环芯片内部结构怎么设计的就完事{:titter:}

yuyu87 发表于 2023-5-31 17:21:32

与门不就行了?由于有误差,加个电容滤波下就行了。

dellric 发表于 2023-5-31 17:32:57

本帖最后由 dellric 于 2023-5-31 17:33 编辑

写一段VERILOG程序给你, 如果信号fa 和fb 有相同上沿,就输出一个20(可以修改)采样周期的脉冲信号,以便其它设备检测
module syncpulse( clk , fa , fb ,q );
           input clk ;
        input fa;
        input fb;
        output reg q;
        reg sa;
        reg sb;
        reg cnt;
        always@(posedge clk) begin
                sa <= fa;
                sb <= fb;
                if ( sa == 0 && fa == 1 && sb == 0 && fb == 1 ) begin
                        cnt <= 8'd20; // 指示脉冲延迟20个采样时钟
                end
                if ( cnt != 8'd0 ) begin
                        q <= 1;
                        cnt <= cnt - 1'b1;
                end
                else begin
                        q <= 0;
                        cnt <= cnt;
                end
        end
endmodule

andy 发表于 2023-5-31 17:49:41

原来有人喜欢问题简单变作複杂化,
用以下型号单一与门就可简单解决问题了!
MC74VHC1G08DFT2G SOT-353

???

leafstamen 发表于 2023-5-31 18:03:09

与了以后测脉宽?

Arm2048 发表于 2023-5-31 18:03:43

20MHz,周期是50ns,得找更高频率的门电路芯片或者GPIO反转率更高的MCU, 否则能否能降频为10Mhz,5MHz?
异或门,同为0,异为1,只要检测异或门输出高电平的宽度小于某个阈值;
GPIO设置为外部上升沿中断,然后两个中断之间时间间隔小于某个阈值,就认为是上升沿同步了;

Filters123 发表于 2023-5-31 18:47:55

本帖最后由 Filters123 于 2023-5-31 18:58 编辑

keshipt 发表于 2023-5-31 15:12
用与门电路取重叠的部分你看看是否可行
(引用自4楼)

与门与完之后是长度不断变化的高电平,高电平最长的那里可以认为是上升沿对齐了,只是还得再继续想法找出最长的那个脉冲,这个频率下每个脉宽的变化很小,我感觉用单片机去测脉宽不大好测

Filters123 发表于 2023-5-31 19:02:58

dellric 发表于 2023-5-31 17:32
写一段VERILOG程序给你, 如果信号fa 和fb 有相同上沿,就输出一个20(可以修改)采样周期的脉冲信号,以 ...
(引用自15楼)

谢谢{:biggrin:} ,我想最好能用电路处理处理输出个高低电平啥的{:biggrin:}

矩阵时间 发表于 2023-5-31 20:23:40

用分频芯片降低频率,然后用两个引脚做中断,比较一下两次中断的计数器

andy 发表于 2023-5-31 20:43:22

Filters123 发表于 2023-5-31 18:47
与门与完之后是长度不断变化的高电平,高电平最长的那里可以认为是上升沿对齐了,只是还得再继续想法找出 ...
(引用自19楼)

你想完美解决这个问题,
2输入(2个脉冲)异或门罗辑电路输出连接上1个D型触发器(74HCT74)看以下图片连接就可解决了。

???

1a2b3c 发表于 2023-5-31 21:55:19

Filters123 发表于 2023-5-31 18:47
与门与完之后是长度不断变化的高电平,高电平最长的那里可以认为是上升沿对齐了,只是还得再继续想法找出 ...
(引用自19楼)

为啥你认为最宽的就是上升沿对齐?下降眼不行吗???? 而且还完全不一定是边沿对齐!!!
最宽时候只能表示宽脉冲把窄脉冲刚好罩住而已,里面晃动的空间大的很,窄脉冲左右都可以随意晃动,压根不是边沿对齐的情况
自己画个图看看就明白了

dellric 发表于 2023-5-31 22:18:47

本帖最后由 dellric 于 2023-5-31 22:21 编辑

Filters123 发表于 2023-5-31 19:02
谢谢 ,我想最好能用电路处理处理输出个高低电平啥的
(引用自20楼)

整个小CPLD的开发板就OK了

EPM240T100C5 开发板淘宝价格40块

程序里面已经有同步点固定输出N个时钟长度的脉冲功能了

Filters123 发表于 2023-5-31 22:19:58

本帖最后由 Filters123 于 2023-5-31 22:23 编辑

1a2b3c 发表于 2023-5-31 21:55
为啥你认为最宽的就是上升沿对齐?下降眼不行吗???? 而且还完全不一定是边沿对齐!!!
最宽时候只能 ...
(引用自23楼)

这个我知道,因为19.8M和20M很接近了,19.8M的高电平能把20M的高电平全罩住我就接受认为是对齐了,下降沿对齐也一样,能找到下降沿对齐也就找到上升沿对齐了

t3486784401 发表于 2023-5-31 22:23:07

andy 发表于 2023-5-31 20:43
你想完美解决这个问题,
2输入(2个脉冲)异或门罗辑电路输出连接上1个D型触发器(74HCT74)看以下图片连 ...
(引用自22楼)

两个信号(CH1, CH2) XOR 以后类似于 SPWM (CH3),再上个二分频(CH4),确定好用?


Filters123 发表于 2023-6-1 08:44:35

智涅 发表于 2023-5-31 15:20
按道理,用两个电容将两个信号进行相加,然后用一个比较器也可以
(引用自6楼)

能不能详细讲讲怎么弄

1a2b3c 发表于 2023-6-1 09:18:44

Filters123 发表于 2023-5-31 22:19
这个我知道,因为19.8M和20M很接近了,19.8M的高电平能把20M的高电平全罩住我就接受认为是对齐了,下降沿 ...
(引用自25楼)

我晕,你描述问题又不说清楚,如果是要罩住的话就太简单了,你之前非要前沿对齐,那挺麻烦的。

yan2112000 发表于 2023-6-1 09:29:18

12楼的方案是对的,判断上升沿时对方为高,

1a2b3c 发表于 2023-6-1 09:36:26

A代表宽的,B代表窄的。
((A与B)异或B)=0,表示完全被框住,有一点高电平信号就表示没有对齐或者框住
看看是不是嘛,这一点点高电平可以通过再来一级RC扩宽后整形给单片机中断脚了,RC参数根据实际容限情况调整,其它逻辑就自己想了,比如你是想要框住后给个触发信号那就根据你后端逻辑高低处理就好了

yan2112000 发表于 2023-6-1 16:50:50

似乎用一个D触发器就可以的,以19.8Mhz信号为D输入,20Mhz信号为clk输入,输出Q下降沿即为两者的同时的上升沿,并且Q交替输出高低沿,周期为两个输入信号上升沿的重合周期。

wanggoals 发表于 2023-6-1 17:07:25

如果严格同步,用D触发器互相用边缘检测对方的信号是可行的。实际使用在时候可能因为电路延时或者对齐的问题,可能会漏掉些信号。
这个要求如果希望每次靠近都能检测的话,则是鉴相器干的活。

Filters123 发表于 2023-6-1 18:37:20

yan2112000 发表于 2023-6-1 16:50
似乎用一个D触发器就可以的,以19.8Mhz信号为D输入,20Mhz信号为clk输入,输出Q下降沿即为两者的同时的上升 ...
(引用自31楼)

相当于把12楼的方案做简化设计,我准备找个D触发器试试,看看效果怎么样,速度能不能跟上

ziruo2002ab 发表于 2023-6-1 19:06:46

跨时钟域,min. propagation delay time,定位精度,这些都是若想解决问题须具备的重要的设计目标和理念

另外,差频周期5us,你想用单片机去采,有意义吗?

yan2112000 发表于 2023-6-1 21:30:23

Filters123 发表于 2023-6-1 18:37
相当于把12楼的方案做简化设计,我准备找个D触发器试试,看看效果怎么样,速度能不能跟上 ...
(引用自33楼)

没有竞争问题,另外输出是个电平,持续时间长,好采样
页: [1]
查看完整版本: 请教:两个不同频率的时钟怎样找到上升沿在同一时刻的那个点