handling multiple clock

handling multiple clock

ID:6055877

大小:748.50 KB

页数:12页

时间:2018-01-01

handling multiple clock_第1页
handling multiple clock_第2页
handling multiple clock_第3页
handling multiple clock_第4页
handling multiple clock_第5页
资源描述:

《handling multiple clock》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、HandlingMultipleClock3.Problemsindesignwithmultipleclockdomains跨时钟域可能引起的问题包括:setuptime、holdtimeviolation、metastability。Metastability是由于setuptime和holdtime不满足引起的,这样FF可能输出glitch或出现短暂的metastability,从而需要更长时间恢复到stablestate。Metastability时输出会在1和0之间徘徊,导致outputtransition被延迟的时间大于clk-q的Tco,然后又经过

2、Tmet时间后恢复到stablestate。不是每次setup和holdtimeviolation都会出现metastable,这个概率与FF的工艺和周围环境有关。4.WeshallOvercome…解决multipleclockdesign问题可以采取下面的办法:1)从设计技巧上入手,如clock命名法和designpartition;2)当跨时钟域传递control和data信号时,避免metastability和setup&holdtimeviolation。4.1ClockNomenclatureClock命名法:例如采用sys_clk,tx_clk,r

3、x_clk来命名clock,这有助于使用通配符来进行书写有关clock的script。同样,属于同一个时钟域的信号可以在信号前加上与特定clock有关的前缀,如sys_rom_addr,sys_rom_data。4.2DesignPartitioningDesignpartition:每个module只包含一个clock;synchronizermodule用来把所有一个clock中给出的input信号先转换到另一个clockdomain,然后就能同步输入到另一个clockdomain的module中;synchronizermodule应该越小越好。这样做的好

4、处是STA会比较容易,所有进入或离开某个module的信号都是synchronous。而且不需要对synchronizermodule进行timinganalysis,但仍然要保证holdtime得到满足。4.3TransferofControlSignalsTransferofcontrolsignal:设计者通常选择使用由两个或多个FF串联组成的multiplestagesynchronizer来进行跨时钟域的信号同步。缺点就是会增加电路的latency。一般如果2个FF输出信号还是有metastability,则可以通过3个FF来解决。如图13所示,但tw

5、ostagesynchronizer一般已经足够用来避免multipleclockdesign中的metastability。3个FF的synchronizer可能用在clock频率很高的电路中。4.4TransferofDataSignalsTransferofdatasignal:通常使用handshake和asynchronousFIFO来解决。5.HandshakeSignalingMethodHandshake的示意图如图14和15所示。这种方法要求在sendingclockdomain中,数据必须至少保持2个risingclockedge的时间。而且

6、如果sendingclock的频率比destinationclock快,控制信号xreq的需要至少保持2个risingedgeclock的时间,否则就不能被采样到。另外,如图15所示,传递一次数据需要5个clock,与采用FIFO进行数据传递相比,handshake的latency会比较大。6.DatatransferthroughSynchronousFIFOSynchronousFIFO如图17所示。6.1FIFOfullandFIFOemptygeneration当(read_pointer=write_pointer+1),且writ又被asserted

7、,则表示FIFO已经full;当(write_pointer=read_pointer+1),且read又被asserted,则表示FIFO已经empty,具体code如下图所示。产生full和empty的方法也可以通过维护一个counter的计数来实时表明FIFO中还有多少空间将会出现full和empty。Counter的位宽就是FIFO的深度,初始化为0。后面每次write一次,则加1;read一次,则减1。如果counter的值为0,则表示empty;如果为FIFO的容量,则表示full。但与上面的方法相比,这种实现的效率会比较低,因为这里用来产生empt

8、y和full的compa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。