新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的星载计算机自检EDAC电路设计

基于FPGA的星载计算机自检EDAC电路设计

作者:时间:2012-08-30来源:网络收藏

SEU造成的RAM单元1比特错误如果不定时清除,就会产生累积,使由此处理的结 果产生出2比特甚至更多比特错误,这种情况下将无法采用功能进行数据纠错,导致系 统错误操作甚至任务失败。因此定时对RAM存储单元进行更新是必要的,但在传统电路 设计下,对RAM存储单元的更新只能由的CPU(单片机)进行,其操作流程如下:

(1) 从存储单元读出数据;

(2) 将读出数据重写入;

(3) 重复(1)~(2),直至全部单元更新完。

以航天常用的80C32单片机为例,CPU对外部存储单元的读或写操作需要2个指令 周期,读完再写入需要4个指令周期,每个指令周期包含12个时钟。假设CPU时钟为20MHz, 更新1M个RAM存储单元需要的CPU时间为:4×12×1M 20MHz = 2.4s。

对于星上非常紧张的CPU资源来说,这是难以接受的,大大增加了星上CPU软件的设计难 度。这种方法的另一个大的缺点是无法获得数据错误信息,因为CPU直接读取的是纠错后的 数据,所以无法对星上SEU造成RAM单元出错的概率和错误模式进行统计。

3 基于的自检设计

3.1 功能分析

由于的内部大量的逻辑资源,使EDAC电路设计可以实现更加复杂的功能。在计 算机中,为了提高效率并节省CPU资源,一个理想的EDAC电路设计,应具有以下三部分功能:

(1)数据读写功能。在CPU写操作时,对原始数据进行编码,生成校验码,并将原始数 据和校验码存储;在CPU读操作时,从存储器中取出原始数据和校验码,进行计算,如有错 误,将错误纠正后输出,如无错误,直接将原始数据输出。

(2)自检、自纠错功能。在CPU控制要求下,可自动对所有EDAC保护的RAM存储区进行 顺序读取和校验,检测出错误数据或校验码。在自检状态下,如果由CPU配置为自纠错状态, 当某一RAM单元检测出单比特错误后,自动将正确数据和校验码重新写入该RAM单元。该项功 能的实施,基本上可保证SEU对计算机RAM区造成的影响及时得到修复。

(3)错误信息处理功能。在CPU读操作或者自检状态下,通过输出错误标志信号,对CPU 产生中断,对产生的错误进行相应处理。在CPU读操作或者自检状态下,如果检测出错误, 将出错的地址、原始数据和校验码进行暂存,可由CPU读取,进行相应处理。

3.2 设计与实现

根据以上分析,笔者设计了如图2所示的自检EDAC电路,EDAC的功能主要由来实现。 到目前为止,具有航天等级的FPGA芯片已经具有内置的CPU硬核以及高达2.5Mbit的RAM资源, 因此该设计中的CPU和RAM模块均可以是FPGA内部资源,当内部资源无法满足设计要求时,也 可以采用外置CPU芯片或外置RAM芯片。



关键词: FPGA EDAC 星载 计算机

评论


相关推荐

技术专区

关闭