一种基于CPLD译码的DSP外部Flash烧写方法_第1页
一种基于CPLD译码的DSP外部Flash烧写方法_第2页
一种基于CPLD译码的DSP外部Flash烧写方法_第3页
一种基于CPLD译码的DSP外部Flash烧写方法_第4页
一种基于CPLD译码的DSP外部Flash烧写方法_第5页
全文预览已结束

下载本文档

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

文档简介

1、    一种基于CPLD译码的DSP外部Flash烧写方法        张芝贤1,邱委华1,朱庆贤2,王 时间:2009年08月17日     字 体: 大 中 小        关键词:<"cblue" " target='_blank'>CPLD<"cblue" &qu

2、ot; target='_blank'>VHDL<"cblue" " target='_blank'>DSP<"cblue" " target='_blank'>TMS320C5509A            摘 要: 以实际的图像监控系统为背景,介绍了对S29AL008D Flash存储器进行操作的指令格式和控制方法。通过<&quo

3、t;cblue" " title="CPLD">CPLD实现<"cblue" " title="DSP">DSP和Flash存储器之间的硬件连接,给出了部分<"cblue" " title="VHDL">VHDL源程序。利用<"cblue" " title="TMS320C5509A">TMS320C5509A DSP通过CPLD快速译码实现Flash烧写具有接口简

4、单、通用性强的优点,在实践中证明了方法的有效性。    关键词: DSP;S29AL008D;CPLD译码;Flash烧写    数字信号处理器DSP因其运算精度高,实时性强等特点,在通信、工业控制和消费类电子等领域得到了广泛应用,成为进行数字信号处理的首选器件。在图像监控系统中,往往要对大量的数据和应用程序进行处理和非易失性存储。采用Flash存储器对这些大量数据和应用程序进行存储是一种性价比较高的选择。本文设计的以TI公司DSP芯片TMS320VC5509A(以下简称VC5509A)为主处理器的图像监控系统中,使用了AMD公司S2

5、9AL008D Flash存储器作为数据和应用程序存储芯片。使用VC5509A对S29AL008D进行操作,在硬件接口设计中采用CPLD进行译码和时序控制。1 VC5509A及其外部存储空间    TMS320VC5509A是TI公司的一款16位高速低功耗定点DSP芯片,主要应用于对音频、静态图像的数字信号处理,是设计便携设备的较佳解决方案。该DSP芯片在核心电压为1.35 V时最大工作频率为144 MHz;地址线为24位,对地址的寻址范围为16 M×8 bit或8 M×16 bit。VC5509A采用统一的编址方式,即存储空间地址没有重叠但是

6、寻址方式却有2种不同的方式:字节寻址和字寻址1。当DSP中的CPU访问VC5509A程序存储空间时,通过外部存储器接口(EMIF)对外部存储空间进行管理。外部存储空间被分成CE0CE3 4个空间,分别由EMIF的CE0#CE3#引脚管理,外部存储空间划分如图1所示2。CEn#(n=03)与外设的片选端连接。 2 硬件电路设计21 VC5509A与Flash的硬件连接    使用PGE封装的VC5509A对外只提供14条地址线引脚,因此只能寻址8 K×16 bit的空间范围3,要对S29AL008D的512 K×16 bit存储空间寻址

7、需19条地址线。解决办法是用CPLD实现锁存译码使D5:0具有数据/地址复用功能,为S29AL008D Flash存储器提供高6位地址4。VC5509A和CPLD与S29AL008D的硬件接口电路如图2所示5。通过CPLD的快速译码功能在CE2空间模拟1个Flash高位地址控制寄存器(换页控制寄存器)FPCR,上电复位后通过写FPCR控制FLASH的高位地址来实现换页功能。此处用VHDL对XC9536XL进行编程将FPCR映射到0x400000,由于篇幅限制仅给出如下部分核心源程序:    begain    fce<=ce1;

8、    foe<=aoe;    fwe<=awe;    addr<=a3&a2&a1;    datain<=d5&d4&d3&d2&d1&d0;    facs<='1' when ce2='0' and addr='000'        

9、;    else'0';    FAR:process(facs,awe,reset)    begain    if reset='0'  then       fa<='000000';    else if reset='1' thenif awe'event and awe='1&#

10、39; then       if facs='1' then    fa<=datain(5 downto 0);            end if;         end if;      end if;    

11、;   end process;    dataout<=fa when aoe='0' and facs='1'    else 'ZZZZZZ';    2.2 VC5509ADSP相关寄存器的初始化    在DSP对S29AL008D 进行读写访问之前,要对DSP内相关寄存器进行正确的设置。此系统的初始化设置如下6-7:    ioport unsigned int

12、*ebsr=(unsigned int *) 0x6c00;    ioport unsigned int *egcr=(unsigned int *) 0x800;    ioport unsigned int *ce11=(unsigned int *) 0x806;    ioport unsigned int *ce12=(unsigned int *) 0x807;    ioport unsigned int *ce13=(unsigned int *) 0x80

13、8;    *ebsr=0x01;   /外部总线选择寄存器选定完全EMIF模式    *egcr=0x0a10;    /关闭ARDY控制    在CPU一半工作频率下,设置CE1    *ce11=0x162a     /设置存储器模式为异步16位,读操作的setup、strobe、hold与写操作的相同    *ce12=0x162a; /写操作的se

14、tup、strobe、hold    *ce13=0;2.3 Flash存储器的操作    对S29AL008D的读写过程必须严格按照S29AL008D提供的命令时序来完成。表1给出了S29AL008D对数据字进行复位、擦除、读、写的命令时序7。    Flash操作写子函数C程序如下:    # define flash_ba 0x200000    /ptr是FLASH存储器映射在整个DSP系统地址空间中的基地址  

15、60; # define FAR     unsigned int PA,PD;    void write_se(unsigned int se_addr,unsigned int se_data)          unsigned int *flash_adr,*FAR=(unsignedint*)         0x400000;   &

16、#160; flash_adr=(unsigned int * )         (flash_ba+se_addr);     /se_addr由FAR和A13:1来决定        *flash_adr=se_data;        对Flash进行写操作前必须先擦除片内原有的数据。Flash的整片字擦除操作时序C语言实现如下: 

17、;   void Erase-Chip()           void write_se (0x555,0xAA);       void write_se 0x2AA,0x55);       void write_se 0x555,0x80);       void write_se 0x555,0Xa

18、a);       void write_se 0x2AA,0x55);        void write_se 0x555,0x10);        Flash要对写入的数据进行校验以及判断操作是否正确完成。Flash写校验C语言实现如下:    void program_check (void)        

19、    unsigned int algorithm_out;        unsigned int datapolling_bit;        unsigned int exceed_time;        algorithm_out = read_arry( PA);      

20、0; datapolling_bit = intalgorith_out &0x80;    exceed_time = algorithm_out &0x20 ;    while(datapolling_bit !=PD&0x0080)            &&(exceed_time != 0x20)      

21、0;         algorith_out = read_arry( PA);        datapolling_bit = algorith_out &0x80;        exceed_time = algorith_out &0x20;           

22、; if (exceed_time = = 0x20)                datapolling_bit =read_arry(PA) &0x80 ;        if (datapolling_bit !=PD & 0x0080)           

23、60;    reset_flash();         wrong();                        Flash字编程程序如下:    void Word-Program(void)       &

24、#160;     write_se (0x555,0xAA);        write_se 0x2AA,0x55)          write_se (0x555,0XA0);        write_se (PA,PD);        program_check();        由于篇幅所限,本文仅给出部分核心程序代码,读者可利用上述代码编写一个完

温馨提示

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

评论

0/150

提交评论