搜索
bottom↓
回复: 30

CPLD如何实现频率相加?

[复制链接]
(235422927)

出0入0汤圆

发表于 2014-2-18 14:19:42 | 显示全部楼层 |阅读模式
       最近再测试手上一个比较成熟产品的主板,CPLD的输入信号为60M/8192=7.324kHZ,CPLD的时钟为60MHZ,测试输出端竟然为7.5M+7.324k=7.507324MHZ 的频率。
       在CPLD中将主时钟8分频后与这个输入信号频率相加后输出。或是将输入信号做8193倍频后输出。我查了好多相关资料,如数字锁相环,数字倍频等均不能实现这一的输出,请大家帮忙分析一下,谢谢!

本帖子中包含更多资源

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

x
(235415615)

出0入0汤圆

发表于 2014-2-18 16:21:34 | 显示全部楼层
这个很难实现吧,这么高精度的,主振频率应该远远大于60M
(235415169)

出0入0汤圆

 楼主| 发表于 2014-2-18 16:29:00 | 显示全部楼层
是的,楼上说的正是我想的。这么高精度的频率,60M很难实现。7.324kHZ是一个低频输入到CPLD,然后CPLD输出7.5MHZ和7.50732MHZ到混频器混频后输出中频7.324kHZ来实现测量的。
(235414652)

出0入0汤圆

发表于 2014-2-18 16:37:37 | 显示全部楼层
用内置PLL的FPGA能实现你的要求吧
PS:各路大侠请帮忙盖楼啊,求正解
(235413854)

出0入0汤圆

 楼主| 发表于 2014-2-18 16:50:55 | 显示全部楼层
       我在google上搜索了一下,有人也遇到过这样的问题,用FPGA或DDS都能输出这种频率差很小的波形,比如7M与7.001M。
但是这个板子上只用一个CPLD就实现了。真是费解。
(235413844)

出0入0汤圆

发表于 2014-2-18 16:51:05 | 显示全部楼层
不懂帮顶,利用60M时钟通过计数产生7.507324MHZ,肯定不准,但用7.324khz对60M进行校准,不知道是否可以
(235413690)

出0入0汤圆

 楼主| 发表于 2014-2-18 16:53:39 | 显示全部楼层
楼上的想法很独特,不知怎么实现?
据我了解数字锁相环就是利用输入7.324MHZ来校准7.507324MHZ,但是主振频率应该远大于60M可行。可能我对数字锁相环了解的还不够深入。
(235413445)

出0入0汤圆

发表于 2014-2-18 16:57:44 | 显示全部楼层
qiang6091 发表于 2014-2-18 16:53
楼上的想法很独特,不知怎么实现?
据我了解数字锁相环就是利用输入7.324MHZ来校准7.507324MHZ,但是主振频 ...

具体我没研究过,是不是这样的,比方低频7.324kHZ信号做为基准源,来校准60m,在一个7.324kHZ周期
内记录60m(或者60m的几分频)周期个数,可以算出60m的误差,然后对60m进行校准。。。。
嘿嘿,我猜的哈。。。
(235413067)

出0入0汤圆

 楼主| 发表于 2014-2-18 17:04:02 | 显示全部楼层
60MHZ是主振频率,数字锁相环中提到可以在主频中增加脉冲来改变频率或相位,达到频率微调的目的。
(235412487)

出0入0汤圆

 楼主| 发表于 2014-2-18 17:13:42 | 显示全部楼层
我这里有两篇论文可以帮助大家分析。
论文写的很详细,可以实现对低频信号的高精度锁相。

本帖子中包含更多资源

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

x
(235394691)

出0入0汤圆

发表于 2014-2-18 22:10:18 | 显示全部楼层
输入输出波形细节?实现任意输入频率与7.5M相加?
(235353993)

出0入0汤圆

 楼主| 发表于 2014-2-19 09:28:36 | 显示全部楼层
winster321 发表于 2014-2-18 22:10
输入输出波形细节?实现任意输入频率与7.5M相加?

输入波形就是7.324k的方波,输出波形是7.507324MHZ的方波。
(230235345)

出0入4汤圆

发表于 2014-4-19 15:19:24 | 显示全部楼层
希望有后续进展,持续关注!
(230140797)

出0入34汤圆

发表于 2014-4-20 17:35:12 | 显示全部楼层
module cmos_clked
(
        PCLK,
        FQWORD,
        FOUT
);
        input PCLK;
        input [23:0] FQWORD;
        reg [23:0] cnt;
        output reg FOUT;
       
        always @( posedge PCLK ) begin
                cnt <= cnt + FQWORD;
                FOUT <= cnt[23];
        end
endmodule


FQWORD 输入参数为 FW = 16777216 * f/F;
F = 60000000;
f = 你希望输出的频率;
(230138946)

出0入0汤圆

发表于 2014-4-20 18:06:03 | 显示全部楼层
是不是有可能是数字混频混的呢
(230138353)

出0入17汤圆

发表于 2014-4-20 18:15:56 | 显示全部楼层
做一次乘法运算即可
(230049737)

出0入0汤圆

发表于 2014-4-21 18:52:52 | 显示全部楼层
dellric 发表于 2014-4-20 17:35
module cmos_clked
(
        PCLK,

呵呵, 好樣的!
(230044876)

出0入0汤圆

发表于 2014-4-21 20:13:53 | 显示全部楼层
输入的频率是确定的么?那还为什么要有它,直接输出一个7.5xxxx就好了
(230044557)

出0入0汤圆

发表于 2014-4-21 20:19:12 | 显示全部楼层
另外,频率是不可以直接相加的,dds不是一个恒定的频率,而是几个抖动着的频率的平均表现
(21697773)

出0入0汤圆

发表于 2020-11-27 06:25:36 | 显示全部楼层
"在CPLD中将主时钟8分频后与这个输入信号频率相加后输出",知道这个就可以了呀,60MHZ/8=7.5MHZ, 60MHZ/8192=7.32421875KHZ,7.32421875KHZ*8=58.59375KHZ, 60MH异或58.59375KHZ=60.05859375MHZ,60.05859375MHZ/8=7.507324.21875MHZ
(21689003)

出0入4汤圆

发表于 2020-11-27 08:51:46 | 显示全部楼层
dellric 发表于 2014-4-20 17:35
module cmos_clked
(
        PCLK,

这个有点类似于DDS
(21477566)

出0入0汤圆

发表于 2020-11-29 19:35:43 来自手机 | 显示全部楼层
jihua9030 发表于 2020-11-27 06:25
"在CPLD中将主时钟8分频后与这个输入信号频率相加后输出",知道这个就可以了呀,60MHZ/8=7.5MHZ, 60MHZ/8192 ...

怎么获得到低频时钟的八倍?
(21477539)

出0入0汤圆

发表于 2020-11-29 19:36:10 来自手机 | 显示全部楼层
dellric 发表于 2014-4-20 17:35
module cmos_clked
(
        PCLK,

他另一个输入时钟,如果需要可变的呢?
(21472801)

出0入0汤圆

发表于 2020-11-29 20:55:08 | 显示全部楼层


这样可以实现输入的低速时钟变化的时候也能做到高速时钟+低速的效果。

本帖子中包含更多资源

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

x
(21470763)

出0入0汤圆

发表于 2020-11-29 21:29:06 来自手机 | 显示全部楼层
标记一下,用时好找
(21409857)

出0入0汤圆

发表于 2020-11-30 14:24:12 | 显示全部楼层
dellric 发表于 2014-4-20 17:35
module cmos_clked
(
        PCLK,

这个是dds的实现的思路把?貌似有点点很小的误差?要减小就要拔高计数器的位数。
而且输入低频要是变化了不会跟上。
(21408312)

出0入0汤圆

发表于 2020-11-30 14:49:57 | 显示全部楼层
jihua9030 发表于 2020-11-27 06:25
"在CPLD中将主时钟8分频后与这个输入信号频率相加后输出",知道这个就可以了呀,60MHZ/8=7.5MHZ, 60MHZ/8192 ...

你个方法相当于在60M每8个时钟输出一个脉冲,然后在低频7.324k周期内等间隔的8次抽脉冲,每次抽掉一个脉冲,也就是7个60M的时钟,就输出。这样提高输出时钟的频率实现7.5M+7.324k的效果。

这样你输出的时钟是默认情况下高电平4个60M的脉冲,低电平4个60M的脉冲。
抽掉的时钟是高电平3个60M的脉冲,低电平4个60M的脉冲,8次一共抽掉8个时钟。


我的方法是先对7.324k的边沿倍频下,在每个边沿分别抽掉1,3个时钟,或者2,2的时钟,2次也是累计抽掉8个时钟。
这样有两个连续的脉冲式这样组成的3H3L=6,2H4L=6,或者4H3L=7 3H2L=5这样实现。

比你的效果差的多。但是我这个可以适应低频频率变化也能工作。     
(21405943)

出0入0汤圆

发表于 2020-11-30 15:29:26 | 显示全部楼层

还是这样上升沿触发后连续抽8次,每次抽一个脉冲,这样对后面的电路友好一些。

本帖子中包含更多资源

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

x
(21405835)

出0入0汤圆

发表于 2020-11-30 15:31:14 | 显示全部楼层


加大一下cnt计数器的位宽,就可以延迟一段时间抽一个脉冲,还是抽8次

本帖子中包含更多资源

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

x
(21399654)

出0入0汤圆

发表于 2020-11-30 17:14:15 | 显示全部楼层
才发现这个是6年前的老帖子。。。
(20909841)

出0入0汤圆

发表于 2020-12-6 09:17:48 | 显示全部楼层
60M,出7.5M频率方波,是频率计还是示波器看的哦,  DDS是可以出,出来是宏观上准确,微观上抖动的。  
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-8-5 09:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表