dsp经过CPLD加载bootloader.doc_第1页
dsp经过CPLD加载bootloader.doc_第2页
dsp经过CPLD加载bootloader.doc_第3页
dsp经过CPLD加载bootloader.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文介绍了一种基于CPLD快速译码的DSP二次引导方法,利用CPLD的时序严格、译码速度快、可在线编程等特点,在 DSP的外部存储器接口EMIF(Exteral Memory Interface)的CE2空间模拟了一个Flash换页寄存器FPR(Flash Page Register),在上电复位后控制Flash的高位地址线,从而实现Flash的分页访问。因此,可通过二次bootloader程序修改FPR的值,控制Flash的高位地址线,将最终的应用程序加载到RAM中运行。1 TMS320VC5509A的并行引导模式1.1 5509A的引导模式5509A的引导模式选择是通过4个模式选择引脚BOOTM3:0来配置的,BOOTM30引脚分别与GPIO0、3、2、1相连。5509A提供了六种引导模式,即EHPI引导模式、8位/16位并行EMIF引导模式、8位/16位标准串行口引导模式、SPI EEPROM引导模式、USB引导模式以及I2C E2PROM引导模式。本文采用16位并行EMIF引导模式,将BOOTM3:0设置为1011即可。在16位并行EMIF引导模式下,DSP芯片内部固化的Bootloader程序上电复位后,首先从CE1空间首地址0x200000h处开始读取程序代码,并加载到RAM中运行。1.2 5509A的引导表格式程序代码以引导表的格式存储在Flash存储器中。引导表是独立于所选引导模式的一种特定的格式,包含了用户程序的代码段、数据段、段在RAM中的目标地址以及程序入口地址等其他相关信息。5509A引导表结构如表1所示。DSP芯片内部固化的Bootloader的主要功能是将Flash中存储的引导表按一定顺序加载到 RAM中,然后跳转到32位程序入口地址开始执行。引导表文件可以通过TI公司提供的16进制转换工具生成,一般是hex格式,然后将此hex文件烧写到 Flash存储器中供Bootloader加载。2 DSP二次Bootloader的原理及实现由上述分析可知,DSP用户程序的并行加载过程是由DSP内固化的Bootloader实现的。由于5509A的PGE封装只有14根地址线,最多只能访问到16K16bit地址空间。对于超过16KB的用户代码,Bootloader将不能加载全部的引导表文件。因此若要加载超过16K的用户代码,必须进行二次Bootloader。二次Bootloader的原理是由用户自行编写一个代码长度小于16KB的引导程序(以下简称 uboot),其功能与DSP内固化的Bootloader相同,用于加载最终的用户代码。在uboot程序中控制Flash存储器的高位地址线来访问 Flash的其他存储内容。这样,DSP上电复位后,Bootloader首先加载uboot并运行,然后uboot又加载最终用户代码,实现了大于 16K代码的二次引导。2.1 DSP与Flash及CPLD的硬件接口本文采用AMD的 Am29LV800作为DSP的外部存储器扩展。Am29LV800按8位方式访问,容量为1M字;按16位方式访问,容量为512K字。DSP外围电路逻辑译码及Flash高位地址线模拟由CPLD实现。Xilinx公司的XC9572XL是一款高性能的CPLD芯片,最高主频可达178MHz,包含了 72个宏单元,1 600个可用门电路,其TQFP封装有72个可用I/O引脚7。图1是5509A与CPLD及Flash之间的硬件接口设计原理图。 如图1所示,5509A的地址线A13:1与Flash的地址线A12:0,A0未用。Flash存储器被映射到DSP的CE1空间,由片选线CE1经CPLD译码后选通。其中DSP的地址线A13和A3:1与CPLD接口,用于换页寄存器FPR的模拟。Flash存储器的BYTE引脚经上拉后接高电平,即按16位方式访问。2.2 CPLD译码VHDL程序设计目前DSP系统主频越来越高,运算速度越来越快,利用小规模逻辑器件译码的方式已不能满足DSP系统性能的需求。CPLD器件以其严格的时序、快速的译码、良好的可编程性成为DSP系统必不可少的部件之一。本文利用CPLD的快速逻辑译码功能,模拟了一个FPR寄存器来控制Flash的高位地址线。VHDL语言源程序如下(篇幅有限,这里省略实体端口声明及中间信号定义):beginfce =ce1;foe =aoe;fwe =awe;h_addr =a13;l_addr =a3&a2&a1;datain =d5&d4&d3&d2&d1&d0;facs =1 when h_addr=1 and ce2=0 and l_addr=000 else 0; -CE2 0x400000FPR:process(facs,awe,reset)beginif reset=0 then fa=000000; else if reset=1 then if aweevent and awe=1 then if facs=1 then fa=datain(5 downto 0); end if; end if; end if;end process;dataout=fa when aoe=0 and facs=1 else ZZZZZZ;d5 =dataout(5);d4 =dataout(4);d3 =dataout(3);d2 =dataout(2);d1 =dataout(1);d0 =dataout(0);fa18 =fa(18);fa17 =fa(17);fa16 =fa(16);fa15 =fa(15);fa14 =fa(14);fa13 =fa(13);end behaviour;由上述VHDL程序可知,FPR寄存器被映射到了CE2空间的0x401000地址。其中引入A13及A3:1地址线的目的是为了便于以后的功能扩展,映射出更多的寄存器,如LCD控制寄存器、UART控制寄存器等。FPR寄存器定义如表2所示。 FPR寄存器的第50位分别控制Flash的高位地址线A18A13,第76位无效。当DSP 上电复位时,FPR寄存器的值被设置为全0,此时Flash的所有高位地址线均处于低电平状态,DSP开始访问Flash的最低8KB地址单元。复位结束,就可以对FPR寄存器写入值,改变Flash的高位地址,从而实现Flash的分页访问。这样Am29LV800 Flash的512K字存储空间相当于被划分为64页(063),每页8K字,当程序大于一页时,修改FPR,进行软件翻页,读入下一页Flash数据。也可以通过读FPR寄存器,了解当前高位地址线的状态,此时FPR寄存器与Flash的地址映射关系为:Flash地址单元=(FPR13)+DSP地址线A13:12.3 二次Bootloader的实现基于上述的设计和分析,要实现大程序的自动引导,可以采用二次Bootloader的方法。首先要设计一个uboot程序,大小不能超过一页。将 uboot程序烧写到Flash存储器的第0页,也就是DSP上电复位后被固化的Bootloader自行引导的那一页。uboot的主要功能是通过修改 FPR寄存器值,并按照引导表的格式读取Flash存储器的其他页程序到RAM中,最后跳转到用户程序的32位入口地址开始执行。uboot程序中,可以定义一个16位无符号整型指针变量,指向CE2空间的0x401000地址,即:unsigned int*FPR=(unsigned int*) 0x401000;若*FPR=1,即可以访问Flash的第1页。 在编写uboot程序和用户程序时,要对存储器空间重新分配,即在定义CMD文件时,要注意用户程序所占用的存储空间不能与uboot程序占用的存储空间重叠。因为uboot首先被加载运行,在运行时加载用户程序,也需要占用RAM地址空间。而且uboot程序代码长度不能超过一页。当烧写Flash时,必须将uboot程序烧写到Flash的第0页,然后将用户程序烧写到第一页或以后的存储空间中。3 实验结果 以煤矿井下煤矸分界传感器为例,测试本文介绍的基于CPLD译码的DSP二次Bootloader方法。该传感器采集放煤时煤矸石振动信号,经AD转换后送入DSP经数字信号处理,分析得出煤矸石放落比例8。用户程序代码大小为23K字左右,显然不能够被固化的Bootloader正常加载,因此必须经过二次Bootloader。将大小约2K字的uboot程序烧写到Flash第0页,用户烧写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论