打印

基于TMS320VC54X的DSP&FPGA双芯处理平台和bootloader设计

[复制链接]
1442|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clight|  楼主 | 2010-12-16 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
王占锋   北京高光科技有限公司

摘要:本文介绍了DSP和FPGA组建的双芯处理模块以及配套的各种bootloader方案。该模块具有运算速度快、可靠性高、处理能力强、功耗低等优点,主要应用于数据量大、算法复杂、使用I/O多的系统,可以直接作为工业控制和高速数据处理算法研究和实时实现的通用平台。

关键词:DSP,FPGA,bootloader,TMS320VC5416,EP1K100

1. 系统硬件结构

1.1 系统框图

       DSP&FPGA模块的硬件系统框图如图1所示,具有如下特点:
       1、160MHz主频的DSP和10万门的FPGA组成强大的双核处理器;
       2、高可靠性、低成本、低功耗;
       3、支持firmware的在线烧写;
       4、支持TI的片上bootloader方案和自定义的大容量bootloader方案;
       5、具有丰富的接口:
      6、DSP:EMIF、中断
      7、FPGA:93个可编程控制的I/O,兼容2.5/3.3/5V电平
      8、板载4M-bit FLASH
      9、对外接口:2个120针间距0.635mm的插座BTB120P-F
      10、单电源供电:+3.3V
      11、尺寸:85mm*61mm*9mm


                                                                         图1. DSP&FPGA模块硬件系统框图

1.2 DSP

         DSP采用的是TI公司的TMS320VC5416,16bit定点高性能DSP,是TMS320VC54x系列中的第3代芯片。主要特性有:速率最高达160MI/s;3条16bit数据存储器总线和1条程序存储器总线;1个40bit桶形移位器和2个40bit累加器;1个17×17乘法器和1个40bit专用加法器;最大8M×16bit的扩展寻址空间,内置128k×16bit的RAM和16k×16bit的ROM;由于VC5416功耗低,性能高,其分开的数据和指令空间使该芯片具有高度的并行操作能力,在单周期内允许指令和数据同时存取,再加上高度优化的指令集,使得该芯片具有很高的运算速度,可以轻松应对高速、大数据量的数据处理和复杂的算法实现。

1.3 FPGA

        FPGA采用的是Altera公司的EP1K100Q208,是一款高性价比的FPGA。主要特性有:10万典型门,4992个逻辑单元,49152 bits RAM和147个IO口。
在DSP&FPGA模块中,FPGA映射在DSP的IO空间,主要功能有:
       1) 实现高速的DSP接口和低速的外设接口之间的时序协调工作,充分发挥DSP的高速优势;
       2) 协助DSP处理一些算法简单、重复性高的算法,以充分发挥FPGA的并行硬件运算能力,例如数据平均、DDS、PWM等功能;
       3) 为系统增加丰富的IO接口,弥补DSP通用IO控制接口不足的缺点;
       4) 为适应不用的需要进行灵活的电路译码。

2. Bootloader方案

2.1 Bootloader原理

          在DSP系统中,用于存储程序源代码的非易失性存储器相对于DSP的运算速度较慢,会大大降低系统性能,所以需要bootloader在系统加电时把存储在低速存储器中的源程序搬运到高速存储器中来。
         在DSP&FPGA模块中,用户可以通过跳线灵活选择MP或MC工作方式,以适应不同的bootloader方案。

2.2 片上 bootloader方案

2.2.1 16位并行加载过程


          C5416的内部ROM中有固化好的加载程序。如果DSP的MP/MC管脚接低,工作在MC方式。在DSP加电RESET时,程序就从内部ROM的FF80H地址开始行运行。在FF80H处,有一条跳转到BOOT程序的指令,执行内部固化好的BOOT程序。
          Boot程序的执行过程:
         1) 首先进行初始化,工作包括关闭中断、将内部RAM映射在程序/数据空间,以及为访问数据和程序空间设置的七个软件等待等;
         2) 检查INT2,决定是否从HPI加载;
         3) 检查INT3,决定是否进行串行EEPROM加载;
         4) 从IO空间的0xFFFF地址读取源地址,如果有效,则进行并行加载,否则从数据空间0xFFFF地址读取源地址,如果有效,则进行并行加载;
         5) 以上都不是,则进行串口加载或IO加载。
        DSP&FPGA模块上有4M bit的falsh存储器,用于支持16位并口加载方案,其流程如图2所示。
                                   图2 TMS320VC5416的并行EPROM加载流程图
2.2.2 硬件实现

        DSP&FPGA模块上的FPGA芯片可以通过VHDL程序设计方便的实现Bootloader的硬件要求:
        1) FLASH_nOE   到nMSTRB OR (NOT R_nW)
        2) FLASH_nWE   到     DSP_R/nW
        3) PORTFFFF = CODE在DSP数据空间中的起始位置。

2.2.3 创建引导表

         为使DSP能有效地把外扩EPROM中的程序引导到芯片内RAM,需要编制一个引导表。引导表内容包含如下几个方面:1)引导方式的标识;2)程序存放的目标首地址;3)程序执行的入口址址;4)用户程序代码;5)用户程序块长度。图2中的程序源地址就是引导表的首地址,而引导方式的标识就是0x10AA或0xXX08。
        为了给用户程序创建引导表,需要hex500.exe把用户代码out文件转化为hex文件。步骤如下:

         首先建立convert.cmd文件:
         XXX.out //用户的out文件
         -i //决定输出文件格式为HEX格式
        -memwidth 16 //决定产生的数据宽度为16位
        -romwidth 16 //选择存储器的位宽为16位
        -boot //说明产生一个Boot标识
        -bootorg 0xXXXX //选择CODE在DSP数据空间中的起始位置
       -e 0xXXXX //选择程序中断向量的入口点
       -o XXX.hex //命名生成的HEX文件名

       然后再DOS环境下执行Hex500 convert.cmd就可以完成转换。

2.3 自定义bootloader 方案

         片上bootloader方案方便可靠,采用外部并行BOOT方式时,BOOT的寻址区是在数据区,因而最大的范围是64K。如果程序代码超过了64K那么就需要用到自定义bootloader方案。

2.3.1 存储器分配

         DSP&FPGA模块,在DSP完成Bootloader之前,将DSP的数据空间0x8000-0xffff映射到FLASH空间,完成bootloader后,该数据空间释放出来给用户DSP程序使用。由于片上最大RAM是128K,所以系统最大支持128K的用户代码。Flash存储区分配如表1所示
表1 Flash存储区分配表

工作程序代码                        0x8000-0xdf80
工作程序的VECTOR             [0xfe80-0xff00)
LOADER                                    [0xff00-0xff80)
BOOT                                         [0xff80-0xffff)

工作程序代码                        [0x18000-0x1fb00)
工作程序代码                        [0x28000-0x2fB00)
工作程序代码                        [0x38000-0x3fB00)


2.3.2 硬件实现

         自定义Bootloader的硬件实现也是通过VHDL语言实现的。
         1) FLASH_nOE  nMSTRB OR (NOT R_nW)
         2) FLASH_nWE  DSP_R/nW
         3) 上电初始化初始化:FLASH_A17/A16 = (00)
         4) PORT40 = 0x60 A17=0
         5) PORT40 = 0x61 A17=1
         6) PORT40 = 0x62 A16 = 0
         7) PORT40 = 0x63 A16 = 1
         8) PORT40 = 0x64 FLASH_nCE  DSP_nPS
         9) PORT40 = 0x65 FLASH_nCE  DSP_nDS

2.3.3 BOOTLOAD过程

         自定义bootloader方案需要用户自己编写bootloader代码,此时DSP的MP/MC管脚接高,工作在MP工作方式,根据图3所示的TMS320VC65416程序空间和数据空间映射图可以看出,此时程序空间的0Xff80地址正好对应在外部flash里。用户自己编写的Bootloader就烧写在flash的0xff80—0xffff空间。Bootloader过程如下:
         1) 在DSP加电RESET时,程序就从外部FLASH的FF80H地址开始运行,从FF80开始执行boot代码;
             .mmregs
             .def boot_start
             .sect ".boot"
             .ref loader_start

            boot_start:
            ssbx intm
            ld #0,dp
            nop

            orm #060h,@1dh
            stm #60h,ar0
            portw ar0,40h
           stm #62h,ar0
           portw ar0,40h

           stm #0e80h, ar1
           rpt #(80h-1)
           MVPD #0ff00h, *ar1+
           nop

          endboot:
          ld #0E80h,a
          and #00ffffh,a
          bacc a
         .end

2) Boot代码将loader代码从FLASH(程序区)copy到程序和数据共存区,然后跳转到loader起始点;
         .mmregs
         .def loader_start
         .sect ".loader"

         loader_start:
         andm #0ffb7h,@1dh

         stm #65h,ar0
         portw ar0,40h

        ld #07f80h,a
        and #00ffffh,a
        stm #0FE80h, ar1
        rpt #(80h-1)
        writa *ar1+
        nop

        ld #0f00h,a
       and #00ffffh,a
       stm #08000h,ar1
       rpt #(7080h-1)
       writa *ar1+
       nop

       stm #61h,ar0
       portw ar0,40h
       stm #62h,ar0
       portw ar0,40h

      stm #0000h,al
      and #0ffffh,a
      add #2800h,4,a
      stm #8000h,ar1
      rpt #(7b00h-1)
      writa *ar1+
      nop

     stm #61h,ar0
      portw ar0,40h
     stm #63h,ar0
     portw ar0,40h

     stm #0000h,al
     and #0ffffh,a
     add #3800h,4,a
     stm #8000h,ar1
     rpt #(7b00h-1)
     writa *ar1+
     nop

3) Loader代码将工作程序代码和VECTOR从FLASH(数据区)加载到内部ram(数据区)中,并跳转到工作程序工作VECTOR。

                                        图3 TMS320VC65416程序空间和数据空间映射图

3. 应用
  
         由于DSP&FPGA模块将核心的处理模块通过2个120针的插座BTB120P-F和外部链接,所以可以根据具体应用很方便的进行扩展,如图4所示。
                                                      图4 DSP&FPGA模块典型应用系统

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

粉丝