利用FPGA实现模式可变的卫星数据存储器纠错系统
表1 实用参数下汉明码与TMR差率的近似比较
σ | 1×10 -10 | 2×10 -10 | 5×10 -10 | 1×10 -9 |
1-ham | 4.6×10 -12 | 1.8×10 -11 | 1.2×10 -10 | 4.6×10 -10 |
1-TMR | 9.6×10 -13 | 3.8×10 -12 | 2.4×10 -11 | 9.6×10 -11 |
τ | 5 | 5 | 5 | 5 |
计算结果表明,在前述参数范围内,汉明码纠错的差错率约是TMR的5倍。而且,两种系统的差错率都与σ的平方近似成正比。可见即使采取内存纠错,设法降低σ仍是根据提高系统可靠性的主要措施。
系统的时序性能是考虑的另一个关键因素。尤其是在高达几十兆赫的内存总线上,编解码运算较为繁琐的汉明码方案有着相当的局限性。而TMR方案只需进行简单的2/3判决,通常更能胜任苛刻的内存访问时间要求[4]。
2 可变方案配置
从上述比较可以看出,两种方案各有优势,适合在不同的环境条件和数据安全需求下应用。而星载计算机的通用性也要求数据存储器具有一定程度的灵活性。在综合上述两种方案的基础,结合目前飞速发展的现场可编程逻辑门阵列(FPGA)技术,提供了一种可以根据需要在线改变配置,分别实现上述两种EDAC方法的数据存储器方案。
2.1 可变内存配置
前述两种EDAC方法对于内存的配置是不同的。(22,16)汉明码一般采用16bit+8bit的内存芯片器件实现。而TMR则采用3×16bit的芯片实现。若要支持两种方法,必须为存储器设计一种特别的内存配置方式。这是模式可变的基础和关键。图1为可变内存配置方案。
javascript:window.open(this.src);" style="cursor:pointer;"/>
这个数据存储系统是由3个位于同一条地址总线上的16bit内存模块组成。每个内存模块还可以单独片选其高字节或低字节。这样通过片选信号ah、al、bh、bl、ch、cl的控制,实际上有6个宽度为8bit的内存模块可以单独访问。48bit(3×16bit)的数据线全部接入EDAC控制模块。当系统工作在TMR模式时,ah、al、bh、bl、ch、cl被相同的片选信号驱动。这样就构成了TMR需要的一个3×16bit冗余内存空间。当系统工作在汉明码模式时,ah,al、bh一组,bl、ch、cl一组,分别被相同的片选信号驱动,构成了两个独立的16+8bit存储空间。对于(22,16)汉明码,每一个空间实际使用增加一倍。另外,系统还可以工作在无差错控制模式下。这时,ah、al一组,bh、bl一组,ch、cl一组,分别被相同的片选信号驱动,构成了三个独立的16bit存储空间。这种配置下的内存地址空间比TMR模式下增加两倍。在这些配置模式中,片选的地址译码都在EDAC控制模式中完成。
2.2 可变纠错方案的系统结构
一个基于上述内存配置方案的模式可变数据存储系统以一个RAM芯片组作为内存载体。可变纠错方案的系统结构见图2。除了内存模块外,还应该包含以下功能模块:
(1)TMR读写取判决模块。TMR工作模式下,完成读取和写入操作中的冗余判决和数据分配逻辑。这个模块的具体设计已经在1.2节中详细介绍了。
(2)汉明码编码模块。汉明码工作模式下,在向内存写入数据时完成编码运算。
(3)汉明码纠错模块。汉明码工作模式下,在从内存读出数据时完成检错和纠错运算。(2)、(3)这两个模块的算法原理采用了1.1节中介绍的方案。
(4)地址逻辑模块和模式控制模块。配合各种工作模式,控制相应的模块工作信号和相应的内存片选信号,完成附加地址译码,正确访问RAM崆,实现对物理内存的分配管理。
为此,采用FPGA设计了EDAC专用芯片,实现了这些模块,并与内存模块相连接,组成了完整的纠错模式可变的数据存储系统。在这个系统中,完成写入操作时,总线数据通过EDAC-FPGA以合适的形式存入RAM芯片组;完成读出操作时,EDAC-FPGA将RAM芯片组的内容读出并处理(解码或判决)后放在系统总线上。
2.3 可变方案配置的特点
根据不同任务的具体特点,卫星数据处理系统对于内存的数量和质量的要求也有所不同。例如在处理上传指令和下载星上仪器状态时,要求数据有很高的可靠性,而对于内存容量则没有特点的要求;而在处理某些用途的遥测图像数据时,需要较大的内存容量,而对可靠性的要求则相应较低。传统的内存配置在硬件完成后很难更改。如果完全基于软件纠错也能实现相当程度的灵活性,但软件纠错带给CPU的大量运算负荷使得这种灵活性有些得不偿失。
javascript:window.open(this.src);" style="cursor:pointer;"/>
可变纠错方案与无纠错机制的内存系统相比,仅仅在硬件上增加了一块FPGA,对于软件则是完全透明的。而且,在星载数据处理系统中往往还有其他需要使用FPGA的场合,这块FPGA的内容完全可以通过综合设计,整合到其他诸如总线逻辑之类的FPGA之中。
此外,由于在多种配置模式下一部分物理内存的内容意义是一致的,因此如果辅之以软件的配合,将关键代码、数据段置于该段内存之中,就可以实现在不重新启动计算机系统的前提下更改内存纠错方案配置,完成模式切换,保证某些关键任务不中断。
总之,基于FPGA实现的硬件可变配置方案以最小的硬件、软件代介,提供了最大的内存配置灵活性,充分满足了各种需求,而且节约了RAM的硬件资源和功耗。
3 硬件实现
3.1 FPGA的编程与实现
通过对目前广泛使用的FPGA器件的分析和比较,选择使用了具有较高性价比的Xilinx Spartan系列FPGA进行原型试验。该系列产品还具有3.3V电源供应兼容5V I/O、休眠状态、更快的逻辑速度等特点。为避免FPGA本身受单粒子翻转效应影响,在实际的航天任务中,将采用基于熔丝技术的Actel公司的FPGA产品。
本应用具有很强的模块性,笔者采用了标准VHDL语言描述,结构清晰,同时为将来的移植提供了方便。模块的划分基于图2的思想,又同时考虑到VHDL模块的习惯要求以及实践中可综合性和方便性。在具体的VHDL实现过程中,该系统由五种VHDL实体(entity)模块组成:
(1)3bitcomp:TMR的比特逻辑单元,实际比特级的信息备份和纠错判决;
(2)tmr:TMR功能模块,包括16个3bitcomp实体(对应16位总线);
(3)hamming:汉明码编码/纠错功能模块;
(4)hammeminf:hamming实体的22位内存接口与48位内存数据线之间的转换接口;
(5)eadc:最高层实体,包括以上4种实体和必需的逻辑控制、数据接口等。
它们的关系如图3所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>