




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Handling Multiple Clock3. Problems in design with multiple clock domains跨时钟域可能引起的问题包括:setup time、hold time violation、metastability。Metastability是由于setup time和hold time不满足引起的,这样FF可能输出glitch或出现短暂的metastability,从而需要更长时间恢复到stable state。Metastability时输出会在1和0之间徘徊,导致output transition被延迟的时间大于clk-q的Tco,然后又经过Tmet时间后恢复到stable state。不是每次setup和hold time violation都会出现metastable,这个概率与FF的工艺和周围环境有关。4. We shall Overcome解决multiple clock design问题可以采取下面的办法:1)从设计技巧上入手,如clock命名法和design partition;2)当跨时钟域传递control和data信号时,避免metastability和setup&hold time violation。4.1 Clock NomenclatureClock命名法:例如采用sys_clk,tx_clk,rx_clk来命名clock,这有助于使用通配符来进行书写有关clock的script。同样,属于同一个时钟域的信号可以在信号前加上与特定clock有关的前缀,如sys_rom_addr,sys_rom_data。4.2 Design PartitioningDesign partition:每个module只包含一个clock;synchronizer module用来把所有一个clock中给出的input信号先转换到另一个clock domain,然后就能同步输入到另一个clock domain的module中;synchronizer module应该越小越好。这样做的好处是STA会比较容易,所有进入或离开某个module的信号都是synchronous。而且不需要对synchronizer module进行timing analysis,但仍然要保证hold time得到满足。4.3 Transfer of Control Signals Transfer of control signal:设计者通常选择使用由两个或多个FF串联组成的multiple stage synchronizer来进行跨时钟域的信号同步。缺点就是会增加电路的latency。一般如果2个FF输出信号还是有metastability,则可以通过3个FF来解决。如图13所示,但two stage synchronizer一般已经足够用来避免multiple clock design中的metastability。3个FF的synchronizer可能用在clock频率很高的电路中。4.4 Transfer of Data SignalsTransfer of data signal:通常使用handshake和asynchronous FIFO来解决。5. Handshake Signaling MethodHandshake的示意图如图14和15所示。这种方法要求在sending clock domain中,数据必须至少保持2个rising clock edge的时间。而且如果sending clock的频率比destination clock快,控制信号xreq的需要至少保持2个rising edge clock的时间,否则就不能被采样到。另外,如图15所示,传递一次数据需要5个clock,与采用FIFO进行数据传递相比,handshake的latency会比较大。6. Data transfer through Synchronous FIFOSynchronous FIFO如图17所示。6.1 FIFO full and FIFO empty generation当(read_pointer = write_pointer + 1) ,且writ又被asserted,则表示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。但与上面的方法相比,这种实现的效率会比较低,因为这里用来产生empty和full的comparator操作需要额外的hardware。当FIFO的depth增大后 ,comparator需要的位数也增大,从而降低了FIFO的最大工作速度。7. Asynchronous FIFO (Dual Clock FIFO)相对handshake方法,Asynchronous FIFO主要用在对performance有严格要求的设计中,相对clock latency,系统资源的消耗是次要的。7.1 Effect of synchronization on pointers如图20和21所示,同步read pointer到write clock domain中,将产生changed read pointer需要在2个write clock后才能反映到write clock domain中(因为存在2个FF的synchronizer)。这样可以阻塞继续往FIFO中写入,而不会带来危害。如图22和23,同步write pointer到read clock domain会产生同样的效果,而不会引起错误。7.2 Gray code implementation of FIFO pointersGray-code实现pointer,可以保证在跨时钟域传递pointer时,可以避免当另一个时钟域的clock在pointer的变化过程中采样时同时出现许多位的错误。设计一个纯粹的gray-code计数器比较困难,但可以采用下图所示的通过binary转换的方式来实现。7.3 Gray to binary converter7.4 Binary to Gray converter7.5 Gray code counter implementation 7.6 FIFO Full and FIFO Empty generationFIFO full和empty的产生,如图28所示,图中需要4个gray-to-binary转换器。7.7 An Alternative approach for FIFO full and FIFO empty generation在图28中,如果产生full和empty的comparator采用gray code就可以减少4个gray-to-binary转换器。这种方法里gray counter在每个读写时钟域各需要2个,一个是n比特,另一个是n-1比特。其中n-1比特 gray counter可以从n比特gray counter修改得到,即把n比特gray counter最高2个比特异或结果后作为n-1比特gray counter的MSB位,n比特gray counter剩下的n-2比特作为n-1比特gray counter的n-2比特,如图30所示。图29中给出了一个例子来验证按照图30的方法得到binary意义上的n-1比特gray code。7.8 FIFO Design下图给出了异步FIFO的组成框图。(图中输入到RAM的地址wr_ptr和rd_ptr是gray code,实际中应该是binary code,这里只是为了说明下面提到的问题,不是很严谨。)7.9 FIFO empty condition generation对于FIFO empty的产生,因为只有当write pointer和read pointer相等时才表示empty,因此可以直接在gray code下来比较,不需要转换到binary code。图31中write pointer同步到read clock domain的信号wr_ptr_sync通过与rd_gtemp做比较就能得到FIFO是否empty,如下图所示。其中这里的rd_gtemp是由combinational logic产生的the next gray code,还没有寄存到rd_ptr中。7.10 FIFO full condition generationFIFO full的产生虽然也是把wr_ptr和rd_ptr_sync进行比较来得到,但比empty的产生要复杂点。这里需要考虑到额外的最高位来判断,图32通过一个例子来说明。1) 图中假设初始化时rd_ptr和wr_ptr都是0;2) write开始写入,当wr_ptr=7,rd_ptr=0时表示已经full;3) 经过8此read,rd_ptr=wr_ptr=7,此时FIFO处于empty;4) 这时write写入一个数据,此时rd_ptr=7,wr_ptr=8,但按照上面的方法,这里的gray code除了最高位不同外,其他位都相同,就会产生full标志。所以这样就会出错。如果想在gray code下产生正确的full标志,就需要先把rd_ptr同步到write clock domain,得到rd_ptr_sync。然后按照下面三个步骤来进行gray code的比较:1) rd_ptr_sync的MSB与wr_gtemp(write pointer的the next gray code值,该值在下一个write时钟沿到来后需要寄存到wr_ptr中)的MSB应该不同;2) wr_gtemp的最高两个比特产生的第n-1比特的值与rd_ptr_sync的最高两个比特产生的第n-1比特的值应该相等;3) wr_gtemp和rd_ptr_sync的低n-2比特的值也要相等。上述过程用verilog描述的结果如下,8.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司节能降耗活动方案
- 公司组织KTV唱歌活动方案
- 公司网络经营活动方案
- 公司福利旅行活动方案
- 公司每月团聚活动方案
- 公司节日互动活动方案
- 公司组织娱乐活动方案
- 公司每日员工活动方案
- 公司组织去爬山活动方案
- 公司班组趣味活动方案
- 山西省太原市(2024年-2025年小学五年级语文)统编版期末考试(下学期)试卷及答案
- 住院患者跌倒、坠床、压力性损伤的风险评估及管理
- 2023风光互补路灯设计方案
- 2023年山东省夏季普通高中学业水平合格考试会考生物试题及参考答案
- 2024年山东省青岛市中考英语试卷附答案
- 材料力学(山东联盟-中国石油大学(华东))智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 江西省南昌二中心远教育集团九湾学校2023-2024学年八年级下学期期末考试物理试题
- 深入理解Nginx(模块开发与架构解析)
- MOOC 中国文化概论-华南师范大学 中国大学慕课答案
- 初中人教版八年级下册期末物理真题模拟试卷经典套题
- JBT 11699-2013 高处作业吊篮安装、拆卸、使用技术规程
评论
0/150
提交评论