CN110705195A - 一种基于fpga的跨时钟域深度自行配置fifo*** - Google Patents
一种基于fpga的跨时钟域深度自行配置fifo*** Download PDFInfo
- Publication number
- CN110705195A CN110705195A CN201910868916.1A CN201910868916A CN110705195A CN 110705195 A CN110705195 A CN 110705195A CN 201910868916 A CN201910868916 A CN 201910868916A CN 110705195 A CN110705195 A CN 110705195A
- Authority
- CN
- China
- Prior art keywords
- port
- read
- write
- module
- clock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于FPGA的跨时钟域深度自行配置FIFO***,提供了一种基于FPGA的能够综合的异步FIFO,FIFO的深度位宽能够自行配置,不需要通过增加一位的方式来判别FIFO的空满状态,也不需要再将已经转换好的格雷码地址再回复到之前的二进制地址码,直接通过二进制地址转换成的格雷码地址进行比较,相比传统异步FIFO而言,有效减少了芯片面积,提高了数据传输速率。
Description
技术领域
本发明属于数字集成电路设计领域,主要涉及跨时钟域数据的传输交互问题。
背景技术
在芯片***中,高速实时数据采集、不同时钟域中的高性能数据传输都离不开异步FI先入先出队列(FIFO)作为缓存。集成电路规模的不断扩展,在现在的集成电路芯片中,一个***往往需要多个不同的时钟控制。但是由于数据的跨时钟域传输,使得数据之间的通信和交互受到了阻碍。与此同时,跨时钟域传输数据极易造成亚稳态现象。异步FIFO在解决数据的跨时钟域传输中有着独特的优势,能够顺序存储连续的数据,将数据按照先进先出的原则读取出来。由赛灵思Xilinx公司的Vivado软件自带异步FIFO的IP核,但是Vivado软件自身的IP核比较固定,应用场景比较有限,通用性差,特别是不能满足复杂情况下跨时钟域传输数据的设计要求。现有的一些技术,在对于跨时钟域传输数据的缓存电路设计,存在电路结构复杂,设计逻辑繁琐,通用性差,没有很好的普适性。FPGA,即现场可编程逻辑门阵列,它是作为专用集成电路领域中的一种半定制电路而出现的。由于FPGA强大的并行能力,近年来广泛应用于网络接口、图像处理、视频信号处理、数字通信等领域。利用FPGA的内部资源来构建可综合异步FIFO***是很有效的途径。
发明内容
本发明的目的是解决不同时钟域下数据传输的缓存问题,提供一种基于FPGA的可综合跨时钟域深度可配置的FIFO。本发明占用FPGA内部资源较少,电路逻辑简单,通用性强,同时数据的深度以及位宽可自行配置,数据传输速率高。
实现本发明目的的具体技术方案是:
一种基于FPGA的跨时钟域深度自行配置FIFO***,特点是该***包括双端口RAM存储器模块、写地址模块、满标志逻辑判断模块、同步到写时钟域模块、读地址模块、空标志逻辑判断模块及同步到读时钟域模块;其中:
所述写地址模块和满标志逻辑判断模块在写时钟域中工作;所述读地址模块和空标志逻辑判断模块在读时钟域中工作;
所述写地址模块有三个输入端口:写时钟端口wclk、写复位端口wrst及写使能端口wr_en;两个输出端口:写地址端口waddr及格雷码写地址端口wptr;所述写地址端口waddr与双端口RAM存储器模块的写地址输入端连接,所述格雷码写地址端口wptr与满标志逻辑判断模块的输入端口连接;
所述满标志逻辑判断模块有四个输入端口:写时钟端口wclk、写复位端口wrst、格雷码写地址端口wptr及读地址同步写时钟域端口wq2_rptr,所述读地址同步写时钟域端口wq2_rptr与同步到写时钟模块连接,有一个输出端口:满标志端口wfull;所述满标志端口wfull与双端口RAM存储器模块连接;
所述读地址模块有三个输入端口:读时钟端口rclk、读复位端口rrst及读使能端口rd_en,由外部输入提供;两个输出端口:读地址端口raddr及格雷码读地址端口rptr;所述读地址端口raddr与双端口RAM存储器模块的读地址输入端连接,所述格雷码读地址端口rptr与空标志逻辑判断模块的输入端口连接;
所述空标志逻辑判断模块有四个输入端口:读时钟端口rclk、读复位端口rrst、格雷码读地址端口rptr及写地址同步读时钟域端口rq2_wptr;所述写地址同步读时钟域端口rq2_wptr与同步到读时钟域模块连接;一个输出端口:空标志端口rempty,所述空标志端口rempty与双端口RAM存储器模块连接;
所述同步到写时钟域模块在写时钟域下工作,其输入与格雷码读地址端口rptr连接;
所述同步到读时钟域模块在读时钟域下工作,其输入与格雷码写地址端口wptr连接;
所述双端口RAM存储器模块有十一个输入端口,分别为写数据端口wdata、写时钟端口wclk、写复位端口wrst、写使能端口wr_en、写地址端口waddr、满标志端口wfull、读时钟端口rclk、读复位端口rrst、读使能端口rd_en、读地址端口raddr及空标志端口rempty,一个输出端口:读数据端口rdata。
所述双端口RAM存储器模块的读数据端口rdata只在读时钟域下进行读取数据;所述写数据端口wdata只在写时钟域下写入数据;所述空标志端口为1时,不能读取数据;满标志端口为1时,不能写入数据;所述双端口RAM存储器模块的读写数据位宽自行设定,读写地址自行配置。
所述同步到写时钟域模块,在写时钟的控制下,将在读地址模块中已经在读时钟下同步过一次的格雷码读地址端口wptr通过两级D触发器进行同步成wq2_rptr。目的是为了进一步降低跨时钟域传输下出现数据亚稳态传输的概率。
所述同步到读时钟域模块,在读时钟的控制下,将在写地址模块中已经在写时钟下同步过一次的格雷码写地址端口rptr通过两级D触发器进行同步成rq2_wptr。目的是为了进一步降低跨时钟域传输下出现数据亚稳态传输的概率。
所述写入数据在写使能端口wr_en有效并且满标志端口wfull不为1的时候才能进行写入数据。
所述读取数据在读使能端口rd_en有效并且空标志端口rempty不为1的时候才能进行读取数据。
所述满标志逻辑判断模块,判断逻辑为格雷码写地址端口wptr数据和同步写时钟域端口wq2_rptr数据的最高位不同,并且次高位也不同。
所述空标志逻辑判断模块,判断逻辑为格雷码读地址端口rptr数据和同步读时钟域端口rq2_wptr数据相同。
本发明的优点是:
1、本发明的电路结构简单,通用性强。
2、本发明综合出来的电路占用资源少,面积小。
3、本发明直接通过格雷码地址进行比较,判断逻辑简单,使得数据传输速率较快。
4、本发明的数据位宽和存储深度可自行设定,灵活方便。
附图说明
图1为本发明***框图;
图2为本发明的仿真图。
具体实施方式
以下结合附图及实施例对本发明进行详细描述。
实施例1
参阅图1,本实施例包括双端口RAM存储器模块、写地址模块、满标志逻辑判断模块、同步到写时钟域模块、读地址模块、空标志逻辑判断模块及同步到读时钟域模块组成。
本发明的具体工作情况如下:
1、首先确定写时钟wclk和读时钟rclk的大小以及外部所写的数据内容。
2、确定写复位wrst的状态是否为0,若为0,则***处于复位状态,写地址、满标志处于初始值为0状态,此时不能进行写数据的操作。
3、确定读复位rrst的状态是否为0,若为0,则***处于复位状态,读地址、空标志处于初始值状态,此时不能进行写数据的操作。
4、若写复位wrst无效,即为1时,此时若写使能wr_en有效并且满标志为0的时候,写地址自动加一,外部写入的数据就会被存储到双端口RAM存储器的低地址中。若写使能wr_en无效时候,则外部的数据无法写入到双端口RAM存储器中。
5、若读复位rrst无效,即为1时,此时若读使能rd_en有效并且空标志为0的时候,读地址自动加一,双端口RAM存储器的存储内容就会被读出。若写使能wr_en无效时候,则外部的数据无法写入到双端口RAM存储器中。
6、写地址每次进行加1的更新操作时候,都会被转换为对应格雷码,与此同时对应的格雷码都会被同步到写时钟域,以便后续进行同步到读时钟域的操作。
7、读地址每次进行加1的更新操作时候,都会被转换为对应格雷码,与此同时对应的格雷码都会被同步到读时钟域,以便后续进行同步到写时钟域的操作。
8、步骤6中同步在写时钟域中的格雷码在读时钟的上升沿被同步到读时钟域,并且经过两级D触发器,在时序上相当于延时两拍,成为wq2_rptr,送入满标志逻辑判断模块。
9、步骤7中同步在读时钟域中的格雷码在写时钟的上升沿被同步到写时钟域,并且经过两级D触发器,在时序上相当于延时两拍,成为rq2_wptr,送入空标志逻辑判断模块。
10、步骤8中的wq2_rptr与步骤6中的格雷码在写时钟域进行比较,若两组地址数据的最高位不同并且次高位也不同,则满标志wfull的值为1,否则满标志的值为0。满标志为1时,不能再进行任何写数据的操作。
11、步骤9中的rq2_wptr与步骤7中的格雷码在读时钟域进行比较,若两组地址数据完全相同,则空标志rempty的值1,否则空标志的值为0。空标志为1时,不能再进行任何读数据的操作。
12、如此循环上述过程。
实施例2
在Vivado2018.3版本的软件下,选用Xilinx公司的Artix系列的XC7A35T芯片,对本发明进行综合以及仿真。对双端口RAM存储器依次写入0x0d,0xe5,0x65,0x13数据,并从RAM读取这些数据。
外部给写时钟周期为20ns,给读时钟周期为40ns,同时读写使能信号由外部的随机函数随机产生。
读写复位信号的初始值为0,随后都拉高为1。
设置FIFO的深度为16,数据位宽为8。
参阅图2,可以看出RAM中的数据依次被读取,分别为0x0d,0xe5,0x65,0x13。说明本发明功能正确。
Claims (8)
1.一种基于FPGA的跨时钟域深度自行配置FIFO***,其特征在于,该***包括双端口RAM存储器模块、写地址模块、满标志逻辑判断模块、同步到写时钟域模块、读地址模块、空标志逻辑判断模块及同步到读时钟域模块;其中:
所述写地址模块和满标志逻辑判断模块在写时钟域中工作;所述读地址模块和空标志逻辑判断模块在读时钟域中工作;
所述写地址模块有三个输入端口:写时钟端口wclk、写复位端口wrst及写使能端口wr_en;两个输出端口:写地址端口waddr及格雷码写地址端口wptr;所述写地址端口waddr与双端口RAM存储器模块的写地址输入端连接,所述格雷码写地址端口wptr与满标志逻辑判断模块的输入端口连接;
所述满标志逻辑判断模块有四个输入端口:写时钟端口wclk、写复位端口wrst、格雷码写地址端口wptr及读地址同步写时钟域端口wq2_rptr,所述读地址同步写时钟域端口wq2_rptr与同步到写时钟模块连接,有一个输出端口:满标志端口wfull;所述满标志端口wfull与双端口RAM存储器模块连接;
所述读地址模块有三个输入端口:读时钟端口rclk、读复位端口rrst及读使能端口rd_en,由外部输入提供;两个输出端口:读地址端口raddr及格雷码读地址端口rptr;所述读地址端口raddr与双端口RAM存储器模块的读地址输入端连接,所述格雷码读地址端口rptr与空标志逻辑判断模块的输入端口连接;
所述空标志逻辑判断模块有四个输入端口:读时钟端口rclk、读复位端口rrst、格雷码读地址端口rptr及写地址同步读时钟域端口rq2_wptr;所述写地址同步读时钟域端口rq2_wptr与同步到读时钟域模块连接;一个输出端口:空标志端口rempty,所述空标志端口rempty与双端口RAM存储器模块连接;
所述同步到写时钟域模块在写时钟域下工作,其输入与格雷码读地址端口rptr连接;
所述同步到读时钟域模块在读时钟域下工作,其输入与格雷码写地址端口wptr连接;
所述双端口RAM存储器模块有十一个输入端口,分别为写数据端口wdata、写时钟端口wclk、写复位端口wrst、写使能端口wr_en、写地址端口waddr、满标志端口wfull、读时钟端口rclk、读复位端口rrst、读使能端口rd_en、读地址端口raddr及空标志端口rempty,一个输出端口:读数据端口rdata。
2.根据权利要求1所述的跨时钟域深度自行配置FIFO***,其特征在于,所述双端口RAM存储器模块的读数据端口rdata只在读时钟域下进行读取数据;所述写数据端口wdata只在写时钟域下写入数据;所述空标志端口为1时,不能读取数据;满标志端口为1时,不能写入数据;所述双端口RAM存储器模块的读写数据位宽自行设定,读写地址自行配置。
3.根据权利要求1所述的跨时钟域深度自行配置FIFO***,其特征在于,所述同步到写时钟域模块,在写时钟的控制下,将在读地址模块中已经在读时钟下同步过一次的格雷码读地址端口wptr通过两级D触发器进行同步成wq2_rptr。
4.根据权利要求1所述的跨时钟域深度自行配置FIFO***,其特征在于,所述同步到读时钟域模块,在读时钟的控制下,将在写地址模块中已经在写时钟下同步过一次的格雷码写地址端口rptr通过两级D触发器进行同步成rq2_wptr。
5.根据权利要求2所述的跨时钟域深度自行配置FIFO***,其特征在于,所述写入数据在写使能端口wr_en有效并且满标志端口wfull不为1的时候才能进行写入数据。
6.根据权利要求2所述的跨时钟域深度自行配置FIFO***,其特征在于,所述读取数据在读使能端口rd_en有效并且空标志端口rempty不为1的时候才能进行读取数据。
7.根据权利要求1所述的跨时钟域深度自行配置FIFO***,其特征在于,所述满标志逻辑判断模块,判断逻辑为格雷码写地址端口wptr数据和同步写时钟域端口wq2_rptr数据的最高位不同,并且次高位也不同。
8.根据权利要求1所述的跨时钟域深度自行配置FIFO***,其特征在于,所述空标志逻辑判断模块,判断逻辑为格雷码读地址端口rptr数据和同步读时钟域端口rq2_wptr数据相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910868916.1A CN110705195A (zh) | 2019-09-16 | 2019-09-16 | 一种基于fpga的跨时钟域深度自行配置fifo*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910868916.1A CN110705195A (zh) | 2019-09-16 | 2019-09-16 | 一种基于fpga的跨时钟域深度自行配置fifo*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110705195A true CN110705195A (zh) | 2020-01-17 |
Family
ID=69196145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910868916.1A Pending CN110705195A (zh) | 2019-09-16 | 2019-09-16 | 一种基于fpga的跨时钟域深度自行配置fifo*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110705195A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324562A (zh) * | 2020-02-16 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种ahb总线跨时钟域的***及工作方法 |
CN117852494A (zh) * | 2024-03-08 | 2024-04-09 | 中科鉴芯(北京)科技有限责任公司 | 针对dff优化的逻辑仿真加速方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930350A (zh) * | 2009-06-24 | 2010-12-29 | 合肥力杰半导体科技有限公司 | 深度不是2的幂的异步fifo存储器设计 |
CN107220023A (zh) * | 2017-06-29 | 2017-09-29 | 中国电子科技集团公司第五十八研究所 | 一种嵌入式可配置fifo存储器 |
CN107577623A (zh) * | 2017-07-19 | 2018-01-12 | 成都华微电子科技有限公司 | 跨时钟域异步fifo及数据处理方法 |
-
2019
- 2019-09-16 CN CN201910868916.1A patent/CN110705195A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930350A (zh) * | 2009-06-24 | 2010-12-29 | 合肥力杰半导体科技有限公司 | 深度不是2的幂的异步fifo存储器设计 |
CN107220023A (zh) * | 2017-06-29 | 2017-09-29 | 中国电子科技集团公司第五十八研究所 | 一种嵌入式可配置fifo存储器 |
CN107577623A (zh) * | 2017-07-19 | 2018-01-12 | 成都华微电子科技有限公司 | 跨时钟域异步fifo及数据处理方法 |
Non-Patent Citations (2)
Title |
---|
宋歌: ""空间激光通信收发同轴角锥标校技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
王艳秋: ""基于CPRI协议的FPGA高速数据接口模块设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324562A (zh) * | 2020-02-16 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种ahb总线跨时钟域的***及工作方法 |
CN111324562B (zh) * | 2020-02-16 | 2021-08-06 | 苏州浪潮智能科技有限公司 | 一种ahb总线跨时钟域的***及工作方法 |
CN117852494A (zh) * | 2024-03-08 | 2024-04-09 | 中科鉴芯(北京)科技有限责任公司 | 针对dff优化的逻辑仿真加速方法和装置 |
CN117852494B (zh) * | 2024-03-08 | 2024-07-09 | 中科鉴芯(北京)科技有限责任公司 | 针对dff优化的逻辑仿真加速方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367495B (zh) | 一种异步先入先出的数据缓存控制器 | |
US5499344A (en) | Programmable dual port data unit for interfacing between multiple buses | |
KR0145321B1 (ko) | 2방향 데이타 전송장치 | |
JP3156813B2 (ja) | バッファ制御回路 | |
US7310396B1 (en) | Asynchronous FIFO buffer for synchronizing data transfers between clock domains | |
CN111832240B (zh) | Fifo数据传输方法及fifo存储装置 | |
JP3645584B2 (ja) | データ転送同期装置 | |
US6249875B1 (en) | Interface circuit using plurality of synchronizers for synchronizing respective control signals over a multi-clock environment | |
JP2004521426A (ja) | バスサイクル毎に選択可能な数のデータワードの読み出し及び/又は書き込みを行うことができるファーストイン・ファーストアウトバッファ | |
CN109388370B (zh) | 一种实现先入先出队列的方法及装置 | |
CN101403962A (zh) | 基于fpga的异步双fifo的数据缓存方法 | |
CN110705195A (zh) | 一种基于fpga的跨时钟域深度自行配置fifo*** | |
WO2009000794A1 (en) | Data modification module in a microcontroller | |
CN109062538B (zh) | 环形先进先出缓冲器及数据传输接口、***、方法 | |
CN112948322B (zh) | 一种基于弹性缓存的虚通道及实现方法 | |
US5758131A (en) | Bus adapter for synchronizing communications between two circuits running at different clock rates | |
CN114201276A (zh) | 一种基于fifo中断管理的方法 | |
Xie et al. | Analysis and comparison of asynchronous fifo and synchronous fifo | |
CN101833431B (zh) | 基于fpga实现的双向高速fifo存储器 | |
US6546451B1 (en) | Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller | |
CN104407992A (zh) | 一种基于双端口寄存器阵列的四端口存储器 | |
US5488712A (en) | Memory circuit with pipeline processing | |
JP3475857B2 (ja) | ソースシンクロナス転送方式 | |
US7248663B2 (en) | Apparatus and method for transforming data transmission speed | |
US6055588A (en) | Single stage FIFO memory with a circuit enabling memory to be read from and written to during a single cycle from a single clock |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200117 |
|
WD01 | Invention patent application deemed withdrawn after publication |