CN102866874B - 通用异步fifo模块存储方法 - Google Patents

通用异步fifo模块存储方法 Download PDF

Info

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
Application number
CN201210312561.6A
Other languages
English (en)
Other versions
CN102866874A (zh
Inventor
吴志兵
孙光辉
于金泳
孙义勇
任雨
周世亮
卢秋刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201210312561.6A priority Critical patent/CN102866874B/zh
Publication of CN102866874A publication Critical patent/CN102866874A/zh
Application granted granted Critical
Publication of CN102866874B publication Critical patent/CN102866874B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)

Abstract

通用异步FIFO模块存储方法,涉及通用异步FIFO模块存储方法。它为了解决解决现有异步FIFO模块存在对于D锁存器存储结构FIFO的IP核不能够使用问题。本发明通过输入信号给FIFO模块实现复位,当清零信号为高,在任意写信号或读信号上升沿到来时,根据写地址和读地址的关系判断双口RAM是否将要写满或读空,并据此置位标志位flag,当清零信号为高时判断FIFO模块的写使能位是否为高,若是则返回程序顶部,若否则向RAM写入当前数据返回程序顶部;当清零信号为高时判断FIFO模块的读使能位是否为高,若是则返回程序顶部;若否则从RAM向外读当前数据返回程序顶部。本发明适用于电子领域。

Description

通用异步FIFO模块存储方法
技术领域
本发明涉及一种存储方法,具体涉及通用异步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,执行步骤二。
CN201210312561.6A 2012-08-29 2012-08-29 通用异步fifo模块存储方法 Expired - Fee Related CN102866874B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809038B (zh) * 2014-01-24 2020-03-17 中兴通讯股份有限公司 一种fifo异常处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 一种先入先出存储器及其读写地址的调整方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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