版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第29卷第3期2006年9月电子器件Chinese J ournal of Elect ron DevicesBootloading DSP s Program from FPGAY E Zhun ,W A N G W en 2j i ng ,M EN G W ei 2x i ao(Communication Research Center ,Harbin I nstit ute of Technolog y ,Harbin 150001,China Abstract :This paper present s a solution of bootloading DSP s program f
2、rom FP GA.Compared wit h con 2ventional met hods using additional EEPROM or FLASH memory as DSP s external memory ,t his met hod can make f ull use of system s reso urces and can be easily realized.After int roducing t he DSP s bootload 2ing t heory ,it gives out t he detailed hardware and software
3、design scheme and also some key program source codes.This met hod proved to be correct and credible.K ey w ords :bootload ;DSP ;FP GA EEACC :1265B从FPGA 自举加载DSP 程序的实现方法叶准,王文静,孟维晓(哈尔滨工业大学通信技术研究所,150001收稿日期:2005210231作者简介:叶准(19812,男,硕士,研究方向为宽带通信理论与技术,yzhzgg ;王文静(19822,女,硕士,研究方向为个人通信与卫星通信,quiet6 ;孟维晓(19
4、682,男,教授,研究方向为3G 移动通信系统相关技术,智能天线理论与技术,移动通信网络设计与分析,摘要:提出在FP GA 与DSP 组成系统硬件平台的情况下,将FP GA 的ROM 作为DSP 的外部存储器,从FP GA 自举加载DSP 程序。经过实践验证,该方法准确可靠,与传统的单独使用EEPROM 或者FL ASH 作为DSP 外部程序存储器的方法相比,具有充分利用系统资源、实现简单等优点。在给出了DSP 自举加载原理的基础上,详细介绍了硬件及软件设计方案,并给出了关键程序的代码。关键词:自举加载;DSP ;FP GA中图分类号:TP311文献标识码:A 文章编号:100529490(2
5、0060320967205随着软件无线电技术与数字信号处理芯片的不断发展,人们已经在越来越多的场合应用FPG A (Field Programmable G ate Array ,现场可编程门阵列与DSP (Digital Signal Processor ,数字信号处理器芯片。由这两种芯片以及必要的外围电路构成的硬件平台能够满足大多数通信应用的需要。虽然单一的数字信号处理芯片能够实现各种功能1,但是这两种芯片分别适合完成不同的任务,例如一个扩频通信系统的接收机,可以用FPG A 实现扩频信号的捕获与跟踪,而用DSP 实现信号的解码及后续处理。因此,用这两种芯片组成软件无线电技术的硬件平台能够
6、很方便地实现各种功能。当硬件电路越来越趋向于小型化和高集成度的时候,尽量减少外围电路就成了一个重要的课题。目前被广泛使用的TI 公司的TMS320VC54系列DSP ,由于其ROM 中的内容必须由厂家写入,用户不能更改,所以通常的做法是单独用FL ASH 或者是EEPROM 来存储DSP 的程序,这样就增大了硬件电路的尺寸,并且加大了电源的开销,当然还有经济方面的耗费。本文以TMS320VC5416DSP (以下简称DSP 和Cyclone EP1C12Q240I7FP GA (以下简称FP 2GA 组成的硬件平台为例介绍了一种将FP GA 的部分M4K 存储区配置为ROM 模式从而作为DSP
7、的外部程序存储器,从FP GA并行自举加载DSP程序的方法,该方法既易于实现又使得系统的资源得到了充分的利用。文中提到FP GA中的ROM即指配置为ROM模式的M4K存储区。1DSP的自举加载原理由于TMS320VC54系列DSP片内ROM的内容只能由厂家来烧写,而如果将程序存放在片内RAM中的话,断电后程序自动消失,所以当没有必要通过厂家来烧写ROM(例如程序调试阶段或者是片内ROM容量不足的时候,用户编写的应用程序必须放在外部存储器中存储。当系统运行时, DSP自动从外部存储器将用户程序加载到内部的高速RAM中运行,这个过程就称为自举加载(Bootload。要自举加载的程序也就是用户程序和
8、一些必要的引导信息组合在一起被称为自举表(Boot Table。Bootloader是完成自举加载任务的程序,它被存放在DSP的内部ROM中,具体位置见表1。表1DSP片内R OM中的程序空间起始地址内容000_C000保留000_F800Bootloader程序000_FC00律扩展表000_FD00A律扩展表000_FE00正弦查找表000_FF00检测程序000_FF80中断向量表为了适应不同系统的需要,DSP提供了多种自举加载模式:主机接口引导模式、并行引导模式(8bit/16bit、标准串口引导模式(8bit/16bit、串行EEPROM引导模式(8bit和I/O引导模式2。由于并行
9、引导模式导入速度快且实现简单3,因此本文采用了并行引导模式,下面就针对并行引导模式作具体的介绍。根据外部存储器物理字长的不同,并行引导模式又分为8bit和16bit两种,其原理及自举表结构是相同的,为了不失一般性,本文介绍的是8bit并行引导模式。字长为8bit的存储器用两个连续的存储单元来存储一个16bit的DSP指令字,将指令字的高8bit存储在低地址,低8bit存储在相邻的高地址。表2所示的是本文所采用的8bit 并行引导模式的自举表结构,下面结合表2介绍Bootloader程序的工作过程。表28bit并行引导模式自举表结构地址内容0x800008AAh(标志8bit并行引导模式0x80
10、02SWWSR初始化值(16bit0x8004BSCR初始化值(16bit0x8006程序入口点XPC值(7bit0x8008程序入口点PC值(16bit0x800A第一段程序的长度(16bit0x800C第一段程序导入目标地址XPC值(7bit0x800E第一段程序导入目标地址PC值(16bit0x8010第一段程序(16bit.最后一段程序的长度(16bit最后一段程序导入目标地址XPC值(7bit最后一段程序导入目标地址PC值(16bit最后一段程序(16bit.0000h(标志自举表结束0xFFFE80h(自举表首地址高8bit0xFFFF00h(自举表首地址低8bit当DSP工作在微
11、计算机模式时(MP/MC=0,复位后程序计数器(PC指向片内ROM中000_FF80地址处的中断向量表,而中断向量表将PC指向000_ F800处的Bootloader程序,Bootloader程序会自动将外部存储器中的用户程序搬移到内部RAM中来运行。Bootloader程序在引导加载用户程序之前将设置CPU状态寄存器,屏蔽所有可屏蔽中断(IN TM=1,将片内RAM映射到程序/数据空间(OVL Y=1,设置7个等待状态。引入等待状态是为了使DSP和外部访问速度较慢的器件处理速度相匹配,例如设置成7个等待状态,就是使DSP的CL K OU T引脚的信号周期为DSP内部时钟周期的7倍,这使得D
12、SP和外部的慢速访问器件可以正常传输数据。Bootloader程序按照如下的顺序检测引导模式:主机接口引导模式;串行EEPROM引导模式;并行引导模式;8bit标准串口引导模式;16bit标准串口引导模式;I/O引导模式。当Bootloader程序检测到前面的两个引导模式无效时,则进入了并行引导模式,首先从地址为0xFFFF的单元中读取自举表的首地址。需要说明的是,DSP复位后,处理器工作状态寄存器(PMST的DROM位为0,因此地址为0x80000xFFFF的存储空间被映射为外部存储器4,本文中外部存储器即FP GA中的ROM。在0xFFFF及0xFFFE两个存储单元中读到自举表的起始地址0
13、x8000之后,869电子器件第29卷Bootloader 程序将从地址为0x8000的存储单元依次读取程序代码,从0x8000,0x8001两个单元中读到0x08AA ,说明是8bit 并行引导模式(10AA 则代表16bit 引导模式,接着读取软件等待状态寄存器(SWWSR 的初始化值,设置相应的等待状态,再读取分区转换控制寄存器(BSCR 的初始化值。程序入口点(Ent ry Point 的程序计数器扩展寄存器(XPC 的值和程序入口点PC 值确定了当程序完全导入DSP 之后从哪条指令开始执行。然后读取第一段程序的长度,根据程序长度Bootloader 既可以区分不同的程序段,程序导入目
14、标地址XPC 值和PC 值即确定了下面的用户程序代码导入到内存中的位置,最后读取真正的用户程序代码到内存中的指定位置,依次引导装载各段程序之后,读到0x0000标志着程序已经导入完毕,之后将DSP 的PC 值设置成程序入口点地址,开始在内存中运行用户程序,Bootloader 程序结束任务。2硬件设计将FP GA 的部分M4K 存储区配置为ROM 模式,作为DSP 的外部程序存储器,系统的硬件连接比较简单,直接将DSP 的数据线和地址线以及R/W 、DS 、MSTRB 等引脚与FP GA 的I/O 引脚相连即可,其他引脚则根据系统的需要进行连接526。由FP GA 向DSP 提供复位信号,系统
15、上电之后,FP 2GA 首先完成初始化操作,然后使DSP 复位,这样保证了Bootloader 程序的正常运行。因为FP GA 与DSP 之间通信一般都采用地址线及数据线结合的并行传送数据方式,可见此方法并不需要额外的硬件连接,非常有效地利用了系统的资源。另外,通常把需要配置的DSP 引脚(如M P/MC 等与FP GA 相连,因为这样做可以根据需要利用FP GA 的逻辑运算方便地配置DSP 各引脚的电平,这种灵活性也是FP GA 与DSP 组成硬件平台的优势的一种体现,见图1 。图1硬件连接示意图当DSP 读取地址范围为0x80000xFFFF 的外部数据存储器时,其R/W 、DS 、MST
16、RB 引脚会自动给出如图2所示的电平,从图中可以清楚地看到DSP 的总线时序。可见,FP GA 中只要用简单的程序,将相应的I/O 口设置成地址线和数据线,把外部地址映射成内部ROM 地址,用R /W 或DS 信号与MSTRB 联合作为使能信号即可。图2DSP 从外部存储器读入数据时序3软件设计本文应用的软件分别是用于DSP 开发的CodeCompo ser St udio (CCS 集成开发环境和用于FP 2GA 开发的Quart us 软件。实现并行自举加载功能的关键就是自举表的制作,也就是要把用户程序代码按照自举表格式的要求组织起来然后转化为FP 2GA 支持的存储格式,程序的编写步骤如
17、下文所述。3.1应用CCS 生成COFF 格式的用户程序文件应用CCS 集成开发环境编写用户程序和链接器命令文件(cmd 文件,从而生成可以运行的公共目标文件格式(Common Object File Format ,COFF 文件7。注意在生成CO FF 文件时,CCS 中的Build options 要采用2v548编译器选项,链接器命令文件如下:2o FIL ENAM E1.out /生成名为FIL ENAM E1的/COFF 文件2m FIL ENAM E1.map /生成名为FIL ENAM E1的map/文件M EMOR YPA GE 0:PRO G:origin =0x0080,
18、len =0x3980V ECT :origin =0x3A00,len =0x80EN TR Y:origin =0x3B00,len =0x80PA GE 1:RAMorigin =0x4000,len =0x9000SECTIONS.vectors :V ECT PA GE 0.text :PRO G PA GE 0.cinit :PRO G PA GE 0.switch :PRO GPA GE 0969第3期叶准,王文静等:从FP GA 自举加载DSP 程序的实现方法.entry:EN TR Y PA GE0.bss:RAM P GA E1.stackRAM PA GE1.sysmem
19、RAM PA GE1.dataRAM PA GE1从上面的链接器命令文件可以看出用户程序由三个部分组成,主要的用户程序段分配在“PRO G”存储段中,中断向量表存放在“V EC T”存储段中,还有一个名为“ent ry”的程序段被分配在“EN TR Y”存储段中。用户程序的数据空间被分配为0x4000 0xD000,显然已经有一部分落在了外部存储器空间中,这就要求用户程序自举加载完成后,使地址为0x80000xFFFF的空间重新映射为片内存储空间,使所有的用户代码都在内存中运行,名为“en2 t ry”的程序段即起到这个作用,其代码如下:STM#3A28h,PMST;将PMST寄存器的DROM
20、位;置1,从而将0x80000xFFFF;的存储空间映射为片内存储器B_c_int00;跳转到C语言入口点(即开始;执行应用程序将自举表中的程序入口地址设置为ent ry程序段的首地址(0x3B00,这样在自举加载完成之后,将首先执行ent ry程序段,将0x80000xFFFF的地址重新映射到片内存储器,使用户程序正常运行。3.2应用H ex500程序生成所需格式的文件由于FP GA并不支持COFF格式的文件,所以必须将CO FF文件转化成FP GA可以识别的文件格式。Hex500程序是CCS集成环境提供的一个文件格式转化程序,它可以将COFF文件转化成各种存储器所需要的格式,如ASCII格
21、式,Intel格式等。利用Hex500也可以自动生成自举表结构的程序文件用于自举加载,与用FL ASH作为外部存储器相比,这种方法更为简便,因为对FLASH进行写操作需要编写相对更为复杂的程序8。要利用Hex500程序生成自举表,首先需要编写一个Hex500程序的配置文件9,本文将配置文件命名为Bootcf g. cmd。FIL ENAM E1.out/要转化的COFF格式文件2i/转化成Intel格式的文件2map FIL ENAM E2.map/生成名为FIL ENAM E2的/map文件2o FIL ENAM E2.hex/转化成名为FIL ENAM E2/的文件2memwidth8/存
22、储器系统字长8位2romwidth8/ROM物理字长8位2boot/生成自举表2bootorg0x8000/自举表首地址2e0x3B00/程序入口点2swwsr0x7FFF/SWWSR寄存器初始化值2bscr0xF800/BSCR寄存器初始化值ROMSPA GE0:ROM:origin=0x8000,length=0x6000可见Hex500配置文件中包含了所有用于生成自举表的信息,其中包括自举模式(8位,SWWSR 初始化值,BSCR初始化值,程序入口点等。通过这些参数的设置,Hex500程序即可自动生成自举表文件。将FIL ENAM E1.out和Hex500程序及其配置文件Bootcf
23、g.cmd放在同一个文件夹下,然后在DOS命令提示符环境下调用Hex500程序(. hex500Bootcfg.cmd,即可生成所需格式的文件。另外也可以直接运行Hex500程序,在命令参数中加入文件格式转化的信息,但与编写配置文件的方法相比,就显得复杂且功能不足,一般情况下很少采用,所以这里不再赘述。3.3将DSP程序存入FPG A的R OM中并检验存储的正确性FP GA内部的相应程序比较简单,将外部地址线的0x80000xFFFF地址范围映射到内部ROM 中的地址并且根据DSP的时序设置相应的使能信号及控制程序即可。需要注意的问题是用Hex500程序生成的自举表并不包括在0xFFFF的存储
24、单元中写入自举表的首地址,可以采用FP GA编程的方式给出自举表首地址。FP GA的程序编写好之后,通过Quart us软件将生成的Intel格式的程序文件存储到FP GA的片内ROM里即可。部分主要的FP GA程序如下:addr_one=Addr_line2X“8000”;22地址映射addr_rom_one“ROM”,WID T H_A=8,WID T HAD_A=14,OU TDA TA_REG_A=“clock0”,IN IT_FIL E=“FIL ENAM E2.mif”079电子器件第29卷POR T MA P(clock0=CL K,clocken0=NO T nds,addre
25、ss_a=addr_rom_one,q_a=DA TA_out_one;data_BUS(7DOWN TO0=X“8000”AND Addr_lineZ;22传送数据data_BUS(15DOWN TO8Z;不可避免地,由于一些不确定性因素的影响,程序在烧写进ROM时,有可能会产生错误,为了确保程序烧写的正确性,可以对烧写后的程序进行检验。其基本思想是:将用户程序烧写进ROM之后,用CCS集成开发环境将用户程序载入DSP的内部RAM中,通过编写检验程序,将FP GA的ROM内的程序与DSP内存中的程序代码相比较,如果完全一致,则烧写正确。检验程序的主要部分如下:;检验中断向量表STM#0x8010,AR3;AR3作为外部程序;存储器的指针STM#0x3A00,AR4;AR4作为内部程序;存储器的指针STM#0x0080,BRC;块重复寄存器的值;(第一段程序的长度RPTB STOP21LD3AR4+,A;比较高8位是否;一致AND#0x000000FFFF,ALD3AR3+,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牛津译林版 四年级英语下学期辨音专项练习(无答案)
- 环形隐形镜片项目可行性实施报告
- 心理学研06059全国高等教育自学考试统一命题考试心理学研究方法
- 成都师范学院《数字摄影与摄像技术》2023-2024学年第一学期期末试卷
- 成都师范学院《高效率教学》2021-2022学年第一学期期末试卷
- 成都锦城学院《证券投资学》2022-2023学年第一学期期末试卷
- 成都锦城学院《新媒体产品设计》2023-2024学年第一学期期末试卷
- 白炽灯相关项目建议书
- 成都锦城学院《结构设计》2023-2024学年第一学期期末试卷
- 成都锦城学院《构成基础(平面色彩)》2022-2023学年第一学期期末试卷
- USP1058分析仪器确认中英文对照
- 请示正文格式
- 塑胶球场工程施工组织设计方案
- 阳性和阴性症状量表评分表(PANSS)
- 人民防空工程防护设备维护保养管理规范.doc
- 比泽尔压缩机使用手册
- 时分秒应用题
- 苏教版一年级数学下册公开课《两位数加一位数(进位)》教学设计
- 三年级上册北师大版数学应用题专题训练
- 20201105 中药均一化研究技术指导原则(试行)》的通告(2020年第38号)
- 新会计准则会计科目表(中英文对照)
评论
0/150
提交评论