(公开)载人航天FPGA软件的安全编程
FPGA软件研制技术流程
FPGA软件研制的核心在于精细的技术流程管理。一个典型的FPGA软件研制项目,从最初的需求分析到最后的产品交付,会经历以下几个主要阶段:
任务分析:明确项目目标和需求,包括理解项目背景、阐明项目目标、计划资源利用、评估风险和规划项目后续流程。
需求分析:明确软件需求,分析系统实际工作语境,确保设计能满足逻辑要求和功能设定。
设计和验证环境实现:概念设计到详细设计,同时建立并验证模拟环境,确保设计完整性。
功能验证:针对设计进行仿真和测试,确保其符合预设的功能需求。
综合布局布线:进行详细的物理设计,包括低级别的综合和优化,以及完成设计的版图任务。
编程下载:在验证无误后,将设计的逻辑编程下载到FPGA硬件中。
时序验证:大量的时序分析和频率优化,以确保设计能在实际环境下顺利工作。
设计确认:进行全面的功能和性能测试,确认设计合规并满足所有需求。
验收交付:将最后的逻辑和物理设计,进行封装打包,交付给下一阶段使用。
固化落焊:产品稳定后,开始量产阶段,将FPGA固化。
运行维护:对于在实际中运行的产品,需定期进行维护和更新,确保设备能够高效稳定的运行。
FPGA软件的研发流程日趋科学化和模块化,已经有包括Ⅰ类沿用、Ⅱ类继承、Ⅲ类新研三种主要类型的FPGA研制技术流程体系确立。这种分工与合作的项目流程模式能够保证敏捷开发,并且可以针对需求进行灵活调整。
FPGA软件安全编程的意义
FPGA软件的安全编程关乎整个航天工程的成功与否,对于保证载人航天的安全性起着至关重要的作用。
载人航天造价昂贵:毫无疑问,载人航天工程的建设与维护需要巨大的财力支持。其中,只有单次的成本价格就高达数亿人民币。理论上,任何质量问题都可能引发潜在的损失,而这类不可逆转的损害性损失往往是无法估量的。
国之重器,不能有好马配破鞍:加载人的航天器是国家荣誉的象征,任何一个小的编程失误都可能对国家形象以及民众信心产生灾难性影响。飞船的每一项设计和每一行代码,都关系着成功还是失败。
太空环境恶劣,质量要求高:与地球表面相比,太空环境要求电子设备具有极高的安全性和稳定性,因为那里充斥着诸如低温高温、强辐射、高速粒子、高真空等极端条件。
HDL及编码规范简介
硬件描述语言(HDL)是电子和数字系统设计领域中一个重要的工具。这种计算机语言被用于对数字逻辑或数据路径的行为和结构进行富于表现力的描述。在FPGA的开发及应用中,Verilog和VHDL是两种常用的HDL。
1. Verilog和VHDL
Verilog和VHDL虽然都是HDL,但它们之间有一些主要的差异。Verilog倾向于更加简洁直观,是一种比较接近于C语言的硬件描述语言,相比之下学习曲线较为平稳。而VHDL则提供了更为丰富的语法结构和数据类型,允许进行更为详细和精确的硬件建模,尤其在需要对硬件行为进行严格描述的场合,VHDL具有一定的优势。
2. 编码规范
在编写HDL代码时,遵循一定的编码规范是非常重要的,这不仅可以提高代码的可读性和可维护性,同时也能帮助防止错误的发生。以下是一些在编写HDL代码时常见的编码规范:
文件声明:每个文件只应当包含一个module,而且module名要小写,并且与文件名保持一致。这样可以使代码结构清晰,方便代码管理。
命名规则:为变量、模块、函数等选择有意义的名称,可以帮助理解代码的目的和行为。同时,避免使用可能引发混淆的名称。
注释规则:编写清晰完整的注释,解释代码的功能,工作原理以及任何不明显的部分。
模块规则:在设计模块时应注意模块的复用性,同时也要确保模块的内聚性,即每个模块都应负责一个特定的功能。
线网和寄存规则:在声明信号线和寄存器时要注意类型的选择,对它们进行合理的初始化,同时避免使用隐式声明。
条件语句:在编写复杂的逻辑表达式或者条件语句时,应当注意代码的清晰性和可读性,避免代码过于复杂。
请注意,这些规范可能会根据语言、工具、团队和项目的特定要求做出相应的调整。在实际工作中,必要的是确定一套适合具体环境和需求的编码规范,并严格执行。
在编写HDL代码时,遵守规定的编码规范有以下重要原因:
提高代码可读性:一个清晰易读的代码可以让其他开发者更快地理解代码的结构和操作。这在团队合作中尤为重要,因为代码往往需要被多人阅读和理解。
提高代码可维护性:遵循规范的代码更容易进行维护和更新。当代码结构清晰,命名有意义,逻辑分明的时候,修改和更新代码就会变得相对更简单。
防止错误的发生:某些编程规范是为了尽量避免代码中的常见错误。这些规范包括了变量命名规则、注释的使用、条件语句的使用等等,都是在实际编程中总结出来的。
代码管理:在大型项目中,由多人协同完成编写的代码数量巨大并且复杂。良好的编码规范会使得代码的提交、审阅和集成过程更加流畅,提升团队开发效率。
统一的代码风格:每个开发者会有各自不同的编码风格,遵循同一规范有助于统一代码风格,使得代码看起来像是由一个人编写,提高代码的整洁度。
遵守编码规范是专业开发者的必备技能,良好的编码规范将有助于提高软件的质量和团队的生产效率。
参考文献:
[0]: "载人航天工程FPGA软件研制技术培训-培训2-FPGA软件的安全编程(公开)" 中国航天科技集团有限公司第704研究所,曹新恩