一种fifo异常处理方法及装置的制造方法_2

文档序号:8487705阅读:来源:国知局
常FIFO同组的所有FIFO ;
[0068]对该异常FIFO所在FIFO组中所有FIFO同时进行同步复位。
[0069]优先地,本实施例的FIFO异常处理方法可以利用FIFO的标识信息对各个FIFO进行异常检测,以及确定FIFO所在组的成员。具体的,本实施例的方法还包括:配置各个FIFO组中FIFO的控制标识信息;
[0070]上述对各个FIFO组中FIFO进行异常检测的过程可以包括:根据所述控制标识信息对同一个FIFO组中的FIFO进行异常检测;
[0071]上述获取当前FIFO所在FIFO组的第一个FIFO当前时刻的地址的过程可以包括:根据所述控制标识信息获取当前FIFO所在FIFO组的第一个FIFO当前时刻的地址;
[0072]上述获取与该异常FIFO同组的所有FIFO的过程可以包括:
[0073]根据所述控制标识信息获取与该异常FIFO同组的所有FIFO。
[0074]本实施例中控制标识信息可以为控制FIFO编号,如果某几个控制FIFO编号是相同的,则这几个FIFO是属于同一个FIFO组的。
[0075]本实施例的方法可以利用控制标识来对多组FIFO进行异常检测以及同步复位,下面通过一个简单的例子来说明本实施例异常处理方法:
[0076]假设有10个串联的FIF0,可以将10个FIFO划分为两个FIFO组,其中第1、3、5、7、9FIF0构成第一 FIFO组,第2、4、6、8、10FIF0构成第二 FIFO组;分别给第一、二 FIFO组中的FIFO进行编号,第一组中FIFO的编号为11、12、13、14、15,第二组中FIFO的编号为21、22、23、24、25 ;
[0077]在对10个FIFO进行检测时可以根据编号对同组的FIFO进行地址同步检测,具体地,从第一个FIFO (11)开始检测,获取第二个FIFO时该FIFO的编号为21,说明第二个FIFO (21)与第一个FIFO (11)不属于同一组,然后跳过对第二 FIFO的地址同步检测,同时获取第三个FIFO的编号,以此类推,直到将第一 FIFO组中的FIFO检测完(11、12、13、14、15)。对于第二 FIFO组的检测也是按照同样的方式进行的,直至完成所有FIFO组中FIFO检测。
[0078]以第一 FIFO组中的FIFO (编号12)为例来说明检测其中某个FIFO的地址是否存在地址不同步的具体过程:当检测到该FIFO时,获取所有FIFO当前时刻的读地址或者写地址,即获取10个FIFO当前时刻的读或写地址;然后根据编号获取该FIFO所在FIFO组的第一个FIFO当前时刻的地址,获取由于各FIFO编号已知,确定编号为11的FIFO为第一 FIFO组中第一个FIFO,编号11的FIFO的读或写地址即为当前检测FIFO所在FIFO组的第一个FIFO当前时刻的读或写地址;接着将当前检测的FIFO即编号为12的FIFO的读或写地址与编号为11的FIFO的读或写地址进行比较,若相同,则说明当前检测的FIFO不存在地址不同步,若不同,则说明当前检测的FIFO存在地址不同步。
[0079]当编号为12的FIFO存在读或写地址不同步时,将其余九个FIFO的编号与当前检测的FIFO的编号比较,若第一位编号相同则说明是与该FIFO属于同一组,通过比较得出,编号为11、13、14、15的FIFO是与编号为12的FIFO属于第一 FIFO组,此时,对第一 FIFO组中所有的FIFO同时进行同步复位。
[0080]应当理解的是:FIF0组中第一 FIFO的地址不仅限与上述采用标识的方式获取,也可以是在检测过程中,当检测到FIFO组中第一 FIFO时就记录下来,用来为后续的FIFO地址同步判断提供依据。
[0081]为了能够防止检测时FIFO的地址跳变导致不能精确地检测各FIFO的地址不同步,本实施例的方法在获取FIFO的地址之前还包括:锁存所有FIFO当前的地址;例如,向所有FIFO发出地址锁存信号。FIFO在接到这个信号后,将当前的地址锁存到缓存上,这个地址保持不变。
[0082]本实施例异常处理方法还可以包括:对各个FIFO进行读写使能的初始化处理;
[0083]此时获取当前时刻所有FIFO的地址之前还可以包括:检测当前FIFO的初始化是否已经完成,若完成,则获取当前时刻所有FIFO的地址,如果未完成则对下一个FIFO进行异常检测。
[0084]一般地,对于FIFO是有读写使能信号控制FIFO的读写的,本实施例方法可以配置信息控制各FIFO的读写使能,实现相应数据处理的功能。当FIFO复位后,可以对FIFO读写使能进行初始化处理,当FIFO初始化完成则将初始化完成标志initial_ok置0,表示FIFO还未完成初始化,当FIFO中的数据量增加到FIFO深度的一半的时候,FIFO的初始化完成,initial_ok 置 I。
[0085]如图2所示,下面通过检测FIFO地址来详细说明本实施例的异常处理方法的过程,具体的步骤包括:
[0086]步骤201:检测当前FIFO初始化是否完成,若是,则执行步骤202 ;若否,则执行步骤 206。
[0087]针对多个FIFO组,可以从第一个FIFO开始检测,可以给每个FIFO进行编号,当检测完一个编号加I,进入下个FIFO的检测。
[0088]步骤202:向所有FIFO发出地址锁存信号将各FIFO当前的地址进行锁存。
[0089]步骤203:读取当前FIFO的读地址和该FIFO所在FIFO组的第一个FIFO的读地址。
[0090]步骤204:比较两个地址,如果不同,则进入步骤205,如果相同,则进入206。
[0091]步骤205:找出与当前FIFO在同一个FIFO组的所有FIF0,产生同组FIFO复位信号对与该FIFO所在FIFO组中所有的FIFO同时进行复位。
[0092]步骤206:进入下一个FIFO的地址检测,返回步骤201开始检测初始化是否完成。
[0093]本实施例的检测过程中当某个FIFO组中FIFO的一个地址检测完毕后还可以包括读写地址检测转换,即当FIFO组读或写地址检测完毕后,继续检测该FIFO组的写或读地址是否同步,完成该FIFO组读写地址的检测。
[0094]本实施例的方法可以实现多路同组FIFO的地址检测以及同组FIFO的复位,并且能够对同组FIFO的读地址和写地址进行轮询检测。通过软件设置各个FIFO的ctrl_fifo_num值,还可实现多路同组FIFO灵活配置。
[0095]实施例二:
[0096]如图3所示,本实施例提供了一种FIFO异常处理装置,包括:检测模块和同步复位模块;
[0097]所述检测模块用于在至少一个FIFO组的工作过程中,对各个FIFO组中的FIFO进行异常检测;
[0098]所述同步复位模块用于当所述检测模块检测到FIFO存在异常时,对异常FIFO所在的FIFO组进行同步复位。
[0099]优先地,所述异常检测包括:检测FIFO是否存在地址不同步,或者检测FIFO是否出现空或满状态。
[0100]优先地,所述检测模块用于检测检测FIFO是否存在地址不同步的过程包括:
[0101]在对当前FIFO进行检测时,获取当前时刻所有FIFO的地址;
[0102]获取当前FIFO所在FIFO组的第一个FIFO当前时刻的地址;
[0103]比较当前FIFO的地址与所述第一个FIFO当前时刻的地址,如果不同,则该FIFO存在地址不同步;
[0104]所述同步复位模块用于获取与该异常FIFO同组的所有FIF0,对该异常FIFO所在FIFO组中所有FIFO同时进行同步复位。
[0105]如图4所示,所述装置还包括配置模块;
[0106]所述配置模块用于在对各个FIFO组中的FIFO进行异常检测之前,配置各个FIFO组中FIFO的控制标识信息;
[0107]所述检测模块用于根据所述控制标识信息对同一个FIFO组中的FIFO进行异常检测,在异常检测过程中,根据所述控制标识信息获取当前FIFO所在FIFO组的第一个FIFO当前时刻的地址;
[0108]所述同步复位模块用于根据所述控制标识信息获取与该异常FIFO同组的所有FIFO。
[0109]优先地,所述检测模块还用于在获取当前时刻所有FIFO的地址之前锁存所有FIFO当前时刻的地址。
[0110]优先地,如图5所示,所述装置还包括:初始化处理模块;
[0111]所述初始化处理模块用于对各个FIFO进行读写使能的初始化处理;
[0112]所述检测模块还用于在获取当前时刻所有FIFO的地址之前检测当前FIFO的初始化是否已经完成,若完成,则获取当前时刻所有FIFO的地址。
[0113]本实施例的异常处理装置,可以对多组FIFO进行异常检测,并且在发现异常时进行同组FIFO的复位。
[0114]实施例三:
[0115]本实施例将以一种FIFO地址异常处理系统来详细介绍本发明的异常处理方法,如图6所示,该系统包括:FIF0组、状态控制模块、地址检测模块、同组FIFO复位模块以及CPU配置模块;
[0116]FIFO组:实现相应功能的数据缓存模块组,由N个FIFO构成;每个FIFO需要根据读写使能分别产生自增的读写地址,然后根据地址给出对应FIFO的空满状态指示,以及上下水线位置指示。
[0117]状态控制模块:根据软件下达的
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1