多时钟域数据传递的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时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。
本章讨论一下在FPGA设计中多时钟域和异步信号处理有关的问题和解决方案,并提供实践指导。
这里以及后面章节提到的时钟域,是指一组逻辑,这组逻辑中的所有同步单元(触发器、同步RAM块以及流水乘法器等)都使用同一个网络作为时钟。
假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域。
假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域。
图1:双时钟域设计平时我们在设计中遇到的门控时钟、衍生时钟以及事件驱动的触发器都可归为时钟域类别。
如图2所示,通过一个简单门控时钟创建了一个新的时钟域。
我们知道,这类时钟控制在FPGA设计中并不被推崇(可以使用时钟使能替代时钟门控),然而它却非常有利于我们理解时钟域这一概念。
本章我们将着重详细讨论以下主题:•两个不同时钟域之间传输信号。
•亚稳态的产生以及对设计的可靠性的影响•通过相位控制避免亚稳态•在时钟域之间传输单个信号,将信号打两拍•使用FIFO在时钟域之间传输多位数据•使用分区同步器模块提高设计的组织架构•处理ASIC验证原型里的门控时钟•建立一个单时钟模块•自动门控移除图2:通过门控时钟创建的时钟域一、跨时钟域设计中包含多时钟域,首先要解决的是在不同时钟域之间传输信号的问题。
信号跨时钟域传输将会是一个大问题,原因如下:1、信号跨时钟域传输产生的故障总是不太容易复现。
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跨时钟域处理的具体步骤包括时间轴划分、位转换和跨域转换、中转处理等。
用LabVIEW FPGA模块实现不同时钟域的数据连续传输

用LabVIEW FPGA模块实现不同时钟域的数据连续传输作者:崔佩佩何强韩壮志尚朝轩来源:《现代电子技术》2011年第17期摘要:为了解决基于LabVIEW FPGA模块的DMA FIFO深度设定不当带来的数据不连续问题,结合LabVIEW FPGA的编程特点和DMA FIFO的工作原理,提出了一种设定FIFO深度的方法。
对FIFO不同深度的实验表明,采用该方法设定的FIFO深度能够比较好地满足系统对数据连续传输的要求。
研究结果对深入展开研究和工程设计具有一定的指导意义。
关键词:LabVIEW FPGA模块; FIFO;数据连续传输; 时钟域中图分类号:TN958-34 文献标识码:A文章编号:1004-373X(2011)17-0149-04LabVIEW FPGA-Based Data Continuous Transmission Between Two Clock DomainsCUI Pei-pei, HE Qiang, HAN Zhuang-zhi, SHANG Chao-xuan(Department of Optics and Electronics Engineering, Ordnance Engineering College, Hebei shijiazhuang 050003, China)Abstract: In order to solve the problem of data transmission discontinuity caused by the improperly depth setting of DMA FIFO based on LabVIEW FPGA, a method of setting the depth of FIFO is presented in combination with the characteristic of LabVIEW FPGA and the working principle of DMA FIFO. The experiment of FIFO with different depth indicates that the method can satisfy the requirement of the continuity of data transmission. The result has a certain instruction meaning for further research and engineering design.Keywords: LabVIEW FPGA; FIFO; continuous data transmission; clock domain0 引言20世纪80年代中期,NI公司推出了一种图形化的编程语言LabVIEW[1],并于2003年推出FPGA模块[2]。
多功能数字时钟fpga源代码

多功能数字时钟fpga源代码以下是一个基于FPGA的多功能数字时钟的简化源代码示例。
请注意,由于FPGA设计和编程的复杂性,这里提供的代码只是一个概念性的框架,并不能直接用于生产环境。
此外,代码的长度和详细程度可能会因具体的FPGA型号、设计工具和需求而有所不同。
verilogmodule DigitalClock(input wire clk, // 输入时钟信号input wire rst, // 复位信号output wire [5:0] sec, // 秒output wire [5:0] min, // 分output wire [4:0] hour // 时);reg [25:0] counter = 0; // 26位计数器reg [5:0] sec_reg = 0, min_reg = 0, hour_reg = 0; // 寄存器always @(posedge clk or posedge rst) beginif (rst) begincounter <= 0;sec_reg <= 0;min_reg <= 0;hour_reg <= 0;end else begincounter <= counter + 1;if (counter == 50000000) begin // 假设时钟频率为50MHz,则每1秒计数器加1counter <= 0;sec_reg <= sec_reg + 1;if (sec_reg == 60) beginsec_reg <= 0;min_reg <= min_reg + 1;if (min_reg == 60) beginmin_reg <= 0;hour_reg <= hour_reg + 1;if (hour_reg == 24)hour_reg <= 0;endendendendendassign sec = sec_reg;assign min = min_reg;assign hour = hour_reg;endmodule以上代码是用Verilog语言编写的,它是一种硬件描述语言,常用于FPGA和ASIC设计。
基于FPGA的FIFO存储器设计

基于FPGA的FIFO存储器设计一.FIFO的设计原理FIFO(First In First Out)是先进先出存储器的缩写,它是一种实现数据先进先出的存储器件,通常用作数据缓冲器。
FIFO一般用于不同时钟之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。
另外,对于不同宽度的数据接口也可以用FIFO,例如单片机为8位输出,DSP为16位输出,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。
在实际工作中,对FIFO的数据操作是靠其满/空标志来实现的。
所谓满标志,指的是当对FIFO写数时,如果数据足够多,多到FIFO的内存已经装满了,此时便由FIFO内部状态电路送出一个表示内存已满的信号以阻止对FIFO的写操作。
同理,所谓空标志,指的是当从FIFO读数时,如果数据被读完了,便有FIFO内部状态电路送出一个空标志信号以阻止对FIFO的读操作。
总之,在控制FIFO的读写操作时,必须把握一个原则:写满不溢出,读空不多读。
根据FIFO工作的时钟域不同,可以将FIFO分为同步FIFO和异步FIFO两大类。
同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作;异步FIFO是指读写时钟不一致,读写时钟是互相独立的。
和同步时钟相比,特别是在网络接口、图像处理等方面,异步FIFO应用空间更为广泛。
二.FIFO设计功能及系统框图FIFO的整个系统可分为写地址产生逻辑、度地址产生逻辑、双端口存储器、满/空标志产生逻辑4大部分。
其中,FIFO的存储介质为一块双端口存储器,可以同时进行读写操作。
在写地址产生逻辑部分,由写地址产生逻辑产生写控制信号和写地址;在读地址产生逻辑部分,由读地址产生逻辑产生读控制信号和读地址。
在满/空标志产生部分,由读写地址相互比较产生满/空标志。
具体模块结构如下图所示:本实验完成的是8位FIFO的设计。
FPGA设计的四种常用思想与技巧乒乓操作

FPGA设计的四种常用思想与技巧乒乓操作FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以根据需要重新配置其内部硬件电路。
在FPGA设计中,有许多常用的思想和技巧,其中之一就是乒乓操作。
乒乓操作是指通过交替使用两个资源或状态来实现其中一种功能或优化设计的一种方法。
本文将介绍FPGA设计中的四种常用思想与技巧乒乓操作。
1.数据缓冲乒乓操作:数据缓冲乒乓操作是指在设计中使用两个缓冲区交替存储数据。
一个缓冲区用于接收数据,另一个缓冲区用于处理数据。
当一个缓冲区正在接收数据时,另一个缓冲区可以同时进行数据处理。
这种乒乓操作可以提高数据处理的效率,减少数据处理的延迟。
2.时钟域乒乓操作:时钟域乒乓操作是指在设计中使用两个时钟域交替操作。
一个时钟域用于采样输入数据,另一个时钟域用于处理数据。
这种乒乓操作可以实现不同时钟域之间的数据交换和同步。
例如,可以将输入数据从一个时钟域同步到另一个时钟域,然后再进行处理。
这种乒乓操作可以解决时钟域之间的异步问题,提高设计的可靠性和性能。
3.状态机乒乓操作:状态机乒乓操作是指在设计中使用两个状态机交替执行其中一种功能。
一个状态机用于执行一些任务,另一个状态机用于处理其他任务。
这种乒乓操作可以实现多任务的并行处理。
例如,可以将一个状态机用于处理输入数据,另一个状态机用于处理输出数据。
这种乒乓操作可以提高设计的并行度,加快任务的执行速度。
4.存储器乒乓操作:存储器乒乓操作是指在设计中使用两个存储器交替读写数据。
一个存储器用于读取数据,另一个存储器用于写入数据。
这种乒乓操作可以实现数据的连续读写,提高存储器的访问效率。
例如,可以将一个存储器用于读取输入数据,另一个存储器用于写入输出数据。
这种乒乓操作可以减少存储器的读写延迟,提高数据的传输速度。
综上所述,FPGA设计中的乒乓操作是一种常用的思想和技巧,可以提高设计的效率和性能。
通过数据缓冲乒乓操作、时钟域乒乓操作、状态机乒乓操作和存储器乒乓操作,可以实现数据的并行处理、时钟域的同步、多任务的执行和存储器的高效访问。
axi fifo 用法

axi fifo 用法
AXI FIFO是一种FPGA中的IP核,用于在AXI (Advanced eXtensible Interface)总线上实现FIFO (First-In-First-Out)缓冲器操作。
AXI是一种高性能、低功耗的总线协议,用于连接处理器、存储器和其他外设。
AXI FIFO主要用于解决数据传输中的流控制问题,可以在不同的时钟域之间传递数据。
它可以实现两个时钟域之间的数据缓冲和异步转换。
以下是AXI FIFO的一些常见用法:
1. 数据缓冲:当数据的生产者和消费者之间速度不匹配时,可以使用AXI FIFO进行数据缓冲。
它可以在生产者和消费者之间存储数据,直到消费者准备好处理它们。
2. 时钟域转换:当两个时钟域的频率不同,或者存在时钟抖动等问题时,可以使用AXI FIFO进行时钟域转换。
它可以在不同的时钟域之间同步传递数据,并提供了FIFO深度和带宽适配的功能。
3. 数据收集:当需要从不同的源收集数据时,可以使用AXI FIFO进行数据收集。
它可以接受来自多个源的数据,并将其存储在FIFO中,以便后续处理。
4. 数据分发:当需要将数据分发给多个目标时,可以使用AXI FIFO进行数据分发。
它可以接受来自一个源的数据,并
将其复制并发送给多个目标。
为了使用AXI FIFO,你需要实例化该IP核并连接到AXI总
线和其他系统组件。
然后,你可以配置FIFO的深度、宽度、
时钟域等参数,并使用读写接口对FIFO进行读写操作。
这样,你就可以根据需要进行数据缓冲、时钟域转换、数据收集和数据分发等操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多时钟域数据传递的FPGA 实现鲁 玲(扬州大学能源与动力工程学院江苏扬州 225009)摘 要:分析了多时钟域数据传递设计中亚稳态的产生以及对整个电路性能和功能的影响,以一款异步并行通信接口芯片的设计为例,详细描述了采用同步器、FIFO 实现8位并行数据到16位并行数据的两时钟域异步转换的过程。
电路在XilinxISE6.0环境下用Modelsim5.7进行了逻辑仿真,结果表明系统稳定可靠。
关键词:多时钟域;亚稳态;FP GA ;异步信号;FIFO中图分类号:TP391.98 文献标识码:B 文章编号:10042373X (2007)212130203An Implementation of Communicating Data bet w een Multi 2clock Domain B ased on FPG AL U Ling(Institute of Energy &Power ,Yanghou University ,Yangzhou ,225009,China )Abstract :The paper analyses the metastability which is caused by communicating data between multi 2clock domain and effect of metastability to the circuit.For example ,the design of asynchronous parallel interface chip is described to make use of synchronizer and FIFO to transfer the data band f rom 8bits to 16bits between two clock domain in details.The circuit is simulated on a Modelsim5.7with Xilinx ISE6.0software and good test result has gotten.K eywords :multi 2clock domain ;metastability ;FP GA ;asynchronous signal ;FIFO收稿日期:2007207225 随着EDA 技术的发展,由于其在电子系统设计领域中的明显优势,FP GA 已经在许多方面得到了广泛应用,特别是在无线通信领域,FP GA 以其极强的实时性,指令软件编程的极大灵活性赢得了巨大的市场。
本文采用FP GA 来设计一款广泛应用于计算机、Modem 、数据终端以及许多其他数字设备之间的数据传输的专用异步并行通信接口芯片,实现了某一时钟域(如66M Hz )的8位并行数据到另一低时钟域(如40M Hz )16位并行数据的异步转换,并且客户可以根据自己的要求进行数据定义。
完成数据在不同时钟域间的正确传递的同时防止亚稳态的出现,保持系统的稳定,是电路设计的关键。
1 时钟域转换中亚稳态的产生触发器是数字电路设计中的一个重要元件,而触发器工作过程中存在数据建立与保持时间的约束,如果这种约束得不到满足,触发器就会进入某个不确定状态———亚稳态[1]。
亚稳态的存在可能导致连锁反应,以致引起整个系统功能混乱。
在单时钟域电路设计中由于不存在时钟之间的延迟和错位,所以建立条件和保持条件的时间约束容易满足。
而在多时钟域里由于各个模块的非同步性,则必须考虑亚稳态的发生,如图1所示。
图1 多时钟域亚稳态的产生2 多时钟域数据传递方案多时钟域传递的信号有两种,其一为控制信号,其二为数据流信号。
针对这两种不同的信号,分别采取不同方案遏制系统堕入亚稳态。
对控制信号采用同步器装置,即在2个不同的时钟域之间插入同步器;而对于不同独立时钟域之间的数据流传递,为了避免异步时钟域产生错误的采样电平,采用FIFO 存储器作为其转换接口,在输入端口使用写时钟写数据,在输出端口使用读时钟读数据,这样就完成了异步时钟域之间的数据交换[2]。
芯片的总体逻辑框图如图2所示,图中输入输出信号定义如表1所示。
从逻辑结构上将芯片划分为3块:写时钟域I/OBU FFER 、读时钟域I/O BU FFER 及FIFO 存储器。
I/OBU FFER 的主要作用是对外部信号进行预处理,消除外31自动化技术鲁 玲:多时钟域数据传递的FP GA 实现部信号的毛刺,保证信号可靠并使外部的信号与时钟信号同步,消除不稳定的因素。
根据信号的数目,BU FFER 由相应数目的多个D触发器构成。
图2 芯片的总体逻辑框图表1 芯片输入输出信号定义clka :input clock (66M Hz )fp :output frame begin clkb :output clock (40M Hz )valid :Output data enable ,high level enablerst :asynchronous reset ,low level enable indata :t he input data (8b )sof :input frame begin outdata :t he outputdata (16b )dataen :write enableFIFO 存储器结构框图如图3所示,他由双端口存储器(Dual Port RAM )、写控制单元(Write Control )和读控制单元(Read Control )构成。
其中DUAL POR T RAM 是由ISE6.0的一个编辑软件CORE GEN ERA TER 自动生成,使用者只需设定RAM 的端口数、内存大小和读写控制便可以生成一个适合程序的子模块。
由于读写时钟属于不同的时钟域,满帧信号Frame 从写控制单元向读控制单元传递时必须采取同步器(Synchronizer )同步。
图3 FIFO 存储器结构框图2.1 写控制单元设计写控制单元主要的功能是根据写数据有效信号wda 2taen 判断输入数据是否正确,在检测到写入数据帧的开始标志位wsof 后开始计数控制写指针waddr 的移动,将正确的数据写入DUAL POR T RAM 中,并在一帧数据写满后向读控制单元发出写数据满帧信号wframe 。
为防止亚稳态的出现,设计中采取了两个措施:一是采用锁存器将帧头信号wsof 拉长,确保其被稳定的采集;二是采用Gray 编码计数器替代普通二进制编码计数器来控制写指针waddr 的移动,因为Gray 码相邻两个编码之间有且只有1位发生变化从而抑制了竞争冒险的出现[3]。
2.2 同步器设计写控制单元发出的写数据满帧信号wframe 属于控制信号,他从写时域进入读时域必须采用同步器实现信号同步,将写时域的满帧信号wframe 变换为读时域的满帧信号rframe 。
由于信号是从高时钟域(66M Hz )流向低时钟域(40M Hz ),因此采用如图4所示的同步器[3]。
图4 同步器同步器时序图如图5所示,可见在写时域的满帧信号wframe 经过3个clka 周期延后跨越到读时钟域。
图5 同步器时序图2.3 读控制单元设计数据从写时域传递到读时域,时钟发生了变化,而且读控制单元的行为受到写控制单元及Dual Port RAM 中数据的存储情况的双重制约,因此他的设计是整个芯片设计成功的关键。
由于当Dual Port RAM 中写入一帧完整的正确数据后才能输出,所以读控制首先必须判断Dual Port RAM 一帧是否写满。
检测到满帧信号rframe 后,在等待输出数据帧头信号rfp 到来后控制读指针waddr 移动读出数据,并置位rvalid 表征输出数据的可靠性。
部分程序设计如下:--read controlprocess (clkb ,rst ) begin if (rst =′0′)then raddr <=(others =>′0′); elsif (clkb ′EV EN T and clkb =′1′)then if (rcntf ="11"and rfp2=′0′)then raddr <=raddr +"100"; elsif (rvalid =′1′)then raddr <=radd_r +′1′; end if ; end if ;end process ;process (clkb ,rst )begin if (rst =′0′)then rcntf <=(others =>′0′); elsif (clkb ′EV EN T and clkb =′1′)then if (rf rame =′1′and rfp2=′0′)then rcntf <=rcntf +′1′; elsif (rf rame =′0′and rfp2=′1′and (rcntf ="01"or rc 2nt_f ="10"or rcnt_f ="11"))then131《现代电子技术》2007年第21期总第260期 测试・测量・自动化 rcntf <=rcntf.′1′; elsif (rcntf ="11"and rfp2=′0′)then rcntf <=rcntf.′1′; end if ;end if ;end process ;3 多时钟域数据传递的FPG A 实现设计方案完成后选用Xilinx Spartan.II FP GA 实现电路,并在XilinxISE6.0集成环境下用Modelsim5.7进行了电路仿真。
图6为写使能信号dataen 恒为有效值“1”的仿真结果截图。
图6 dataen =1时仿真结果截图可见,在写使能信号dataen 恒为有效值“1”的情况下,在写时钟clka 控制下当写数据帧头信号sof 有效时,写控制器开始写入数据,接收到连续8个数据后,写控制器发出一个帧满信号wframe 。
wframe 信号经过异步转换后转换成clkb 时钟域的信号。
在读控制器的控制下,当clkb 时钟处于上升沿,并且检测到读出数据帧头fp 时,开始从outdata ,并将valid 置为有效。
图7为当写使能信号dataen 变化时的仿真结果截图。
可见,将dataen 置低后,系统不再接受写入数据,所以也不再输出数据,valid 被置为低电平,输出数据无效。
写控制的使能端控制达到要求。
图7 dataen 变化时仿真结果截图4 结 语针对异步并行通信接口芯片设计中涉及的多时钟域的数据传递问题,本文采用FIFO 存储器来完成不同时钟域之间数据流传递、同步器来完成控制信号传递的方案。