一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法技术

技术编号:8347837 阅读:205 留言:0更新日期:2013-02-21 01:07
本发明专利技术公开了一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法。该方法包括如下步骤:预先用仿汇编语言编写程序,转换为Binary格式的机器码,并写入PROM中;根据程序读取PROM中的数据;将读到的数据进行指令和目标源拆分,识别指令类型和目标源,进行数据的算数逻辑运算,并把运算结果放入指定的地方,最后根据指令进行对外数据的读写操作。与现有技术相比,其有益效果是:占用极小的FPGA资源,比现有的80C51核减小10倍以上资源开销,特别适合在航天领域中FPGA资源有限的情况下应用;工程运用效果好,可以对外进行数据的读写,实现422和1553B通信;采用仿汇编语言编写,程序可靠性高。

【技术实现步骤摘要】
一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法
本专利技术涉及基于FPGA的嵌入式CPU核领域的软件,尤其适用于航天FPGA的小资源、高可靠性的技术要求。
技术介绍
航天领域由于其工作地点的特殊性,产品的质量和可靠性要求极高,不允许出现任何故障。在太空中,由于高能粒子的冲击和持续辐照,对元器件的等级要求极高,FPGA由于其本身工艺设计的原因,目前能上天的FPGA可用资源有限,而用80C51核由于占用资源太多而不能应用。目前航天领域大多数型号任务采用FPGA+单片机+片外RAM+片外PROM的体系架构,这种体系架构用到的元器件较多,应用时要考虑每个元器件的质量等级和可靠性指标,可靠性会降低。
技术实现思路
本专利技术要解决的问题是提供一种基于FPGA的高可靠性嵌入式最小CPU核设计方法,它能够解决适用于航天领域FPGA的资源有限的问题,能增加航天器的可靠性。为解决上述技术问题,本专利技术的一种基于FPGA的高可靠性嵌入式最小CPU核设计方法,其包括如下步骤:步骤a:根据定义的指令,预先用仿汇编语言编写程序,转换为Binary格式的机器码,并写入PROM中;步骤b:根据程序读取PROM中的数据;步骤c:将读到的数据进行指令和目标源拆分,识别指令类型和目标源,进行数据的算数逻辑运算,并把运算结果放入指定的地方,最后根据指令进行对外数据的读写操作。上述步骤a包含有如下步骤:步骤a1:根据定义的指令,用仿汇编语言编写程序;步骤a2:将编译后的执行代码转换为Binary格式的机器码;步骤a3:根据程序大小,写入片内ROM或片外PROM中。所述步骤b包含有如下步骤:步骤b1:根据程序指令,确定要访问的PROM的地址;步骤b2:读取PROM中地址相对应的数据。所述步骤c包含有如下步骤:步骤c1:将读到的数据进行指令和目标源拆分;步骤c2:识别指令类型和目标源操作目标源,进行数据的算数逻辑运算,并把运算结果放入指定的地方;步骤c3:根据指令进行对外数据的读写操作。本专利技术通过一种基于FPGA的高可靠性嵌入式最小CPU核设计方法,与现有技术相比,其有益效果是:占用极小的FPGA资源,比现有的80C51核减小10倍以上资源开销,特别适合在航天领域中FPGA资源有限的情况下应用;工程运用效果好,可以对外进行数据的读写,可实现422和1553B通讯;采用仿汇编语言编写,程序可靠性高;与现有航天的体系架构相比,减少元器件开销,节省成本。附图说明以下将结合附图和实施例对本专利技术作进一步详细说明。图1是本专利技术的最小CPU核的内部数据流图;图2是本专利技术的指令和目标源解析图;图3是本专利技术Binary格式数据流的定义。具体实施方式适用于本专利技术需要有下面几个条件:1、计算机配置和软件条件需配置一台内存大于512M,硬盘存储空间大于1G的计算机,需要安装FPGA仿真和烧写软件。2、存储空间条件一般航天领域的FPGA软件为了抵抗SEU(单粒子反转,SingleEventUpset)效应对程序的影响,在航天器发射之前进行FPGA反熔丝固化,固化好的程序将不能进行修改。而Binary格式的机器码一般存放在PROM(可编程只读存储器,ProgramReadOnlyMemory)中,为了抵抗SEU效应对程序的影响,用于存放代码的PROM在航天器发射之前进行烧结固化,固化好的程序将不能在原PROM基础上进行修改。因此只需要可适用于航天领域的FPGA和PROM,存储空间条件较易满足,本专利技术能适用于大多数的航天领域。鉴于上述两个条件航天领域一般都满足,故本专利技术可以应用到大多数的航天领域中FPGA的嵌入式CPU核设计。具体实施例如下:本实施例采用C语言编写一段程序(一个简单的1553B通讯程序),根据图2的指令和目标源的解析用仿汇编语言将C语言程序转换为Binary格式的机器码,并写入PROM中,并依据设计在FPGA软件内部的CPU核,对注入的代码进行指令和目标源拆分,识别指令类型和目标源,然后进行数据的读写操作。其方法的具体步骤如下:C语言程序如下:步骤a1:根据图2的指令和目标源的解析,根据C语言程序用仿汇编语言编写程序。这一步是整个设计中的重要步骤,该步骤是整个数据的来源,编写后的代码确保是正确的,代码的精简度与整个程序的效率密切相关。代码如下:步骤a2:根据图2的指令和目标源的解析,使用自制的转换格式软件,将编译后的执行代码转换为Binary格式的机器码。值得注意的是,指令和目标源拼成一个8位无符号数,操作数为16位无符号数,机器码如下:0D00A0110D00001909AD010085FFAF5515004503000D01001003800D00801007800D13001000800D52581002800D19801007800D00801008800D00001009800DA0021068A10D004010A8A10D808F100180步骤a3:根据机器码大小,写入片内ROM或片外PROM中。如机器码存在片内的ROM中,则读写速度更快,最快可接受70M的时钟驱动。如写入片外PROM,则根据PROM芯片的读写周期进行操作。步骤b1:根据程序指令,确定要访问的PROM的地址;初始化状态下,默认访问PROM首地址中的指令内容,并设置相应的PC指针。步骤b2:读取PROM中地址相对应的数据。数据从图1中的DATA_in端口被读入,每次读取8位数据。步骤c1:将读到的数据进行指令和目标源拆分。根据图3的机器码定义,在图1的CONTROLFSM模块把读到的8位的数据(图1中的Pc0)进行拆分,高5位是指令,低3位为目标源。步骤c2:识别指令类型和目标源,进行数据的算数逻辑运算,并把运算结果放入指定的地方。根据图2的指令和目标源的解析和图1的最小CPU核的内部数据流图,进行不同的操作。在算数逻辑运算中,如目标源为图1的REG模块中的内部R0~R3寄存器中16位数据,则不需要再从PROM中读取操作数,直接把寄存器中的数据通过MUXA.a端口放到ALU模块的A口。除此之外,所有指令都需要再从PROM中读取16位的操作数(图1中的Pc1,Pc2),在ALU模块中参与算数逻辑运算,运算结果通过ALU模块的C口根据指令分别送往REG模块和CONTROLFSM模块。如指令的目标源为REG模块中的内部R0~R3寄存器或A和S,则运算结果送往REG模块,这条指令的PC地址加1;如指令的目标源为@ADDR或#DATA,则运算结果送往CONTROLFSM模块,这条指令的PC地址加3。步骤c3:根据指令进行对外数据的读写操作。在CONTROLFSM模块中,根据指令和目标源的不同进行对外数据的读写操作。在读操作时,如目标源为@ADDR,则需要先把@ADDR的值存放在对外地址线上,再读一遍该地址中的数据;如目标源为#DATA,则直接再从PROM中读取16位的操作数即可;如目标源为R0~R3寄存器或A和S,则不需要对外读取数据。在写操作时,如指令类型为MOVA,则需识别目标源类型:目标源为@ADDR,则把@ADDR的值存放在对外地址线上,然后把ALU模块的C口数据进行对外写操作;目标源为R0~R3寄存器,则把把ALU模块的C口数据送往REG模块,不需要对外写操本文档来自技高网...
一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法

【技术保护点】
一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法,其特征在于:包括如下步骤:步骤a:预先用仿汇编语言编写程序,转换为Binary格式,并写入PROM中;步骤b:根据程序读取PROM中的数据;步骤c:将读到的数据进行指令和目标源拆分,识别指令类型和目标源,进行数据的算数逻辑运算,并把运算结果放入指定的地方,最后根据指令进行对外数据的读写操作。

【技术特征摘要】
1.一种适用于航天领域基于FPGA的高可靠性嵌入式最小CPU核设计方法,其特征在于:包括如下步骤:步骤a:预先用仿汇编语言编写程序,转换为Binary格式,并写入PROM中;步骤a1:根据定义的指令,用仿汇编语言编写程序;步骤a2:将编译后的执行代码转换为Binary格式的机器码;步骤a3:根据程序大小,写入PROM中;步骤b:根据程序读取PROM中的数据;步骤c...

【专利技术属性】
技术研发人员:施未勋徐建萍周振宇宋晓东
申请(专利权)人:上海航天测控通信研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1