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

标题: 两个剧牛的数字电路——异步时钟切换和倍频 [打印本页]

作者: wice3    时间: 2007-1-25 20:12
标题: 两个剧牛的数字电路——异步时钟切换和倍频
两个不相关时钟间的异步切换两个不相关的时钟频率之间的异步切换会产生runt脉冲和毛刺使得系统不可靠。下面所示的电路揭示了这些问题的一个解决办法。 当选择(SELECT)输入稳定的时候(或者为高电平或者为低电平),这两个控制触发器处于相反的状态,两个时钟输入中的一个驱动时钟输出。 当选择(SELECT)输入变化时,这个影响要等到原来的选择的时钟源的下一个下降沿复位它的控制触发器之后才会有。输出时钟信号然后会保持低电平直到新选择时钟的下一个下降沿置位它的控制触发器,使得新选择的时钟来驱动输出时钟。 任何时钟切换都开始于原来选择的时钟变低时,输出时钟然后会保持低电平直到新选择的时钟先变低然后再变高。再也不会出现runt脉冲或输出毛刺。 如果选择(SELECT)输入的时序导致控制触发器进入亚稳态,这并不会有影响,因为输出时钟被输入时钟驱动为低电平(而不管控制触发器的状态)。亚稳态必须在时钟的低电平期间内得以恢复。现代的触发器会在少于2ns时间内从亚稳态中恢复(参见2002年10月的技术报告" Virtex-II ProTM 触发器的亚稳态时延和两次失效之间的平均时间")。 这个电路假定是上升沿触发的,它要求两个时钟都要自由运行。
作者: wice3    时间: 2007-1-25 20:21


   
原帖由 wice3 于 2007-1-25 20:12 发表
两个不相关时钟间的异步切换两个不相关的时钟频率之间的异步切换会产生runt脉冲和毛刺使得系统不可靠。下面所示的电路揭示了这些问题的一个解决办法。  当选择(SELECT)输入稳定的时候(或者为高电平或者为低电 ...


第1行是output clock
2 3 4 分别是clkb clka select
5 6 分别是 右上的and 和右下的and的输出
7 8 分别是qa qb

[ 本帖最后由 wice3 于 2007-1-25 20:33 编辑 ]
作者: wice3    时间: 2007-1-25 20:39
倍频电路
作者: wice3    时间: 2007-1-25 20:43


   
原帖由 wice3 于 2007-1-25 20:39 发表
倍频电路


第一行是输入时钟
2 是倍频结果(我早not的后面加了1/4 clkin周期的延迟)
3 是 q
建议将图片右键另存到电脑上看效果好得多

[ 本帖最后由 wice3 于 2007-1-25 20:46 编辑 ]
作者: wice3    时间: 2007-1-25 20:49
我用matlab 6.5 的simulink 对电路做的仿真,送上.mdl文件
作者: mmy    时间: 2007-1-26 08:22
好,研究一下
作者: windzjy    时间: 2007-1-26 09:32
不错啊,第一个看到过
作者: windzjy    时间: 2007-1-26 09:53
实际上,倍频电路的输出信号的脉宽应该是,Tc2q+Tnot+Tnxor吧,在实际一个用中,可以通过调整这个延迟来获得不同脉宽的波形吧
作者: wice3    时间: 2007-1-26 11:24


   
原帖由 windzjy 于 2007-1-26 09:53 发表
实际上,倍频电路的输出信号的脉宽应该是,Tc2q+Tnot+Tnxor吧,在实际一个用中,可以通过调整这个延迟来获得不同脉宽的波形吧



hi,windzjy 。 你是集成电路方向的吗?
在fpga里 Tc2q Tnot 和 Txor 是不能调整的。不过可以在not的的后面多插上几级lut来获得延迟。

在ic设计里能调整这几个参数吗?

附上倍频电路的 波形分析图。我的分析结果和你的想法是一致的。
作者: windzjy    时间: 2007-1-26 12:45
fpga内部当然是不能调整的了,但是在ASIC中应该是可以的吧,或者通过不同的库,或者是不同的级数,也不一定只是一个反相器,我没有做过,但是认为总是可以改变这条路径上的延迟来改变输出的脉宽。
作者: scsunjia    时间: 2007-1-29 17:37
学习学习。。
作者: flyboy    时间: 2007-1-29 19:11
倍频电路用延时方法作,好像不可靠
作者: ntthlman    时间: 2007-1-30 17:48

作者: geniusyang    时间: 2007-2-4 12:26
丁吧,还能说啥
作者: normalboy    时间: 2007-2-5 22:47
poor man
作者: wice3    时间: 2007-2-6 19:50


   
原帖由 flyboy 于 2007-1-29 19:11 发表
倍频电路用延时方法作,好像不可靠



不可靠在哪里?
数字倍频从它的基本原理上来讲除了用延迟做,还有什么方法?

[ 本帖最后由 wice3 于 2007-2-6 20:20 编辑 ]
作者: plus    时间: 2007-2-7 14:25
速度低的时候可以.
作者: xiaobenyi    时间: 2007-3-7 13:40
倍频电路可称不上剧牛了
俺都设计过,都没觉着自己干的事情牛
一直在想可以把任意频率加倍而输出占空比又是0.5的电路(虽然好象不可能实现),无果,所以才进来看看,结果还是失望
作者: wice3    时间: 2007-3-7 20:03


   
原帖由 xiaobenyi 于 2007-3-7 13:40 发表
倍频电路可称不上剧牛了
俺都设计过,都没觉着自己干的事情牛
一直在想可以把任意频率加倍而输出占空比又是0.5的电路(虽然好象不可能实现),无果,所以才进来看看,结果还是失望


dcm就能做到你说的那些
dcm是xilinx fpga里的一种时钟管理硬核,里面是通过调整延迟来实现的。
如果输入时钟信号占空比是50%的话,可以用模拟的方式来搞定倍频后50%占空比
作者: ybyp    时间: 2007-3-8 15:11
果然牛。
作者: alickers    时间: 2007-3-13 21:55
好好学习学习
作者: seesea11    时间: 2007-3-16 11:33
确实强,学习
作者: frankrick    时间: 2007-3-17 10:06


   
原帖由 wice3 于 2007-1-25 20:12 发表
两个不相关时钟间的异步切换两个不相关的时钟频率之间的异步切换会产生runt脉冲和毛刺使得系统不可靠。下面所示的电路揭示了这些问题的一个解决办法。  当选择(SELECT)输入稳定的时候(或者为高电平或者为低电 ...




在这个电路中时钟输出经过组合逻辑驱动,这本身就会产生毛刺。而且就某个时钟而言,它经历了组合逻辑的延迟后没有任何反馈机制,时钟的相位也无法保证。
作者: wice3    时间: 2007-3-20 20:50
那个时钟切换电路只能用于低频的场合,对相位的偏移要求低的场合。
它的最大的优点在于不会产生毛刺和时钟周期不完整切换。
作者: lixiaofei    时间: 2007-3-21 14:55
xia buxia a a
作者: 阿基里奥斯    时间: 2007-3-21 22:39
标题: 异步时钟切换电路
看到过另外一种不使用下降沿时钟的,具体实现倒想不起来了;
另外斑竹说它只用于频率较低的场合,原因是什么?
作者: lymrlym    时间: 2007-3-23 16:51
标题: 我已经用过了
我们现在产品里就用这个电路的。呵呵
作者: wice3    时间: 2007-3-24 19:44


   
原帖由 lymrlym 于 2007-3-23 16:51 发表
我们现在产品里就用这个电路的。呵呵


在你们的产品里这个电路完成的是多高频率的切换??
作者: john-deng    时间: 2007-3-24 22:29
研究一下
学习
作者: yoarst    时间: 2007-3-26 17:06
通过延迟获得的倍频不是好的方式,PVT的变化会引起时钟周期的变化,和库的延迟联系在一起的设计不好复用,只能参考一下,做FPGA还可以
作者: 110lbz    时间: 2007-3-28 14:23
这个要研究一下的
作者: Quasar    时间: 2007-3-28 15:53
多多学习啊
作者: o2real    时间: 2007-4-5 10:06
好,支持啊
作者: ddxx    时间: 2007-4-5 16:34
看看我的异步时钟切换逻辑
module DCS ( nrst, clk, sel, dclk );
input    nrst;
input [ 3 : 0 ] clk;
input [ 1 : 0 ] sel;
output    dclk;

reg  [ 3 : 0 ] ena;
always @ ( negedge clk [ 0 ] or negedge nrst )
if ( ~ nrst )
  ena [ 0 ] <= 0;
else
  casex ( sel )
   0  : ena [ 0 ] <= ~ ( ena [ 1 ] | ena [ 2 ] | ena [ 3 ] );
   default : ena [ 0 ] <= 0;
  endcase
  
always @ ( negedge clk [ 1 ] or negedge nrst )
if ( ~ nrst )
  ena [ 1 ] <= 0;
else
  casex ( sel )
   1  : ena [ 1 ] <= ~ ( ena [ 0 ] | ena [ 2 ] | ena [ 3 ] );
   default : ena [ 1 ] <= 0;
  endcase
always @ ( negedge clk [ 2 ] or negedge nrst )
if ( ~ nrst )
  ena [ 2 ] <= 0;
else
  casex ( sel )
   2  : ena [ 2 ] <= ~ ( ena [ 0 ] | ena [ 1 ] | ena [ 3 ] );
   default : ena [ 2 ] <= 0;
  endcase
always @ ( negedge clk [ 3 ] or negedge nrst )
if ( ~ nrst )
  ena [ 3 ] <= 0;
else
  casex ( sel )
   3  : ena [ 3 ] <= ~ ( ena [ 0 ] | ena [ 1 ] | ena [ 2 ] );
   default : ena [ 3 ] <= 0;
  endcase
assign dclk =| ( clk & ena );
endmodule
作者: wice3    时间: 2007-4-5 21:52


   
原帖由 ddxx 于 2007-4-5 16:34 发表
看看我的异步时钟切换逻辑
module DCS ( nrst, clk, sel, dclk );
input    nrst;
input  clk;
input  sel;
output    dclk;

reg   ena;
always @ ( negedge clk  or negedge nrst )
if ( ~  ...


有毛刺咯,功能也不大对
这个是仿真结果。。。。

[ 本帖最后由 wice3 于 2007-4-5 21:55 编辑 ]
作者: will0100    时间: 2007-4-7 22:25
好,研究一下
作者: ad1122    时间: 2007-4-7 22:39
下来研究一下
作者: shebi    时间: 2007-4-9 16:03
好好研究研究
作者: dzlyl    时间: 2007-4-9 16:11
长见识了,谢谢!
作者: 46664    时间: 2007-4-9 22:36
thanks a  lot  

有长见识  牛人满天下
作者: suud    时间: 2007-4-15 13:23
顶!!!!!!!!!!!!
作者: tjklaus    时间: 2007-5-10 21:58
ddddddddddddd!
作者: adscounter    时间: 2007-5-12 21:31
长见识了,呵呵
作者: specmane    时间: 2007-5-12 22:42
这样的电路只能说供理论学习参考了

实际应用中肯定不会用这样的电路来倍频啊
作者: 婴宁    时间: 2007-5-14 14:45
555为什么偶不能下载
作者: wice3    时间: 2007-5-14 21:32
这两个电路是可以运用在xilinx的fpga里的
这两个电路就是选自 xilinx 工程师给出的设计技巧材料
作者: alyssa    时间: 2007-6-2 12:57
不是很懂,原来只是通过用两倍的面积去产生倍频的效果
作者: tzl1975    时间: 2007-6-2 19:30
没有看明白
作者: anchoret    时间: 2007-6-3 10:21
thx a lot!
作者: ly88455960    时间: 2007-6-6 09:05
路过,不错
顶下
作者: qixie    时间: 2007-6-6 18:02
学习一下,谢谢
作者: hjyhjony    时间: 2007-6-12 09:37

作者: colonizer    时间: 2007-6-19 15:26
倍频电路 ,好咚咚 !看看
作者: ioc666    时间: 2007-6-20 16:50
看不到,郁闷
作者: morrisgu    时间: 2007-6-21 16:30
这个很不错,感谢楼主
我正想找个matlab分析数字信号的例子呢
呵呵
作者: morrisgu    时间: 2007-6-21 19:24
想问一下

我在matlab中找不到D Flip-Flop block
哪位牛人告知一下,这个模块在哪里找啊
谢谢啦
作者: sycall    时间: 2007-6-24 18:08
很好的东西!
作者: bhaoshi    时间: 2007-6-30 15:32
是不是要回复才能看到的?
作者: luluzzw    时间: 2007-7-1 23:27
感谢
作者: pengyoust    时间: 2007-7-7 10:38
谢谢,学习学习
作者: whentaoshu    时间: 2007-7-9 19:10
标题: 好的解释 我明白了
以前这番方面我不明白的
作者: wangyuhn    时间: 2007-7-11 09:17
好文章!!!
作者: bearxzg168    时间: 2007-7-11 12:56
希望高人们继续讨论下去!

学习了
作者: beyard    时间: 2007-7-11 20:51
第2个电路倍频出来的占空比是多少
作者: biohazard4    时间: 2007-8-7 11:20
study~~~~~~~~~~~~
作者: denap    时间: 2007-8-11 23:49
Thanks for sharing!!
作者: conch_grass    时间: 2007-8-15 17:42
学习了
作者: FLEXcertifyd    时间: 2007-8-16 18:12
接触一下,实际电路似乎不用
作者: acex    时间: 2007-8-18 12:11
受教了~~~
作者: lize    时间: 2007-8-19 09:28
看不到阿
作者: tspen    时间: 2007-8-20 12:27
下来看看好了
作者: kindshare    时间: 2007-8-20 23:12
谢谢 领教了
作者: qzhaing    时间: 2007-8-21 09:01
我真想说句厉害,并且负责任任
作者: tezhong    时间: 2007-9-23 09:59
谢谢大牛的讨论,学习中!
作者: alyssa    时间: 2007-11-24 17:45
真是好久没来了啊
作者: zgm831    时间: 2007-11-24 18:30
牛!倍频很难做
不知时序仿真的结果如何
作者: fishwu2000    时间: 2007-12-9 00:04
标题: 我晕
下载不了啊!!!
作者: spring1860    时间: 2007-12-10 13:12
lesson learning..
作者: lionlee    时间: 2008-1-1 19:01


   
原帖由 ddxx 于 2007-4-5 16:34 发表
看看我的异步时钟切换逻辑
module DCS ( nrst, clk, sel, dclk );
input    nrst;
input [ 3 : 0 ] clk;
input [ 1 : 0 ] sel;
output    dclk;

reg  [ 3 : 0 ] ena;
always @ ( negedge clk [ 0 ]  ...



这个设计可能不行,能否综合实现都是问题。
作者: lionlee    时间: 2008-1-1 19:04


   
原帖由 wice3 于 2007-5-14 21:32 发表
这两个电路是可以运用在xilinx的fpga里的
这两个电路就是选自 xilinx 工程师给出的设计技巧材料



NOD, 应该是可以的,
我用2nd方法做过环形振荡器,
配合PlanAhead,高频下的时钟工作正常。
作者: snowwolf517    时间: 2008-1-4 14:52
学习一下!
作者: radiantls    时间: 2008-1-4 17:24
标题: good
but more careful efforts needed to analysis !
作者: jiangwei    时间: 2008-1-5 11:30
不错哈
作者: bage22    时间: 2008-1-5 11:36
过来长长见识哈!!!
作者: lixuedong8000    时间: 2008-1-9 23:22
倍频电路是不是都是用延迟产生的?xinlix fpga中的dcm的50%占空比的倍频电路,也是采取这种方法产生的吗?
多加些缓冲器来完成50%所需延时?
作者: zhangbinsniper    时间: 2008-1-14 09:18
不错,很有起发.不过现在倍频都用FPGA自带的PLL
作者: blfa    时间: 2008-1-15 14:31
学习,增长不少见识啊
作者: jasonchen    时间: 2008-1-15 16:56
学习了。。。。
作者: keithzhyh    时间: 2008-1-16 11:17
xiexie !!!!!
好好看看哦!!1
作者: fuckeetop008    时间: 2008-1-17 20:24
很好的帖子,下载看看。谢谢
作者: zhangbinsniper    时间: 2008-1-28 09:34
倍频的电路在FPGA中根本就不可能时现,压跟就没有可靠输出的时候
作者: vividyuan    时间: 2008-1-30 10:11
关于clock mux without glitch, 在http://www.design-reuse.com/上面有更多论文讨论,大家可以search一下,可能会有帮组阿!
作者: wwh_nuaa    时间: 2008-2-18 17:13
不走全局时钟网络,你敢用么?

一般组合逻辑时钟,温度变化对它有很大的影响,不稳定。还是不要用吧!!
作者: 坐等红杏    时间: 2008-2-18 20:11
谢谢

我正在弄这方面的东西呢
作者: liyuzju    时间: 2008-2-20 14:17
谢谢分享!!!
作者: wsrfyxy    时间: 2008-2-22 12:11
经典啊
作者: gaolijian22    时间: 2008-2-22 15:54
好帖子顶起!
作者: norman0199    时间: 2008-2-25 22:05
好東東,謝謝
作者: tmchrry    时间: 2008-2-26 23:04
学习一下
作者: brian_hwang    时间: 2008-2-29 12:27
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5