jslx 发表于 2014-8-6 17:04:25

请教,如何在CPld中用原理图实现时钟延时

请教大神,小弟在做一个adc,下图中是CPlD的时钟输入,红色为时钟输出,本意想的是,这两个信号同步输出,红色时钟用于RAM的写时序时钟用,现在情况是两个之间的延时为14.8ns,请问有没有什么办法能让两个时钟同步起来,
我用的片子是EPM7128SLC85-15
[/font]

yuyu87 发表于 2014-8-6 17:16:28

原理图里边一级一级添加非门,再上示波器观察,试试看(我也是莱鸟)

ice_lyb 发表于 2014-8-6 17:58:44

本帖最后由 ice_lyb 于 2014-8-6 18:01 编辑

能否讲你的问题中的各个信号讲清楚,

你图中的黄色信号是什么信号,从哪里来,输入给什么芯片,

红色信号是从哪里来,输入到哪里,你的这些信号分别是要实现什么功能,

你提到的RAM是否指的CPLD中的RAM

还有你的ADC是不是通过CPLD来驱动的

wye11083 发表于 2014-8-6 18:14:36

yuyu87 发表于 2014-8-6 17:16
原理图里边一级一级添加非门,再上示波器观察,试试看(我也是莱鸟)

没用。CPLD不是FPGA,CPLD阵列延时是固定的。

chenchaoting 发表于 2014-8-6 21:19:51

看你的精度要求了,这个延迟是怎么来的。

jslx 发表于 2014-8-7 08:53:55

回三楼,黄色信号时从一个高速ADC(ltc2222)输出的,这个信号是ADC专门输出给外部的数字系统同步用的,我的板子是通过CPLD对ADC实现DMA写RAM,帖子中说道的RAM指的就是存储ADC输出的信号用的,不是CPLD的RAM。
理论上上讲,CPLD的时钟是由黄色信号(也就是ADC输出的时钟)来驱动的,我之所以在CPLD内部走了一遍是因为需要对这个时钟进行控制,当CPLD写RAM的时候,要求红色信号与黄色信号同步,当读RAM的时候,要求红色信号为高电平,其实红色信号即使RAM的RW控制端
当CPLD写RAM的时候,在CPLD的内部电路,其实就是cpld的时钟全局时钟引到另一个引脚。

jslx 发表于 2014-8-7 08:54:25

回2楼,这个方法是不行的,谢谢啊

jslx 发表于 2014-8-7 08:55:29

其实我本意是想 能不能再CpLD内部 怎么样实现对这个时钟信号的延时,延时正好为这个信号的周期(20ns)

ice_lyb 发表于 2014-8-7 09:29:16

jslx 发表于 2014-8-7 08:53
回三楼,黄色信号时从一个高速ADC(ltc2222)输出的,这个信号是ADC专门输出给外部的数字系统同步用的,我 ...

你的红色信号是CLOCKOUT(即示波器上的黄色信号) 输入到cpld里面产生的?

那么你在CPLD的红色信号是怎么得到的,直接assign赋值吗,

还有你的ADC数据是不是也是进入了CPLD里面然后输出了,输出的数据是如何产生的,直接assign赋值还是触发器打拍,如果是触发器,所使用的时钟是什么,

你有用过示波器看ADC的数据进入cpld前和从cpld输出的差异,是否存在跟时钟同样大小的延迟

jslx 发表于 2014-8-7 09:42:46

回楼上,红色信号是CLOCKOUT(即示波器上的黄色信号) 输入到cpld里面产生的,但是 我不是用语言 而是画原理图的方式,黄色信号进来,经过一个2选一选择器后直接输出成红色信号。
ADC的数据时直接输入到RAM的数据总线上的,CPLD只是用计数器计数长生写RAM的地址,计数的时钟即使黄色信号,这样长生的地址就和RAM的写时序同步了。现在是黄色红色信号不同步,导致RAM可能不能正确的写。

jslx 发表于 2014-8-7 09:45:15

这是CPLD内部部分电路图

ice_lyb 发表于 2014-8-7 10:01:39

jslx 发表于 2014-8-7 09:45
这是CPLD内部部分电路图

我的建议如下:

如果你的cpld可以产生足够快的时钟,你使用cpld产生一个快的时钟,然后将CLOCKOUT和adc输出的数据都输入到cpld中,使用cpld中产生的快时钟采集这两个信号(这样操作是为了使外部输入的信号跟cpld中的时钟同步),然后再将打拍以后得到的新的两个信号和cpld中的快时钟输出给外部的RAM,这样CLOCKOUT只是作为使能,新产生的CLOCKOUT的上升沿将数据写入RAM即可,不再需要考虑adc输出的CLOCKOUT和cpld输出的时钟相位关系。

这种情况前提是你的cpld可以产生高速的时钟。

另外一种方法是你将你的数据也输入到cpld,相办法产生同样大小的延迟,然后输出给ram。这种处理方法是因为你不经过cpld的数据是跟ADC输出的CLOCKOUT是同步关系,但是你ADC输出的CLOCKOUT的经过组合逻辑肯定是存在延迟的,这样就不会同步,所以写入RAM也就存在问题。

zxq6 发表于 2014-8-7 11:24:30

20ns不是刚刚50mhz么,用50m晶振,延时一个周期

jslx 发表于 2014-8-7 14:09:16

谢谢ice_lyb大侠的帮助,我试一下看看。

jslx 发表于 2014-8-8 08:42:29

请问ice_lyb大侠,小弟是菜鸟,请问 你说的“用cpld产生一个快的时钟,然后将CLOCKOUT和adc输出的数据都输入到cpld中,使用cpld中产生的快时钟采集这两个信号(这样操作是为了使外部输入的信号跟cpld中的时钟同步),然后再将打拍以后得到的新的两个信号和cpld中的快时钟输出给外部的RAM"打拍这两个信号如何实现啊?
页: [1]
查看完整版本: 请教,如何在CPld中用原理图实现时钟延时