CN102866874B - 通用异步fifo模块存储方法 - Google Patents
通用异步fifo模块存储方法 Download PDFInfo
- Publication number
- CN102866874B CN102866874B CN201210312561.6A CN201210312561A CN102866874B CN 102866874 B CN102866874 B CN 102866874B CN 201210312561 A CN201210312561 A CN 201210312561A CN 102866874 B CN102866874 B CN 102866874B
- Authority
- CN
- China
- Prior art keywords
- judged
- perform step
- ram
- read
- perform
- 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.)
- Expired - Fee Related
Links
Landscapes
- Communication Control (AREA)
Abstract
通用异步FIFO模块存储方法,涉及通用异步FIFO模块存储方法。它为了解决解决现有异步FIFO模块存在对于D锁存器存储结构FIFO的IP核不能够使用问题。本发明通过输入信号给FIFO模块实现复位,当清零信号为高,在任意写信号或读信号上升沿到来时,根据写地址和读地址的关系判断双口RAM是否将要写满或读空,并据此置位标志位flag,当清零信号为高时判断FIFO模块的写使能位是否为高,若是则返回程序顶部,若否则向RAM写入当前数据返回程序顶部;当清零信号为高时判断FIFO模块的读使能位是否为高,若是则返回程序顶部;若否则从RAM向外读当前数据返回程序顶部。本发明适用于电子领域。
Description
技术领域
本发明涉及一种存储方法,具体涉及通用异步FIFO模块存储方法。
背景技术
现有的异步FIFO模块都是针对RAM架构设计的,例如Altera公司设计的FIFO模块IP核,其内部的存储空间是双口RAM。对于FPGA,RAM以及部分CPLD,这种架构是有效和可以使用的,但是对于某些型号的CPLD,例如EPM1270系列,由于它的内部不存在RAM存储结构,而只有基于D锁存器的存储结构。因此现有的异步FIFO模块存在对于D锁存器的存储结构FIFO的IP核不能够使用的问题。
发明内容
本发明为了解决现有的异步FIFO模块存在对于D锁存器的存储结构FIFO的IP核不能够使用的问题,从而提出了通用异步FIFO模块存储方法。
通用异步FIFO模块存储方法,它包括下述步骤:
步骤一、通过输入信号给FIFO模块实现复位,用于将FIFO模块的地址位和状态位初始化,执行步骤二;
步骤二、判断FIFO模块的清零信号是否为低,判断为是,执行步骤一;判断为否,执行步骤三;
步骤三、判断FIFO模块的输入信号是否为读信号,判断为是,执行步骤四;判断为否,执行步骤五;
步骤四、判断所述读信号上升沿是否到来,判断为是,执行步骤十二和步骤六;判断为否,执行步骤二;
步骤五、判断FIFO模块的写信号上升沿是否到来,判断为是,同时执行步骤十和步骤六;判断为否,执行步骤二;
步骤六、判断读地址是否等于写地址加1,判断为是,执行步骤七;判断为否,执行步骤八;
步骤七、将RAM状态辅助标志位flag置1,执行步骤二;
步骤八、判断写地址是否等于读地址加1,判断为是,执行步骤九;判断为否,执行步骤二;
步骤九、将RAM状态辅助标志位flag置0,执行步骤二;
步骤十、判断FIFO模块的写使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十一;
步骤十一、向RAM写入当前数据,返回执行步骤二;
步骤十二、判断FIFO模块的读使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十三;
步骤十三、从RAM向外读当前数据,返回执行步骤二。
本发明所述的通用异步FIFO模块存储方法达到了对于D锁存器的存储结构FIFO的IP核能够使用的目的,它不但能够在RAM结构下运行,也能够在基于D锁存器存储结构的PLD器件上运行,使得不同时钟域的数字电路能够进行互不干扰的有效地信息交互。
附图说明
图1为通用异步FIFO模块存储方法的工作流程图,
图2为步骤步骤十一向RAM写入当前数据的具体步骤流程图;
图3为步骤十三从RAM向外读当前数据的具体步骤流程图;
图4为具体实施方式一的仿真波形图。
具体实施方式
具体实施方式一、结合图1具体说明本实施方式,本实施方式所述的通用异步FIFO模块存储方法的步骤为:
步骤一、通过输入信号给FIFO模块实现复位,用于将FIFO模块的地址位和状态位初始化,执行步骤二;
步骤二、判断FIFO模块的清零信号是否为低,判断为是,执行步骤一;判断为否,执行步骤三;
步骤三、判断FIFO模块的输入信号是否为读信号,判断为是,执行步骤四;判断为否,执行步骤五;
步骤四、判断所述读信号上升沿是否到来,判断为是,执行步骤十二和步骤六;判断为否,执行步骤二;
步骤五、判断FIFO模块的写信号上升沿是否到来,判断为是,同时执行步骤十和步骤六;判断为否,执行步骤二;
步骤六、判断读地址是否等于写地址加1,判断为是,执行步骤七;判断为否,执行步骤八;
步骤七、将RAM状态辅助标志位flag置1,执行步骤二;
flag为RAM状态辅助标志位,为1时表示RAM将要被写满,为0时表示RAM将要被读空,
步骤八、判断写地址是否等于读地址加1,判断为是,执行步骤九;判断为否,执行步骤二;
步骤九、将RAM状态辅助标志位flag置0,执行步骤二;
步骤十、判断FIFO模块的写使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十一;
步骤十一、向RAM写入当前数据,返回执行步骤二;
步骤十二、判断FIFO模块的读使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十三;
步骤十三、从RAM向外读当前数据,返回执行步骤二。
本实施方式本不但能够在RAM结构下运行,也能够在基于D锁存器存储结构的PLD器件上运行,使得不同时钟域的数字电路能够进行互不干扰的有效地信息交互。
本实施方式可以实现任意深度的异步FIFO传输,不会发生数据错误和覆盖,当平均读速度比写速度快时,也不会发生数据丢失,可以在所有FPGA和CPLD上运行,不会受PLD器件的架构的影响,克服了Altera公司设计的IP核不能在某些CPLD中使用的毛病。仿真结果如图4所示。
具体实施方式二、结合图2具体说明本实施方式,本实施方式与具体实施方式一所述的通用异步FIFO模块存储方法的区别在于,步骤十一所述的向RAM写入当前数据的具体步骤为:
步骤十一一、判断写地址是否等于读地址,判断为是,执行步骤十一三;判断为否,执行步骤十一二;
步骤十一二、向RAM写入当前数据,写地址加1,写满标志置0,执行步骤二;
步骤十一三、判断RAM状态辅助标志位flag是否为真,判断为是,执行步骤十五;判断为否,执行步骤十四;
步骤十一四、写满标志置1,执行步骤二;
步骤十一五、向RAM写入当前数据,写地址加1,写满标志置0,执行步骤二。
具体实施方式三、结合图3具体说明本实施方式,本实施方式与具体实施方式一所述的通用异步FIFO模块存储方法的区别在于,步骤十三所述的从RAM向外读当前数据的具体步骤为:
步骤十三一、判断读地址是否等于写地址,判断为是,执行步骤十三二;判断为否,执行步骤十三三;
步骤十三二、判断RAM状态辅助标志位flag是否为假,判断为是,执行步骤十三五;判断为否,执行步骤十三四;
步骤十三三、从RAM向外读当前数据,读地址加1,读空标志置0,执行步骤二;
步骤十三四、读空标志置1,执行步骤二;
步骤十三五、从RAM向外读当前数据,读地址加1,读空标志置0,执行步骤二。
本发明的原理为:先给FIFO复位,将地址和状态位初始化,当清零信号为低时,系统一直处于复位状态:当清零信号为高,在任意写信号或读信号上升沿到来时,根据写地址和读地址的关系判断双口RAM是否将要写满或读空,并据此置位标志位RAM状态辅助标志位flag,若写地址加1等于读地址,则将RAM状态辅助标志位flag置1,若写地址等于读地址加1,则将RAM状态辅助标志位flag置0,其它的情况RAM状态辅助标志位flag保持不变。
当清零信号为高,写信号上升沿到来时,检查写使能位,当其为高时,返回程序顶部,重新检查清零信号,当其为低时,检查写地址和读地址的关系。当写地址不等于读地址时,向RAM写入当前数,写地址加1,写满标志置0;当写地址等于读地址时,根据RAM状态辅助标志位flag的真假决定是正常写数还是置位写满标志位,完成操作后返回程序顶部。
当清零信号为高,读信号上升沿到来时,检查读使能位,当其为高时,返回程序顶部,重新检查清零信号,当其为低时,检查写地址和读地址的关系。当写地址不等于读地址时,从RAM向外输出数据,读地址加1,读空标志置0;当写地址等于读地址时,根据RAM状态辅助标志位flag的真假决定是正常读数还是置位读空标志,完成操作后返回程序顶部。
Claims (3)
1.通用异步FIFO模块存储方法,其特征在于:它包括下述步骤:
步骤一、通过输入信号给FIFO模块实现复位,用于将FIFO模块的地址位和状态位初始化,执行步骤二;
步骤二、判断FIFO模块的清零信号是否为低,判断为是,执行步骤一;判断为否,执行步骤三;
步骤三、判断FIFO模块的输入信号是否为读信号,判断为是,执行步骤四;判断为否,执行步骤五;
步骤四、判断所述读信号上升沿是否到来,判断为是,同时执行步骤十二和步骤六;判断为否,执行步骤二;
步骤五、判断FIFO模块的写信号上升沿是否到来,判断为是,同时执行步骤十和步骤六;判断为否,执行步骤二;
步骤六、判断读地址是否等于写地址加1,判断为是,执行步骤七;判断为否,执行步骤八;
步骤七、将RAM状态辅助标志位flag置1,执行步骤二;
步骤八、判断写地址是否等于读地址加1,判断为是,执行步骤九;判断为否,执行步骤二;
步骤九、将RAM状态辅助标志位flag置0,执行步骤二;
步骤十、判断FIFO模块的写使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十一;
步骤十一、向RAM写入当前数据,返回执行步骤二;
步骤十二、判断FIFO模块的读使能位是否为高,判断为是,执行步骤二;判断为否,执行步骤十三;
步骤十三、从RAM向外读当前数据,返回执行步骤二。
2.根据权利要求1所述的通用异步FIFO模块存储方法,其特征在于:步骤十一所述的向RAM写入当前数据的具体步骤为:
步骤十一一、判断写地址是否等于读地址,判断为是,执行步骤十一三;判断为否,执行步骤十一二;
步骤十一二、向RAM写入当前数据,写地址加1,写满标志置0,执行步骤二;
步骤十一三、判断RAM状态辅助标志位flag是否为真,判断为是,执行步骤十一五;判断为否,执行步骤十一四;
步骤十一四、写满标志置1,执行步骤二;
步骤十一五、向RAM写入当前数据,写地址加1,写满标志置0,执行步骤二。
3.根据权利要求1所述的通用异步FIFO模块存储方法,其特征在于:步骤十三所述的从RAM向外读当前数据的具体步骤为:
步骤十三一、判断读地址是否等于写地址,判断为是,执行步骤十三二;判断为否,执行步骤十三三;
步骤十三二、判断RAM状态辅助标志位flag是否为假,判断为是,执行步骤十三五;判断为否,执行步骤十三四;
步骤十三三、从RAM向外读当前数据,读地址加1,读空标志置0,执行步骤二;
步骤十三四、读空标志置1,执行步骤二;
步骤十三五、从RAM向外读当前数据,读地址加1,读空标志置0,执行步骤二。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210312561.6A CN102866874B (zh) | 2012-08-29 | 2012-08-29 | 通用异步fifo模块存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210312561.6A CN102866874B (zh) | 2012-08-29 | 2012-08-29 | 通用异步fifo模块存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102866874A CN102866874A (zh) | 2013-01-09 |
CN102866874B true CN102866874B (zh) | 2014-12-24 |
Family
ID=47445759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210312561.6A Expired - Fee Related CN102866874B (zh) | 2012-08-29 | 2012-08-29 | 通用异步fifo模块存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102866874B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809038B (zh) * | 2014-01-24 | 2020-03-17 | 中兴通讯股份有限公司 | 一种fifo异常处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899352A (en) * | 1986-09-25 | 1990-02-06 | Telettra Telefonia Elettronica E Radio S.P.A. | System and device to interface asynchronous apparatuses |
CN1725367A (zh) * | 2004-07-23 | 2006-01-25 | 华为技术有限公司 | 一种先入先出存储器及其读写地址的调整方法 |
-
2012
- 2012-08-29 CN CN201210312561.6A patent/CN102866874B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899352A (en) * | 1986-09-25 | 1990-02-06 | Telettra Telefonia Elettronica E Radio S.P.A. | System and device to interface asynchronous apparatuses |
CN1725367A (zh) * | 2004-07-23 | 2006-01-25 | 华为技术有限公司 | 一种先入先出存储器及其读写地址的调整方法 |
Non-Patent Citations (1)
Title |
---|
Camera Link接口的异步FIFO设计与实现;宋振丰等;《电子技术应用》;20091231;第35卷(第12期);第61-64页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102866874A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9536024B2 (en) | Methods for static checking of asynchronous clock domain crossings | |
US7536662B2 (en) | Method for recognizing and verifying FIFO structures in integrated circuit designs | |
US9235460B2 (en) | Methods and apparatus for automatic fault detection | |
EP3206208A1 (en) | System and method for memory initialization of an integrated circuit | |
US20150120268A1 (en) | Method and apparatus for simulating a digital circuit | |
CN102866874B (zh) | 通用异步fifo模块存储方法 | |
CN107463470B (zh) | 通道冲突检测方法及系统 | |
CN105447213B (zh) | 用于对电路设计进行仿真的方法和装置 | |
CN105573947B (zh) | 一种基于apb总线的sd/mmc卡控制方法 | |
CN103257905A (zh) | 一种嵌入式计算机系统内存数据校验电路及方法 | |
US8671383B2 (en) | Viewing and debugging HDL designs having SystemVerilog interface constructs | |
CN115952762B (zh) | 一种芯片仿真功能覆盖率检测方法、装置及检测系统 | |
EP2735927A2 (en) | Data processing apparatus and method in PLC system | |
US8555228B2 (en) | Tool for glitch removal | |
CN201813360U (zh) | 一种旗语电路 | |
Hsu et al. | Speeding up power verification by merging equivalent power domains in RTL design with UPF | |
US8988960B2 (en) | Technique for improving static random-access memory sense amplifier voltage differential | |
CN112464500A (zh) | 备份cell替换电路验证方法、装置、存储介质和终端 | |
US8392778B2 (en) | Clock domain check method, clock domain check program, and recording medium | |
US20020126581A1 (en) | Method of analyzing clock skew between signals | |
CN105302688B (zh) | 一种并行总线自检方法及系统 | |
JP6138666B2 (ja) | 車載用制御装置のロギングシステム | |
CN110781118B (zh) | 实现并行总线从模式的方法及装置、计算机设备、介质 | |
CN105653378B (zh) | 微处理器异步读取外设fifo长度的方法 | |
García-Valderas et al. | An Extension of Transient Fault Emulation Techniques to Circuits with Embedded Memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141224 Termination date: 20150829 |
|
EXPY | Termination of patent right or utility model |