谢妮慧,王淳,何海燕
(北京空间机电研究所,北京 100094)
抗辐射MRAM的外部程序存储器设计
谢妮慧,王淳,何海燕
(北京空间机电研究所,北京 100094)
本文提出了一种基于MRAM的外部程序存储器设计方案,并以3D-PLUS公司的MRAM芯片3DMR2M16VS2427为例介绍了一种不需要进行文件格式的转换,采用通用扩展语言(GEL,General Extension Language)函数编制在线编程程序,通过DSP仿真器实现的外部存储器在线编程方法。
MRAM;GEL;在线编程;仿真器;CCS
以高性能DSP为核心的电子电路被广泛应用于空间飞行器的控制管理和数据处理中。为了方便对程序进行升级和维护,保证系统掉电时指令、数据不丢失,一般都将DSP应用程序存储于外部非易失性存储器芯片中,在系统上电或者复位时将存储在外部存储器芯片中的应用程序搬移到DSP片内或者片外的RAM中全速运行。这种搬移的过程称为“自举加载”,由DSP内部程序自动实现[1-2]。由于空间飞行环境的复杂性,要求空间飞行器集成电路中芯片具有抗辐照能力强、使用寿命长、正常工作的温度范围大等特点,对于程序存储设备,还要求其具备容量大、读取速度快、功耗低、可靠性高等特点[3-6]。
MRAM(Magneto Resistive Random Access Memory,磁阻式随机存取存储器)是一种以磁电阻性质来存储数据的随机存储器。与传统的存储器相比,MRAM具有非挥发性、随机存储、高读写速度、耗电量低、最小芯片面积、可以无限擦写等各种优良特性,被认为是电子设备中的理想存储器[7]。而且磁体本质上是抗辐射的,抗辐射能力远较半导体材料强,使得MRAM具有极高的可靠性,尤其适用于空间飞行器电子电路中。
对外部存储器的编程(又称“烧写”)包括编程器烧写和在线烧写两种方法。编程器烧写是指通过专门的编程器将存储器可以识别的文件格式烧写到外部存储器芯片中;在线烧写是指在TI公司DSP产品开发的集成开发环境CCS(Code Composer Studio)中,采用仿真器通过JTAG总线将程序烧入到片外部的存储器芯片中。编程器烧写较容易实现,但只适用于非直接焊于电路板上的外部存储器芯片,而在线烧写需要编制及调试在线烧写程序,但适用于任何封装的外部存储器芯片,由于其灵活的在线可编程性,被广泛使用[8-10]。
由于CCS编译链接之后生成的.out文件格式不能直接用于外部存储器的烧写,以往的外部存储器在线烧写方法都需要对.out文件进行格式的转换,过程非常繁琐。GEL(General Extension Language,通用扩展语言)是一种类似于C语言的解释性语言,可用于创建GEL函数以扩展CCS的功能。本文介绍了一种不需要进行文件格式的转换,采用GEL语言编制在线烧写程序,通过DSP仿真器实现外部存储器在线编程的方法。
系统采用的是浮点型宇航级数字信号处理器SMV320C6701GLPW14(以下简称C6701DSP),其外围电路包括:低压差稳压器、晶振、上电复位电路以及看门狗电路等。CE1空间作为DSP的程序空间,C6701在上电过程中,会通过DMA从CE1空间的外部程序存储器中复制64K×8bit的数据到地址0处的C6701内部存储器,然后从0地址处开始执行[10]。外部程序存储器芯片选用了3D-PLUS公司的128K×16bit的MRAM芯片3DMR2M16VS2427。采用集成可视化开发环境CCS作为开发环境,DSP与16位MRAM芯片的接口示意图如图1所示。
图1 DSP与16位MRAM芯片的接口示意图
1.1 DSP与MRAM简介
C6000系列DSP是1997年美国TI公司推出的DSP芯片,其中SMV320C67xx系列是32位浮点型DSP,该芯片的内部结构增加了浮点运算能力,内部集成了多个功能单元,可同时执行8条指令,运算能力可达1 GFLOPS(单精度运算)和250 MFLOPS(双精度运算);此外,还集成了大容量的片内存储器和大范围的片外存储器寻址接口以及丰富的智能外设。除了强大的硬件功能外,芯片开发的软件支持也是一大特色,配备高效C编译器,可达到汇编效率的70%~80%,因此,绝大部分程序可以使用C语言来编写,增强了程序的可移植性。
磁阻式随机存取存储器MRAM是一种以磁电阻性质来存储数据的随机存储器,它采用磁化的方向不同所导致的磁电阻不同来记录0和1,只要外部磁场不改变,磁化的方向就不会改变。与大部分半导体存储器存储技术不同的是,MRAM中的数据以一种磁性状态而非电荷存储,并且通过测量电阻来感应,不会干扰磁性状态。采用磁性状态存储有两个主要的优点:①磁场极性不像电荷那样会随着时间而泄漏,因此即使在断电的情况下,也能保持信息(即非易失性);②在两种状态之间转换磁场极性时,不会发生电子和原子的实际移动,读取数据的操作过程并不破坏存储单元的磁化状态,这样也就不会有所谓的失效机制(即非破坏性读取)[11]。
由于在自由磁体层中来回切换的运动是电子的自旋,而电子本身永远不会磨损,因此具有承受无限多次读写循环的能力,而且磁体本质上是抗辐射的,因此抗辐射能力远较半导体材料强,使得MRAM具有极高的可靠性,特别适合工作于空间复杂的环境。MRAM易于集成,能够方便地嵌入到系统中。另外,穿隧型MTJ的电阻较高,只需要很小的读取电流就可以得到相当大的输出功率。MRAM集结了快闪存储器(FLASH)的非挥发性,静态随机存取存储器(SRAM)的快速读取速度和低耗电量,动态随机存取存储器(DRAM)的无限次写入,同时更具有永久记忆、密度高及非破坏性读取等特点。
国内用于空间飞行器数字电路中的外部非易失性存储器主要包括FLASH、PROM、EPROM和EEPROM等,性能比较如表1所列。
表1 各种存储器性能比较
本文选用了3D-PLUS公司的MRAM芯片3DMR2M16VS2427作为外部程序存储器,它具有体积小、性能高、功耗低的优点,并具有较好的抗辐照指标,以及较高的容量、高集成度等特点,适合于高可靠性的航天工程应用。
1.2 GEL语言特点及其应用
GEL通用扩展语言是一种类似于C语言的解释性语言,被广泛应用于调试及程序运行环境的定制。TI公司DSP产品开发的集成开发环境CCS提供了丰富的内建GEL函数库,可以用来扩展CCS的功能。CCS集成开发环境的菜单条中还专门提供了GEL菜单项供用户进行功能扩展。以GEL函数库及用户自定义函数为基础,用户可以初始化、控制目标DSP,向CCS集成开发环境中增加菜单项,创建随CCS启动自动运行的GEL文件,建立目标的存储器空间映射关系;此外,还可以定制CCS的工作空间,实现测试任务的自动化;也能在CCS内的观察窗中加入GEL函数,使其在程序的每个断点处得到执行[12-13]。
2.1 MRAM(外部存储器)烧写方法
对外部存储器的烧写包括编程器烧写和在线烧写两种方法。本文提出了一种在线烧写的方法将DSP应用程序固化到外部MRAM中。CCS编译链接之后生成的.out文件可用于烧写,但是.out文件格式为通用对象文件格式COFF(Common Object File Format)。COFF是二进制的目标文件形式,该文件提供了灵活的方法管理代码段和目标系统存储器。在COFF格式下,程序被分成程序段、初始化数据段、未初始化数据段、自定义段等,每段都占据连续的存储空间,段与段之间相互独立。除此之外,COFF文件还包含有版本、段的数量、段的长度和起始地址等一些额外的信息。但是COFF格式文件不能直接写入外部存储器,因为外部存储器中应当保存的是原始的DSP机器码,即DSP应用程序的二进制文件,所以要首先实现文件格式的转换。
常用的文件格式转换有两种方法:一是手动提取COFF文件中的原始数据部分,这种方法比较复杂,但是有助于理解.cmd文件的编写原理以及链接器的工作过程;二是借助CCS自带的工具将生成的.out文件转换为.hex格式文件,然后利用专门的烧写工具将.hex格式文件写入到片外存储器中。
图2 在线烧写流程
以上两种方法都需要进行文件格式的转换,且过程繁琐。虽然.out文件不能直接用于片外MRAM烧写,但CCS具有存储器内的数据保存和加载功能。利用CCS开发工具将用户程序编译链接后生成的.out文件通过JTAG仿真器下载到DSP内部的RAM中,用户程序在DSP内部RAM中就是以二进制的格式存储的机器码,然后将二进制机器指令数据保存起来,它可以直接通过在线编程的方法烧写到片外的MRAM中去,这样就不必进行.out格式文件的转换,可方便容易地完成片外MRAM直接烧写。具体实现流程如图2所示。
2.2 二进制文件的提取
(1) 保存二进制文件
通过CCS编译连接之后生成的.out文件通过仿真器加载到DSP内部存储器之后,将内部存储器中的二进制机器指令数据保存起来,具体操作为File->Dada->Save,数据存储格式为.dat文件格式。我们可以通过目标工程文件夹中的.map文件查看该程序代码占用了哪些存储区域,然后存储略大于实际使用长度的一段数据,如图3所示。
图3 .map文件
(2) 二进制文件的分割
内部存储器中的二进制机器指令数据的字长为32位,而本文外部MRAM的宽度为16位,因此需要将保存的32位.dat文件转换为16位的.dat文件。注意外部存储器的存储顺序为先存32位数据的低16位,然后再存高16位。dat文件如图4、图5所示,左边为保存的内部存储器中的二进制机器指令数据,右图为实现文件分割之后的二进制文件。
图4 原32位.dat文件
图5 16位.dat文件
.dat文件的分割采用编写MATLAB程序进行分割,具体的分割程序为:
fid=fopen(′old32.dat′,′r′);//用只读方式打开32位的dat文件
fseek(fid,0,′eof′);//将指针移到文件的最后一个字符
filesize=ftell(fid);//文件的长度
fseek(fid,0,′bof′);//将指针移到文件的第一个字符
c=fread(fid,filesize,′uint8=>uint8′);
//读取dat文件,将字符放在数组c中
c0=c′;
for i=1:1:filesize;
e(i)=c0(i);
end;
e(filesize+1)=13;
e(filesize+2)=10;
row0=ceil((filesize+1)/12);
row=2*row0;
//16位dat文件的行数是原32位dat文件行数的两倍
for i=1:1:row;
if(mod(i,2)==0)//偶数行的字符
for j=1:1:6;
d(i*8-8+j)=e((i/2-1)*12+j);
end;
d(i*8-8+7)=13;
d(i*8-8+8)=10;
end;
if(mod(i,2)==1)//奇数行的字符
for j=3:1:8;
d(i*8-8+j)=e(fix(i/2)*12+j+4);
end;
d(i*8-8+1)=48;
d(i*8-8+2)=120;
end;
end;
fid1=fopen('new16.dat','w');//用只写的方式打开一个新的文件
count=fwrite(fid1,d,'uchar');
//将数组d以字符的形式写入新的文件
2.3 烧写程序的编写
(1) GEL文件的编写
编写在线烧写程序的目的就是为了将前面保存的二进制机器码写到外部存储器MRAM中去。通过编写.GEL文件在GEL菜单下增加外部存储器的擦除、烧写等子菜单项来实现外部MRAM的烧写等功能。关键词menuitem创建一级子菜单,hotnenu、dialog和slider三个GEL关键词创建二级子菜单。其中hotnenu用来实现一个可以立即执行的GEL函数,dialog用来产生一个可以输入参数的对话框,slider则用来产生一个滑动条,通过滑动条改变相应GEL函数的参数值。
在CCS编译环境下新建MRAM.gel文件,首先在GEL菜单下建立“MRAM”菜单选项,然后建立MRAM菜单的下一级子菜单 “WriteMRAM”。“WriteMRAM”包含CoffName和Length两个参数,CoffName为烧写的可执行应用程序二进制文件,Length为文件的长度,分别以对话框的形式输入。MRAM.gel文件中程序如下所示:
menuitem"MRAM";//建立MRAM菜单
dialog WriteMRAM(CoffName "COFF文件:",Length "数据长度:") //子菜单{
GEL_Reset();
GEL_TextOut("Flash Write Starting... ",,1);
GEL_MemoryLoad(0x01400000, 0, Length, CoffName);
//从地址0x01400000开始写入文件
GEL_TextOut("Flash Write Finished123 ",,1);
GEL_TextOut("Flash Write Finished ",,1);
}
(2) MRAM的在线烧写
将编写完成的GEL文件加载到CCS,具体操作为在CCS工具的左侧菜单下,选中GEL files,右键Load GEL,加载编写好的GEL文件,此时GEL菜单项即被激活。然后点击GEL菜单下的子菜单:MRAM烧写,输入保存并分割好的.dat文件路径,输入文件长度,点击Execute,等待CCS窗口最下方出现“Flash Write Finished”字样时,即完成了DSP应用程序的在线烧写全过程。
基于本文所用到的实验板,在MRAM烧写完成之后,将DSP设置为外部MRAM启动模式,再重新上电运行。通过完整的功能测试、性能测试以及接口测试,发现一切均为仿真器情况下的执行效果,表明该MRAM已烧写加载成功,证明了该在线编程方法是切实可行的。
MRAM由于其特殊的结构特点,使其具有非挥发性、无限次可擦写、体积小、性能高、功耗低的优点,并具有较好的抗辐照指标,以及较高的容量,适合于高集成度、高可靠性的航天工程应用。传统的外部程序存储器在线烧写方法都需要进行文件格式的转换,过程繁琐。本文以3D-PLUS公司的MRAM芯片3DMR2M16VS2427为例介绍了一种不需要进行文件格式的转换,直接将编译链接之后加载到仿真器中的可执行机器二进制码保存,然后采用GEL函数编制在线烧写程序,将可执行二进制机器码烧写到外部存储器的方法。通过实验验证,该方法是切实可行的,而且操作简单方便。该方法同样可用于其他种类的外部程序存储器(例如FLASH、EPROM和EEPROM等)的在线烧写。
[1] 左颢睿.C6000系列DSP Flash二次加载技术研究[J].单片机与嵌入式系统应用,2011(7):65-68.
[2] 崔旭涛,杨日杰,何友.TMS320 C6701 DSP的程序引导方法及编程实现[J].电字工程师,2006,32(9):36-39.
[3] 沈自才,闫德葵.空间辐射环境工程的现状及发展趋势[J].航天器环境工程,2014,31(3):229-240.
[4] 李波,张旭辉.空问光学遥感器天然辐射效应数据库研究[J].航天返回与遥感,2005,26(4):37-42.
[5] 黄伟,刘涛,王华,等. SRAM 型FPGA的单粒子效应及TMR设计加固[J].航天返回与遥感,2014,33(2):49-53.
[6] 董建婷,张旭辉.光学遥感器光电信号处理系统的空问辐射效应研究[J].航天返回与遥感,2009,30(4):57-62.
[7] 雷馨.磁阻式随机存储器MRAM在片上高速缓存方面的应用[J].重庆科技学院学报:自然科学版,2010,12(5):164-167.
[8] 夏金桥,周文涛,曾勇超.TMS320C6701自动加载及程序烧写的简化设计[J].单片机与嵌入式系统应用,2014(10):18-21.
[9] 孙秋生,陈尚峰.基于CCS的DSP片外Flash直接烧写设计[J].电子设计工程,2009,17(1):93-95.
[10] 白汉斌,刘峰,张明敏.基于TMS320C6000系列DSP的Flash编程方法[J].电子测量技术,2006,29(6):107-109.
[11] 吴晓薇,郭子政.磁阻随机存取存储器(MRAM)的原理与研究进展[J].信息记录材料,2009,10(2):52-57.
[12] 刘玉超.GEL语言及其在信号处理系统中的应用[J].信息化研究,2009,35(3):50-52.
[13] 王海涛,张文明,王滨.基于C语言和GEL语言的FIash编程新方法[J].单片机与嵌入式系统应用:2007(8):22-24.
本文以实际工程案例为依托,针对FPGA驱动TFT-LCD液晶屏进行介绍,首先介绍了液晶屏主要控制信号功能,然后结合FPGA与液晶屏之间的80并口的时序进行屏幕显示功能控制分析,最后介绍了实际工程的软件实
现,以及工程实施过程中的问题解决方案,具有一定的实际意义。
参考文献
[1] 张志霞,苑璐,郭帅.基于单片机控制的液晶彩屏TFT显示原理及应用[J].技术与应用,2014,33(9):33-37.
[2] 田民波,叶锋.TFT液晶显示原理与技术[M].北京:科学出版社,2010.
宋云霞(助理工程师),研究方向为航天数字电路设计。
(责任编辑:杨迪娜 收稿日期:2016-11-04)
External Memory Design Based on Against-radiation MRAM
Xie Nihui,Wang Chun,He Haiyan
(Beijing Institute of Space Mechanics&Electricity,Beijing 100094,China)
In this paper,an external program memory design scheme based on MRAM is proposed,and taking the MRAM chip 3DMR2M16VS2427 of 3D-PLUS as the example,the external memory online programming method through the DSP simulator is introduced,which does not need file format conversion,uses the General Extension Language(GEL) function programming online program.
MRAM;GEL;online programming;simulator;CCS
TP211
A
迪娜
2016-11-30)