一种位宽可变的CRC校验算法及硬件实现*
2019-06-13朱正鹏朱旭锋刘益华
航天控制 2019年2期
朱正鹏 朱旭锋 李 宾 刘益华 王 超
北京航天自动控制研究所,北京100854
为保证箭上设备数据传输可靠性,箭载计算机设备普遍采用CRC进行数据校验。箭上各设备在收到消息字后需要首先进行CRC校验,校验正确即认为消息正确,然后根据消息中的指令数据控制相应设备输出,箭上计算机通信系统框图如图1所示。

图1 箭上计算机通信系统框图
传统的CRC校验算法是利用C语言在箭上设备DSP或者单片机等CPU处理器芯片上实现,随着可编程逻辑器件性能逐渐强大,很多箭上计算机设备不再配置处理器芯片,而采用硬件描述语言(HDL)在FPGA上实现实时的CRC校验算法。具体实现方式为通过各种通信接口(RS422、1553B、RS485和以太网)接收的数据在FPGA内完成CRC实时校验后将数据送到数据处理模块。
目前普遍使用的基于FPGA的CRC校验算法有传统串行计算法、查表法和并行计算公式推导法等。传统串行计算法只能处理固定位宽数据流,无法适应箭载计算机多种通信接口的需求。查表法优点在于易于实现,但是硬件资源耗费巨大,不满足箭上设备资源有限的要求[1-2]。而并行计算公式法虽然处理速度快,但也只能处理固定位宽数据。以上算法若要满足箭上快速可变位宽数据处理的要求,需要设置多个硬件模块,可移植性差,还会增加箭上设备功耗及硬件实现难度。
为适应新一代运载火箭箭上计算机设备的CRC校验需求,开发一种位宽可变的串行CRC校验算法,以少量硬件资源实现可变位宽输入数据的快速CRC编码,保证数据的快速实时处理以及传输可靠性,且模块化的设计思路利于程序的重复利用和不同箭上计算机设备硬件平台的移植。……
登录APP查看全文
