Xilinx FPGA 设计中的跨时钟域问题

合集下载

FPGA跨时钟域亚稳态研究

FPGA跨时钟域亚稳态研究

有时序要求 。 “ 建立时 间” ( e u 和 复杂 化 ,只 要系 统 中存 在跨 时钟 产 生亚 稳 态 ,此 时 触发 器 输 出端 Q Stp
tm )是指在时钟沿到来之前 ,触发 域 ,亚稳态就是无法避免的,因此设 在有 效 时钟 沿之后 较长 时间处于 不 ie
器输 入信号 必须保 持稳 定 的时间 。 计 的电路首先要减少亚稳态导致错误 确定状态 ,在这段时间 内Q 端产生毛 “ 保持时间 ” (o d t m )则是指 的发生,其次要使系统对产生的错误 刺并 不断振 荡 ,最 终 固定在某一 个 H l ie
即所有时钟寄存器 的时钟共享一个时 的建立 时间T U S )之 前保 持 稳 定 ,
2 2亚稳态分析 . 跨 时钟异 步输入信 号可 以在任
并且 持续 到时钟沿 之后 的某段 时 间
( 寄存 器 的保 持 时间T )之后 才 能 何 时间 点翻转 ,它与下 级 同步采样 h
辑器件 内采用多个时钟,且核心模块 改变 。寄存器 的输 入反 映到输 出则 信 号没有 必然联 系 。此 外 ,在 数据
在 时钟 沿之 后 ,信 号必 须保 持稳定 不敏感。前者要靠 同步来实现 ,而后 值 ,这 个值 不一定 等于 原来数据 输 的 时间 。这 些指标 通常 比较保 守 , 度 )环 境下 时序各 有差异 的情 况 。 如果一个设计满足 了这些 时序要求 , 则 触发器 出现 错误 的可是一 个不 e i
F G 设计 中,要 减少亚稳 态导 正确 定 的稳 态值 。也就 是说这 种处 PA
定状态 ,就会导致系统混乱 。
致 的错误 并使系 统对产 生 的错 误不 理方 法不 能排 除采 样错 误 的产 生 。
亚 稳态 的危害 主要是 破坏 系统 敏感 ,就要 正确 定义和处 理F G 内 P A 这 时就要 求所 设计 的系 统对采 样错

cpu与fpga跨时钟域数据交换的实现问题

cpu与fpga跨时钟域数据交换的实现问题

munitis#1楼主:cpu与fpga跨时钟域数据交换的实现问题[精华]ARM与fpga(cyclone)之间进行数据传输,这应该属于跨时钟域的范畴,CPU与fpga之间采用三总线的方式进行连接,而CPU连接fpga的数据线、地址线、控制线进入fpga内部就属于异步信号了,该如何考虑呢?我看过一些关于跨时钟域的文献,上面说对于数据交换,实现方法有握手和fifo两种,我想,双口RAM是不是也算一种?另外,我看跨时钟域数据交换,都涉及到两侧的时钟信号,而对于CPU的三总线,并没有输出什么时钟信号,时钟输出是不是必须的呢?问题比较多,不知道说明白没有,请指教一二,谢谢了!riple #2这个问题,基本上很难。

开个玩笑,原理上简单,实现起来有许多要注意的地方,但是不难。

一个提示:从你使用的ARM芯片数据手册的接口时序图入手。

FPGA中的处理方法是可以改的,而接口时序是一定要遵守的。

泛泛而谈很难,把你的芯片接口时序图贴上来吧,主要是寄存器读、写时序,如果用到DMA的话,应该还有DMA读写的时序图。

munitis #3上面是ARM读写外设的时序图,时钟是CPU的,和fpga的内部时钟是两个时钟域,既需要有ARM写入给fpga 内部的寄存器,又需要有ARM读出fpga内部的值,该如何解决跨时钟域的问题呢?munitis #4ARM与fpga的接口是标准的总线型接口,包括DATA,CS,ADDR,RD,WR,这些信号由CPU的时钟控制,对于FPGA来说是异步信号,在进入FPGA内部是不是需要先进行同步,我看过一些文献,这种总线型的跨时钟域,是不能用多个同步器进行同步的,采用的方法有握手信号和FIFO,是不是这样的呢?riple #5我们一步一步来,先实现基本功能,然后优化性能。

第一、我觉得处理这样的接口,采用异步方式比较好。

因为同步接口对FPGA外部电路和内部配置的要求都比较高。

异步接口只要给出充分的时间,外部电路不存在信号完整性问题就很好解决。

关于FPGA设计中多时钟域和异步信号处理有关的问题

关于FPGA设计中多时钟域和异步信号处理有关的问题

有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。

换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口。

虽然这样可以简化时序分析以及减少很多与多时钟域有关的问题,但是由于FPGA外各种系统限制,只使用一个时钟常常又不现实。

FPGA时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。

本章讨论一下在FPGA设计中多时钟域和异步信号处理有关的问题和解决方案,并提供实践指导。

这里以及后面章节提到的时钟域,是指一组逻辑,这组逻辑中的所有同步单元(触发器、同步RAM块以及流水乘法器等)都使用同一个网络作为时钟。

假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域。

假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域。

图1:双时钟域设计平时我们在设计中遇到的门控时钟、衍生时钟以及事件驱动的触发器都可归为时钟域类别。

如图2所示,通过一个简单门控时钟创建了一个新的时钟域。

我们知道,这类时钟控制在FPGA设计中并不被推崇(可以使用时钟使能替代时钟门控),然而它却非常有利于我们理解时钟域这一概念。

本章我们将着重详细讨论以下主题:•两个不同时钟域之间传输信号。

•亚稳态的产生以及对设计的可靠性的影响•通过相位控制避免亚稳态•在时钟域之间传输单个信号,将信号打两拍•使用FIFO在时钟域之间传输多位数据•使用分区同步器模块提高设计的组织架构•处理ASIC验证原型里的门控时钟•建立一个单时钟模块•自动门控移除图2:通过门控时钟创建的时钟域一、跨时钟域设计中包含多时钟域,首先要解决的是在不同时钟域之间传输信号的问题。

信号跨时钟域传输将会是一个大问题,原因如下:1、信号跨时钟域传输产生的故障总是不太容易复现。

信号跨时钟域问题分析及验证方法研究

信号跨时钟域问题分析及验证方法研究

摘 要 :航 天 用 F P GA设 计 复 杂 度 越 来 越 高 , 其 表 现 之 一 就 是 设 计 中存 在 多 个 时 钟 域 , 当信号 从 一个 时钟 域进入 另

个时钟域 , 即 不 同 时 钟 域 之 间发 生 数 据 交 互 时 , 就 会 带 来 信 号 跨 时 钟 域 产 生 的 亚 稳 态 问题 ( C D C 问题 ) 。亚 稳 态 问
M i c r o y
航 天计 算 机 与微 电子 2 0 1 6年 学 术 年 会 论 文 精 选
信号跨 时钟域 问题分析及验证方 法研究
王 菲, 张 莎莎, 王 茜
( 中 国航 天科 技 集 团公 司第 九 研究 院第 七 七一 研 究 所 , 陕西 西安 7 1 0 1 1 9 )
中 图 分 类 号 :T N 7 1 0
文 献 标 识 码 :A
D OI : 1 0 . 1 6 1 5 7 / j . i s s n . 0 2 5 8 — 7 9 9 8 . 2 0 1 7 . 0 1 . 0 l 1
中 文 引 用 格 式 :王 菲 , 张莎 莎 , 王 茜 .信 号 跨 时 钟 域 问 题 分 析 及 验 证 方 法 研 究 【 J ] . 电子 技 术应 用 , 2 0 1 7 , 4 3 ( 1 ) : 4 3 - 4 5, 4 9 .
( 7 7 1 I n s t i t u t e o f C h i n a A e r o s p a c e , X i a n 7 1 0 1 1 9, C h i n a )
Ab s t r a c t:T h e F P GA d e s i g n u s e d i n a e r o s p a c e i s b e c o mi n g mo r e a n d mo r e c o mp l e x ,w h i c h i n c l u d e s t h e a p p e a r a n c e o f mu l t i c l o c k d o ma i n i n d e s i g n .T h e i s s u e w i t h me t a s t a b i l i t y wi l 1 a i r s e w h e n a s i g n a l t r a v e r s e s f r o m o n e c l o c k d o ma i n i n t o a n o t h e r 。 Al t h o u g h t h e me t a s t a b i l i t y e x i s t s wi d e l y ,i t i s d i f i f c u l t t o l o c a t e t h e i s s u e b a s e d o n t r a d i t i o n a l v e i r ic f a t i o n me t h o d s ,i n c l u d i n g f u n c t i o n s i mu l a t i o n a n d t i mi n g s i mu l a t i o n .T h i s e s s a y w i l l p r o p o s e a h i e r a r c h i c a l a n d mu l t i -mo d e v e r i i f c a t i o n me t h o d f o r c l o c k d o ma i n c r o s s i n g ,w h i c h p r o v i d e s a s t r o n g r e f e r e n c e or f a n a l y z i n g c l o c k d o ma i n c r o s s i n g i s s u e .

fpga跨时钟域处理方法

fpga跨时钟域处理方法

fpga跨时钟域处理方法fpga 跨时钟域处理方法1.什么是FPGA跨时钟域处理?FPGA跨时钟域处理是指在FPGA中处理不同的时钟域的信号,把不同的时钟域的信号转换成成某种特定的格式或者特定算法,以便FPGA 能够处理这些不同的时钟域的信号。

2. FPGA跨时钟域处理的优势(1)更低的功耗,由于时钟频率较低,其功耗比信号时钟频率高的系统低得多。

(2)更高的可靠性,由于时钟频率较低,其硬件的可靠性比信号时钟频率更高。

(3)更快的切换和转换速度,在跨时钟域中,由于只需要处理少量的信号,因而切换和转换的速度会更快。

(4)更小的面积,由于少量的信号需要被转换,相应的FPAG占用的面积也会更少。

3. FPGA跨时钟域处理的实现(1)时间轴划分:第一步是将FPGA转换时钟域中需要处理的信号根据频率分类,并将其根据实际应用场景放置在不同的时间轴上,以便进行后续的处理。

(2)位转换和跨域转换:第二步是将这些处理过的信号转换为不同时钟频率域的信号,这种转换可以采用位级或字节级转换等,以便这些信号能够更好的处理。

(3)中转处理:第三步是将不同时钟频率域的信号做一个中转处理,将其转换成FPGA能够处理的信号,再对每个时钟域上的信号进行处理,完成跨时钟域处理。

4. FPGA跨时钟域处理的应用(1)通信领域:一些通信应用中会存在部分接收信号的处理只能在低频率的时钟域上完成,比如协议及协议解析。

采用FPGA跨时钟域处理,可以有效的提高系统的处理能力。

(2)信号处理领域:有不少信号处理应用一般要求高速处理,这就需要高频率的时钟域;而有些信号处理应用却完全不需要,而FPGA跨时钟域处理可以有效解决这个问题,同时又能提高系统的可靠性。

5.总结FPGA跨时钟域处理是将不同时钟域的信号转换为特定类型或特定算法,以便FPGA能够处理这些不同的时钟域的信号。

它具有更低的功耗、更高的可靠性、更快的切换和转换速度以及更小的面积等优势。

FPGA跨时钟域处理的具体步骤包括时间轴划分、位转换和跨域转换、中转处理等。

vivado跨时钟域约束

vivado跨时钟域约束

vivado跨时钟域约束在FPGA设计中,时钟域的划分和约束是非常重要的一部分。

时钟域的划分可以保证设计的正确性和性能的稳定性,而跨时钟域约束则是确保跨时钟域的数据传输和处理的正确性。

本文将介绍在Vivado中如何进行跨时钟域约束,以及一些常见的问题和解决方法。

在Vivado中,时钟域的划分是通过使用时钟约束和时钟分组来实现的。

时钟约束用于定义时钟的周期和延迟等参数,而时钟分组则用于将设计中的寄存器和逻辑单元划分到不同的时钟域中。

通过合理的划分和约束,可以确保设计在不同时钟域之间的数据传输和处理是可靠的。

在进行跨时钟域约束时,首先需要确定需要进行约束的时钟域。

一般来说,一个设计中会存在多个时钟域,每个时钟域都有自己的时钟信号和时钟周期。

在Vivado中,可以通过时钟分组的方式将不同时钟域中的寄存器和逻辑单元进行划分。

划分时钟域的目的是为了在跨时钟域传输数据时,保证数据在时钟边沿的稳定性和正确性。

一般情况下,跨时钟域的数据传输可以通过使用寄存器来实现。

在Vivado中,可以使用时钟同步模块(CLOCK_SYNC)来实现跨时钟域的数据传输。

时钟同步模块是一种可以在不同时钟域之间传输数据的特殊模块,它可以保证数据在时钟边沿的稳定性和正确性。

在进行跨时钟域约束时,需要使用时钟组(CLOCK_GROUP)来定义不同的时钟域。

时钟组可以将设计中的寄存器和逻辑单元划分到不同的时钟域中,并通过时钟同步模块实现数据的传输和处理。

通过使用时钟组,可以保证跨时钟域的数据传输和处理是可靠的,并且可以避免时钟域间的冲突和不一致。

在Vivado中,可以通过使用时钟组约束语句(CLOCK_GROUP)来定义时钟组。

时钟组约束语句可以指定不同时钟域的时钟信号和时钟周期,并将设计中的寄存器和逻辑单元划分到相应的时钟组中。

通过使用时钟组约束语句,可以确保跨时钟域的数据传输和处理是可靠的,并且可以避免时钟域间的冲突和不一致。

除了使用时钟组约束语句,还可以使用时钟组属性(CLOCK_GROUP_PROPERTY)来定义时钟组的属性。

跨时钟域处理方法

跨时钟域处理方法

跨时钟域处理方法跨时钟域处理(Cross-ClockDomainProcessing)也被称为跨时钟域通信(CCDC),是一种在不同的时钟芯片或部件间实现通信的方法。

它可以帮助企业减少制造时间,降低成本,提高性能和灵活性,并允许更快地向市场投入新产品。

跨时钟域处理技术可以减少能耗,更有效地为更多的应用程序和处理任务提供高效的解决方案。

它还能减少误码和数据传输失败的可能性,提高系统的可靠性。

跨时钟域处理可以用来支持不同的芯片,例如处理器,存储器,收发器,传感器和控制器,以及他们之间的交互。

在某些情况下,它还可以用来将外部固件与主CPU和内部芯片相结合,以便在主CPU芯片和外部芯片之间传输数据,从而形成更复杂的系统集成解决方案。

跨时钟域处理可以采用端口技术来使不同频率的时钟芯片能够正常工作。

每个芯片都有一个专用端口,它可以产生和接受数据,而不受另一个芯片的时钟频率的限制。

例如,如果一个芯片使用的是200MHz的时钟,而另一个芯片使用的是2GHz的时钟,那么使用端口就可以让这两个芯片能够正常工作,而不用担心后者会干扰前者的时钟。

另一种常用的跨时钟域处理技术是串行总线技术。

它允许多个晶体管和元件在共享的串行总线上通信,而无需考虑他们之间的时钟频率和时差。

这种技术允许用户更容易地访问和控制每个芯片的信号,而无需考虑时钟延时的问题。

最后,要注意的是,跨时钟域处理技术的实施必须保证其精确性和可靠性。

这可能会需要使用适当的补偿和专用控制系统,以确保系统中的所有芯片能够正常工作并保持稳定性,从而实现最佳性能和可靠性。

总之,跨时钟域处理是一种令人印象深刻的技术,可以有效地减少成本,并提高系统性能,提高可靠性和性能。

此外,它还可以帮助更快地推向市场新产品,提高市场竞争力。

企业应该利用跨时钟域处理技术,以更有效的方式来解决问题,实现更多的目标。

跨时钟域问题处理

跨时钟域问题处理

跨时钟域问题处理在FPGA设计中,不太可能只⽤到⼀个时钟。

因此跨时钟域的信号处理问题是我们需要经常⾯对的。

跨时钟域信号如果不处理的话会导致2个问题:(1) 若⾼频率时钟区域输出⼀个脉冲信号给低频率时钟区域,则该脉冲很有可能⽆法被采样到,⽰意图如下,clk2根本采样不到pulse,但是从原理上来说,低频时钟是⽆法完全去采样⾼频信号的,这⾥⾯⼀定会丢失信息。

这是⽆法避免的。

(2) 亚稳态问题在说明亚稳态之前,我们需要先了解什么是建⽴时间和保持时间建⽴时间:在时钟沿到来前,被采样信号应该提前⼀段时间就进⼊稳定状态,这个时间称为建⽴时间保持时间:在时钟沿到来后,被采样的信号应该保持稳定⼀段时间,这个时间称为保持时间⽽亚稳态就是建⽴时间和保持时间不满⾜导致的。

如下图所⽰,就是建⽴时间不满⾜,造成dout是个不确定值,即亚稳态。

很多新⼈以为亚稳态仅仅是逻辑上的障碍,其实亚稳态是实实在在的电路上的问题。

模拟电路中,三极管主要⼯作在其放⼤区间,⽽在数字电路却是要⼯作在截⾄态。

亚稳态⾮常类似模拟电路中的放⼤态,这个状态将使得器件的输出电流被放⼤,如果这个状态被传递,那么将导致更多的电路处在放⼤电路的⼯作状态中,这将引起巨⼤的电流和功耗,甚⾄烧毁芯⽚,所以,跨时钟域是⼀定会出现亚稳态的,但是我们必须要把亚稳态控制在⼀个很⼩的范围内。

这就是为什么要在其后⾯再⽤⼀个寄存器的原因。

它的功能就是把亚稳态仅仅限制在那⼀个寄存器的⼩区域。

亚稳态会造成严重的后果。

就像将军发命令⼀样,若其发出的是⼀个亚稳态的命令,⼠兵A可能判定这个命令为进攻,⼠兵B可能判定这个命令为撤退,这将引起极⼤的混乱。

解决⽅案:1,握⼿操作(⾼频信号要进⼊低频时钟域)针对问题1中所描述的情况,即快时钟域传递⼀个脉冲信号到慢时钟域,慢时钟域很有可能采样不到该脉冲。

这时就需要采⽤握⼿操作来解决了。

⾸先,快时钟域应该将脉冲信号转换为⼀个持续信号,慢时钟域采样到该持续信号后,返回⼀个反馈信号,告知块时钟域将持续信号拉低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅谈XLINX FPGA设计中跨时钟域的同步设计问题
摘要
本文介绍了FPGA设计中的同步设计原则并对FPG A设计中的触发器亚稳态问题进行了阐述本文通过具体的设计实例论证了跨时钟域同步处理的必要性并介绍了一种实现跨时
钟域同步处理的方法和其具体电路
关键字
同步设计异步设计触发器亚稳态时序稳定
一同步设计的原则
尽量使用同步电路避免使用异步电路这句话是电路设计的几个原则之一同异步设计相比同步设计设计出来的电路更稳定可靠在XILINX FPGA设计中时常
有设计人员遇到如下类似的问题
设计的电路升级困难可移植性差也就是说一些原本工作正常的电路移植到高端的FPGA中就根本工作不起来了
设计的电路一致性差同一电路设计每次布线后工作的结果不同
设计的电路时序仿真正常但实际电路上却工作不起来
设计的电路极易受毛刺的干扰
通常这些类似的问题都于电路的异步设计有关
二亚稳态
图1 触发器的亚稳态示意图
对于触发器当时钟沿到来时其输入要求是稳定的这时其输出也是稳定的但假如时钟沿到来时其输入也正在变化即翻转这时触发器会瞬时进入亚稳态通
常触发器对输入信号都有一个建立时间的要求也即setup时间当这一建立时间得
不到满足时触发器也会进入瞬时亚稳态如图1
通常触发器即使进入亚稳态也会很快进入稳态但其输出值是不定的这有可能对使我们设计的FPGA模块尤其是哪些有复杂状态机的模块产生错误的逻辑对于亚稳态问题我们还应明白亚稳态问题并非指输出结果数据的不确定性而是指输出变化的时序不确定性
遵循同步设计的原则有助于解决亚稳态问题使我们设计出稳定可靠的电路模块对于单时钟系统我们可以很方便地设计出稳定易于设计及仿真的同步单一时钟系统但在电信和数据通讯领域中我们设计的系统中往往具有多个时钟往往需要将数据或时序由一个时钟域传到另一个时钟域这类设计的难点在于实现不同时钟域之间数据和时序变化的稳定可靠地传递采用经验证的设计技术可以实现跨时钟域的同步设计进而设计出可靠工作的电路
三跨时钟域的异步设计案例
本人曾经设计过如下几个模块这些模块中的几个子模块分别工作在各自的时钟域
中但在他们之间有着数据和时序的传递在设计这些模块的初始时并没有考虑到跨时钟域时序和数据传递的特殊性使得在系统上使用这些模块时出现过一些较为棘手的问题现把它们列举出来供大家研究
模块一名称:
芯片配置模块模块功能
从平行口接收从PC 机下传的命令和参数产生相应的控制时序完成单板上芯片的配置
模块结构框图
图2 同步处理前芯片配置模块结构框图
各子模块简介
模块A 实现同PC 的平行接口PC 机控制程序通过操作并行口各个引脚把各个参数信息如数据地址信息传递到参数控制总线上并且发出相应的命令如start, write 等命令启动下层模块
模块B 是一个状态机clk 是状态机的主时钟模块B 根据模块A 传来的命令启动相应的状态机完成从参数传递总线上获取参数信息或产生相应的配置时序完成芯片的正确配置
在上图中模块A 中各寄存器都受控于并行口各引脚的状态它们在并行口引脚中stroble 引脚的上跳沿发生状态的迁移可以说stroble 引脚是模块A 的主时钟信号
由上分析得模块A 和模块B 分属于两不同的时钟域时钟域A 和时钟域B
中时钟域A 的主时钟为stroble, 时钟域B 的主时钟为clk 两时钟域的主时钟stroble 和clk 是不相关的它们之间的信号就为跨时钟域A 和时钟域B 之间的信号线其中write 信号线,start 信号线及回馈握手信号线用于实现控制时序的传递而参数传递总线用于实现数据的传递
在如上的设计中没有对跨时钟域的时序控制线进行同步处理在系统使用此模块时出现如下的问题
Parrel port with PC
PC机上芯片配置命令并不能总是成功的启动模块B 中相应的状态机也即PC机上芯片配置命令并不能总是成功地实现芯片的正确配置
芯片配置时序的不稳定性
故障的偶然性故障的不可重复性
模块二
名称:
突发调制器模块
模块功能
完成数据的突发调制
模块结构框图
图3 同步处理前突发调制器模块框图
各子模块简介
模块A 为突发调制器主控模块它的主时钟为CLKA它利用CLKA定时产生周期的Send_data信号去启动模块B中的状态机模块B为突发调制器时序控制模块它的主时钟是从专用调制器芯片送来的TXBITCLK时钟信号模块B根据模块A的触发信号启动相应的状态机产生相应的调制器控制时序专用调制芯片中的DPLL(数字锁相环)根据相应的设置参数以CLKB为参考时钟产生TXBITCLK时钟信号上图中R1R2为跳接电阻通过R1R2不同的焊剂方式可以改变CLKB时钟信号的时钟源在如上的设计中没有对跨时钟域的时序控制进行同步处理在系统使用此模块时出现如下的问题
在R1短接R2断开情况下CLKA时钟信号和CLKB时钟信号共用一个时钟源晶体
A,上述模块工作正常稳定
在R1断开R2短接情况下CLKA 时钟信号的时钟源为晶体A CLKB 时钟信号的时钟源为晶体B 晶体A 和B 是两个独立不相关的晶体这时模块A 和模块B 工作于不同的时钟域(时钟域A 和时钟域B) 它们之间的信号就为跨时钟域A 和时钟域B 之间的信号线Send_data 信号和回馈握手信号线用于实现两时钟域之间控制时序的传递
此时上述模块工作很不稳定模块B 中的状态机经常进入一种未知状态不能产生正确的调制器控制时序
四 跨时钟域的同步设计的方法
经对上述案例仔细地仿真和深入分析后笔者发现作成上述两模块工作不稳定的主要原因是没有按照同步设计的原则对跨时钟域的时序控制信号进行同步处理可以有好几种电路用于实现跨时钟域的时序控制信号的同步处理下面的电路模块Asy_syc 可以用于跨时钟域时序控制信号的同步处理
Asy_in
Syc_clk
Syc_out
Time periphery
图4 Asy_syc 电路原理图
上述电路的时序仿真图如下:
图5 Asy_syc 时序仿真图
由时序仿真图可以看出主时钟Syc_clk 的异步输入信号Asy_in 经该电路后输出同步于主时钟Syc_clk 的Syc_out 信号, 从而实现了异步信号的同步处理
按照同步设计原则利用Asy_syc 模块对上述模块二(突发调制器模块)中跨时钟域的信号线Send_data 进行同步处理同步处理模块示意图如图6经实际电路验证得: 同步处理后突发调制器模块运行可靠稳定
同样按同样的处理方式对上述模块一(芯片配置模块) 中跨时钟域的信号线进行同步处理经实际电路验证得: 同步处理后,
芯片配置模块模块运行可靠稳定
图6 同步处理后突发调制器模块框图
五总结
同步处理模块Asy_syc是一个很好的模块笔者用它和其它的简单模块实现了如下的功能:
1. 上沿同步
2. 脉冲同步
3. 异步系统同步
解决了好多Xilinx FPGA设计中棘手的问题
参考资料
XILINX FUNDATION3.1 TRAINING
跨越异步时钟边界传输数据的解决方案 Peter Alfke。

相关文档
最新文档