CN101403962A - 基于fpga的异步双fifo的数据缓存方法 - Google Patents
基于fpga的异步双fifo的数据缓存方法 Download PDFInfo
- Publication number
- CN101403962A CN101403962A CNA2008101597832A CN200810159783A CN101403962A CN 101403962 A CN101403962 A CN 101403962A CN A2008101597832 A CNA2008101597832 A CN A2008101597832A CN 200810159783 A CN200810159783 A CN 200810159783A CN 101403962 A CN101403962 A CN 101403962A
- Authority
- CN
- China
- Prior art keywords
- data
- fifo
- fpga
- sends
- dsp
- 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
- Multi Processors (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于FPGA的异步双FIFO的数据缓存方法,该数据缓存方法是数据接收端和数据发送端都由FPGA、DSP和PC组成,发送端由DSP接收来自PC的数据,发送到FPGA,接收端由DSP接收来自FPGA的数据,发送到PC机进行数据显示或存储处理,接收端和发送端的FPGA均具有异步双FIFO,两个FIFO交替工作,轮流执行读、写功能,使发送端分段接、连续发,接收端连续接、分段发。本发明采用两个FIFO之间的读、写、空、满信号,两个FIFO交替工作,轮流执行读、写功能,更好的避免了亚稳态的出现,避免了单FIFO造成数据丢失的问题,避免了芯片一方在等待数据传输而造成工作效率低下等问题,提高了系统传输效率,性能更稳定可靠。
Description
技术领域
本发明涉及一种FPGA(现场可编程门阵列)与DSP(数字信号处理器)之间通信时因时钟不同步而需要的数据缓存方法,具体地说涉及一种基于FPGA的异步双FIFO(先入先出存储器)的数据缓存的实现方法。
背景技术
在现代集成电路设计中,由于设计规模的不断扩大,一个系统往往含有多个时钟芯片,因此不同时钟域芯片间的数据传递便成为集成电路芯片设计中的一个重点问题,一般需要通过采用满足要求的异步FIFO缓存数据来解决此问题,实现快速高效实时的数据传输,满足数字通信的需求。由于各个芯片间传递数据的协议不同,需要根据需要设计匹配的异步FIFO。FIFO存储器的本质是一块双端口数据内存,一个端口用于将数据存入FIFO,另一个端口用于将数据从FIFO中取出,因此FIFO的相关操作可以看做是两个指针的定位,写指针指向要写的内存部分,读指针指向要读的内存部分,FIFO控制器通过外部的读、写控制信号控制这两个指针的移动,并由此产生FIFO空或满信号。FIFO存储器设计难点主要有两个,1、空、满标志信号的产生,2、亚稳态导致产生错误的空、满信号。所以硬件上来实现FIFO存储器一般采用SRAM(静态随机存取存储器)单元来存取数据,读写指针通过采用格雷编码来实现计数。
在数据缓存问题上,目前主要采用单个FIFO读、写、空、满标志信号之间的控制,包括接收端处理数据和发送端处理数据,发送端由DSP接收来自PC的数据,发送到FPGA,数据发送速率相对较慢;接收端的DSP接收来自FPGA的数据,并对数据进行处理后送给PC显示或存储处理,数据存储速率也较慢,这样会因某些模块速率低造成系统效率低下问题。由于数字通信涉及的数据处理工作量很大,单纯的DSP或FPGA不能满足实时数字通信的要求,因存储数据不及时会造成数据丢失。
发明内容
本发明针对现有采用单个FIFO的数据缓存技术存在的不足,提供一种数据传送效率高、可靠性高的基于FPGA的异步双FIFO的数据缓存方法,可以提高异步时钟域间传递数据时缓存数据的传送效率和可靠性。
本发明的基于FPGA的异步双FIFO的数据缓存方法,是数据接收端和数据发送端都由FPGA、DSP和PC组成,发送端由DSP接收来自PC的数据,发送到FPGA,接收端由DSP接收来自FPGA的数据,发送到PC机进行数据显示或存储处理,接收端和发送端的FPGA均具有异步双FIFO,两个FIFO交替工作,轮流执行读、写功能;异步双FIFO的交替工作由逻辑控制其每个FIFO的读、写使能信号,使发送端分段接、连续发,接收端连续接、分段发,发送端DSP送来的分散数据经过FPGA的异步双FIFO后连续发出,接收端FPGA送来的连续数据经过其异步双FIFO处理后使其分段发出,使每个FIFO满时发送数据。
逻辑控制分为接收速率大于、等于、小于发送速率时的情况,发送端FPGA的数据接收速度慢于数据发送速度时,FIFO执行分段数据连续发送;接收端FPGA的数据接收速度快于数据发送速度时,FIFO执行连续数据分段发送。
本发明采用两个FIFO之间的读、写、空、满控制信号,两个FIFO交替工作,轮流执行读、写功能,更好的避免了亚稳态的出现,避免了单FIFO造成数据丢失的问题,避免了芯片一方在等待数据传输而造成工作效率低下等问题,提高了系统传输效率,性能更稳定可靠。
附图说明
图1为本发明的应用系统简图。
图2为接收数据速率分别大于、等于、小于发送速率时的读写时序图。
具体实施方式
本发明的应用系统如图1所示,该系统基于3L平台中FPGA与DSP之间的数据传输,采用System Generator搭建模块实现,具有良好的可移植性和设计灵活性。FIFO采用宽16bits深2048的block RAM实现,其深度可以扩展,且在SMT8096的实验板上得到验证。数据接收端和数据发送端都由FPGA、DSP和PC组成,发送端数据流为:PC->DSP->FPGA,发送端由DSP接收来自PC的数据,发送到FPGA,接收端数据流为:FPGA->DSP->PC,接收端由DSP接收来自FPGA的数据,发送到PC机进行数据显示或存储处理,接收端和发送端的FPGA均具有异步双FIFO,两个FIFO交替工作,轮流执行读、写功能。异步双FIFO的交替工作由特殊逻辑控制其每个FIFO的读、写使能信号,保证发送端分段接、连续发,接收端连续接、分段发,迁就DSP与PC处理数据速度慢、效率低的问题。发送端DSP送来的分散数据经过FPGA的异步双FIFO后连续发出,接收端FPGA送来的连续数据经过其异步双FIFO处理后使其分段发出,保证每个FIFO满时发送数据,从而保证数据处理的高效性。逻辑控制考虑了接收速率大于、等于、小于发送速率时的情况,避免了亚稳态的出现,从而提高了可靠性。
开始工作时写FIFO1,FIFO2闲置——状态A;当写满FIFO1后,读FIFO1,即FIFO1向外输出数据,写FIFO2——状态B;当写满FIFO2且读空FIFO1的情况下,读FIFO2,写FIFO1——状态C;当写满FIFO1且读空FIFO2的情况下,转为状态B,自此以后状态B、C交替。每一个FIFO的读信号或者写信号都由两个FIFO的读、写、空、满八个标志信号和芯片外部的使能信号控制。由上所述,一个FIFO满时才能向外部发送数据,不满时不发送数据,发送端便可以实现分段数据连续发,接收端便可以实现连续数据分段发送,保证数据处理的连续性,从而避免了某些快速器件有一些数据就工作,无数据就停止工作,频繁的交替于工作与非工作之间,使其以FIFO大小数据块来工作,提高了器件的工作效率。
图2给出了接收数据速度分别大于、等于、小于发送速率时的读写时序。发送端FPGA的数据接收速度慢于数据发送速度,需要FIFO执行分段数据连续发送,此时异步双FIFO的写缓存速度慢于读缓存速度。接收端FPGA的数据接收速度快于数据发送速度,需要FIFO执行连续数据分段发送,此时异步双FIFO的写缓存速度快于读缓存速度。
上述异步双FIFO的软件仿真结果和硬件验证结果均达到了预期的要求,完成了FPGA与DSP之间数据传输的设计。
Claims (2)
1.一种基于FPGA的异步双FIFO的数据缓存方法,其特征在于,该数据缓存方法是数据接收端和数据发送端都由FPGA、DSP和PC组成,发送端由DSP接收来自PC的数据,发送到FPGA,接收端由DSP接收来自FPGA的数据,发送到PC机进行数据显示或存储处理,接收端和发送端的FPGA均具有异步双FIFO,两个FIFO交替工作,轮流执行读、写功能;异步双FIFO的交替工作由逻辑控制其每个FIFO的读、写使能信号,使发送端分段接、连续发,接收端连续接、分段发,发送端DSP送来的分散数据经过FPGA的异步双FIFO后连续发出,接收端FPGA送来的连续数据经过其异步双FIFO处理后使其分段发出,使每个FIFO满时发送数据。
2.根据权利要求1所述的基于FPGA的异步双FIFO的数据缓存方法,其特征在于:逻辑控制分为接收速率大于、等于、小于发送速率时的情况,发送端FPGA的数据接收速度慢于数据发送速度时,FIFO执行分段数据连续发送;接收端FPGA的数据接收速度快于数据发送速度时,FIFO执行连续数据分段发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101597832A CN101403962A (zh) | 2008-11-13 | 2008-11-13 | 基于fpga的异步双fifo的数据缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101597832A CN101403962A (zh) | 2008-11-13 | 2008-11-13 | 基于fpga的异步双fifo的数据缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101403962A true CN101403962A (zh) | 2009-04-08 |
Family
ID=40537991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101597832A Pending CN101403962A (zh) | 2008-11-13 | 2008-11-13 | 基于fpga的异步双fifo的数据缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101403962A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103760876A (zh) * | 2014-01-29 | 2014-04-30 | 北京七星华创电子股份有限公司 | 报警信息的存储方法及存储装置 |
CN105611378A (zh) * | 2015-12-28 | 2016-05-25 | 上海集成电路研发中心有限公司 | 一种基于fpga来扩展dsp处理图像数据位宽的方法 |
CN107301136A (zh) * | 2017-06-21 | 2017-10-27 | 天津光电通信技术有限公司 | 一种基于fpga实现数据间隔选择连续输出的方法 |
CN107832256A (zh) * | 2017-11-03 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种数据处理的方法及装置 |
CN110059354A (zh) * | 2019-03-14 | 2019-07-26 | 天津大学 | 一种基于fpga的电力系统实时机电暂态仿真方法 |
CN110598844A (zh) * | 2019-08-06 | 2019-12-20 | 天津大学 | 一种基于fpga的并行卷积神经网络加速器及加速方法 |
CN110825344A (zh) * | 2019-11-12 | 2020-02-21 | 天津飞腾信息技术有限公司 | 一种异步数据传输方法和结构 |
CN111193573A (zh) * | 2019-12-26 | 2020-05-22 | 西安空间无线电技术研究所 | 一种速率可调的fpga异步串口通信装置及方法 |
CN111971648A (zh) * | 2018-04-13 | 2020-11-20 | 德吉润股份有限公司 | 异步多时钟域数据流接合及再同步系统和方法 |
WO2024077890A1 (zh) * | 2022-10-12 | 2024-04-18 | 浪潮电子信息产业股份有限公司 | 一种异步fifo读写控制方法、系统及电子设备 |
-
2008
- 2008-11-13 CN CNA2008101597832A patent/CN101403962A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103760876A (zh) * | 2014-01-29 | 2014-04-30 | 北京七星华创电子股份有限公司 | 报警信息的存储方法及存储装置 |
CN105611378A (zh) * | 2015-12-28 | 2016-05-25 | 上海集成电路研发中心有限公司 | 一种基于fpga来扩展dsp处理图像数据位宽的方法 |
CN105611378B (zh) * | 2015-12-28 | 2018-12-18 | 上海集成电路研发中心有限公司 | 一种基于fpga来扩展dsp处理图像数据位宽的方法 |
CN107301136A (zh) * | 2017-06-21 | 2017-10-27 | 天津光电通信技术有限公司 | 一种基于fpga实现数据间隔选择连续输出的方法 |
CN107832256A (zh) * | 2017-11-03 | 2018-03-23 | 郑州云海信息技术有限公司 | 一种数据处理的方法及装置 |
CN111971648A (zh) * | 2018-04-13 | 2020-11-20 | 德吉润股份有限公司 | 异步多时钟域数据流接合及再同步系统和方法 |
CN110059354A (zh) * | 2019-03-14 | 2019-07-26 | 天津大学 | 一种基于fpga的电力系统实时机电暂态仿真方法 |
CN110598844A (zh) * | 2019-08-06 | 2019-12-20 | 天津大学 | 一种基于fpga的并行卷积神经网络加速器及加速方法 |
CN110825344A (zh) * | 2019-11-12 | 2020-02-21 | 天津飞腾信息技术有限公司 | 一种异步数据传输方法和结构 |
CN111193573A (zh) * | 2019-12-26 | 2020-05-22 | 西安空间无线电技术研究所 | 一种速率可调的fpga异步串口通信装置及方法 |
CN111193573B (zh) * | 2019-12-26 | 2022-04-22 | 西安空间无线电技术研究所 | 一种速率可调的fpga异步串口通信装置及方法 |
WO2024077890A1 (zh) * | 2022-10-12 | 2024-04-18 | 浪潮电子信息产业股份有限公司 | 一种异步fifo读写控制方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101403962A (zh) | 基于fpga的异步双fifo的数据缓存方法 | |
CN111832240B (zh) | Fifo数据传输方法及fifo存储装置 | |
CN104915303A (zh) | 基于PXIe总线的高速数字I/O系统 | |
CN104022775A (zh) | 一种面向SerDes技术中基于FIFO协议的数字接口电路 | |
US20080281996A1 (en) | Latency Insensitive FIFO Signaling Protocol | |
CN109902042B (zh) | 一种实现dsp与zynq之间高速数据传输的方法及系统 | |
CN112199071B (zh) | 一种地址可控异步缓存器及异步缓存方法 | |
CN113946297A (zh) | 基于FPGA和PCIe的光纤数据采集存储系统及方法 | |
CN103077132A (zh) | 一种高速缓存处理方法及协议处理器高速缓存控制单元 | |
CN102520892A (zh) | 多功能固态数据存储回放仪 | |
CN105553636A (zh) | 一种余度模式fc发送通道帧同步电路 | |
TW201319819A (zh) | 使用資料傳輸率節流來執行序列ata連接的資料傳輸之方法、電腦可讀媒體和計算裝置 | |
CN207718357U (zh) | 一种fifo存储器 | |
CN101350218B (zh) | 一种虚拟多端口存储器及其存储和读取数据的方法 | |
CN201378851Y (zh) | 一种ccd图像数据采集装置 | |
CN101833431B (zh) | 基于fpga实现的双向高速fifo存储器 | |
CN117908790A (zh) | 一种基于单Channel多Die的ONFI PHY快速切换训练装置 | |
CN105608028A (zh) | 基于emif接口和双口ram实现dsp与fpga高速通信方法 | |
CN110851390B (zh) | 一种基于fpga实现4m 1553b总线协议的方法及系统 | |
CN114185830A (zh) | 基于mailbox的多处理器通信方法、设备、系统和存储介质 | |
CN1293479C (zh) | 异步先进先出方式缓存数据时空信号或满信号的生成方法 | |
CN107608654B (zh) | 多路异步信息的传输控制装置及方法 | |
CN116383132A (zh) | Soc芯片及其数据存储方法 | |
CN116049054A (zh) | 一种spi从设备在跨时钟域中的数据读写方法及系统 | |
CN110134630B (zh) | 一种多输入单输出的发送缓存控制器设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090408 |