0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于DSP芯片TMS320C6416实现上电Flash自行加载FPGA的应用设计

电子设计 来源:单片机与嵌入式系统应用 作者:佘佑军,王丹 2021-03-26 13:52 次阅读

基于SRAM结构的FPGA容量大,可重复操作,应用相当广泛;但其结构类似于SRAM,掉电后数据丢失,因此每次上电时都需重新加载。

目前实现加载的方法通常有两种:一种是用专用Cable通过JTAG口进行数据加载,另一种是外挂与该FPGA厂商配套的PROM芯片。前者需要在PC机上运行专用的加载软件,直接下载到FPGA片内,所以掉电数据仍然会丢失,只适用于FPGA调试阶段而不能应用于工业现场的数据加载。

后者虽然可以解决数据丢失问题,但这种专用芯片成本较高,供货周期也较长(一般大于2个月),使FPGA产品的开发时间受到很大约束。因此希望找到一种更简便实用的FPGA芯片数据加载方法。根据FPGA芯片加载时序分析,本文提出了采用通过市面上常见的Flash ROM芯片替代专用PROM的方式,通过DSP的外部高速总线进行FPGA加载;既节约了系统成本,也能达到FPGA上电迅速加载的目的;特别适用于在FPGA调试后期,待固化程序的阶段。下面以两片Xilinx公司Virtex-4系列XC4VLX60芯片为例,详细介绍采用TI公司的TMS320C61416DSP控制FPGA芯片数据加载的软硬件设计。

1 Xilinx FPGA配置原理

Virtex-4系列的FPGA芯片外部配置引脚MODE PIN(M0、M1、M2),有5种配置模式,如表1所列。

基于DSP芯片TMS320C6416实现上电Flash自行加载FPGA的应用设计

FPGA在Slave SelectMAP方式下,共用了表2所列的15个配置引脚。

1.1 配置流程

FPGA加载时序如图1所示。各配置信号必须满足其时序关系,否则配置工作无法正常完成。

图1中,Slave SelelctMAP加载主要包括以下3个步骤:

①启动和初始化。FPGA上电正常后,通过PROG_B引脚低脉冲进行FPGA异步复位,使得FPGA内部逻辑清零。其次PROG_B上拉高,停止外部复位,INIT_B引脚会在TPOR时间段内自动产生一个由低到高的跳变,指示FPGA内部初始化完成,可以进行数据下载;同时FPGA在INIT_B的上升沿采样其模式引脚MODE PIN,决定其模式配置。

②比特流加载。INIT_B信号变高后,不需要额外的等待时间,Virtex器件就可以立即开始数据的配置。比特流数据在外部CCLK信号上升沿按字节方式置入。该过程包括同步初始化字、器件ID号校验、加载配置数据帧、CRC校验4个部分。

③STARTUP启动。在成功校验CRC码位后,比特流命令使得FPGA进入STARTUP状态。它是由8相状态机实现的。中间包括等待DCM锁相、DCI匹配等几个状态,最后FPGA释放外部DONE引脚,对外输出高阻态,由外部上拉高,指示FPGA加载成功。

1.2 文件生成

ISE生成数据文件主要有3种:BIT文件,由二进制格式进行表征逻辑设计,包括文件头和配置数据,主要用于JTAG下载电缆模式;MCS文件,为外部PROM烧写生成的下载文件,ASCII码,与前者不同的是它含有在PROM中的数据地址和校验值;BIN文件格式,由二进制表示,完全由配置数据组成,不需要作其他的提取和进制转换,只是配置前的Byte-Swapped是在CPLD中实现的。本设计采用的是BIN文件格式。

2 硬件实现

系统采用2片Xilinx Virtex-4系列的600万门的FPGA XC4VLX60。主MCU是TI公司高性能定点处理器TMS320C6416,对外有2个EMIF总线接口,分别是64位宽EMIFA和16位宽EMIFB。EMIFB上挂有8位8MB的Flash和16位CPLD:Flash做2片FPGA的BIN文件保存,之前由仿真器烧写;CPLD用于2片FPGA地址译码和DSP与FPGA配置部分的逻辑接口。整个数据流程是在DSP上电启动后,Bootloader自行引导用户程序运行。该程序负责由EMIFB总线搬移Flash空间中BIN文件,通过CPLD分别对2片FPGA进行配置加载。硬件系统拓扑图如图2所示。

3 软件设计

软件包括3部分:引导Bootloader代码,加载FPGA用户程序以及接口部分的CPLD Verilog代码。

3.1 DSP Bootloader

本系统中目标板处于FPGA调试后期,需要固化其加载程序。整板上电后,要求脱离仿真器自行加载FPGA,因此这里采用DSP的EMIF BooT方式。它是由DSP上电复位后,以默认ROM时序通过EDMA自行搬移BCE1的ROM空间前1 KB内容到片内,在其0x0地址开始运行。

一般由C编写的程序代码长度都远大于1 KB,如果只是纯粹由DSP搬移Flash前1 KB空间,这样便会丢失数据,程序无法正常运行。这里采用由汇编语言写的一个两次搬移的Bootloader程序,来引导较大的用户程序。使用汇编语言是因为其代码效率高,代码长度短(本系统中只有256字节)。两次搬移是因为第一次DSP自行搬移后的Bootloader会占用片内的0x0地址前1 KB空间,与下一步的用户程序0x0地址拷贝冲突(中断向量表必须放在0x0地址,否则会丢失中断跳转的绝对地址),且运行中的Bootloader不能覆盖自身。所以把拷贝用户程序的那部分代码放在片内较底端运行,腾出了用户空间的0x0地址。最后整体拷贝结束后,Bootloader再跳转到用户程序入口地址c_int00运行。

3.2 用户程序和CPLD程序

本系统中2片FPGA加载的原理一样。为避免繁琐,这里以1片FPGA_A为例来作介绍。

CPLD在系统中负责2项工作。

①映射DSP端Flash分页寄存器:控制Flash的高3位地址线,分8页,每页1 MB空间。

②映射DSP端2片FPGA的加载寄存器:

a.配置寄存器FpgaA(B)_config_Reg[8:O]。负责配置数据和时钟,高8位为Byte-Swapped前的数据位,输出到配置引脚时进行字节交换,最低位为CCLK位。

b.控制寄存器FpgaA(B)_Prog_Reg[2:O]。负责外部控制引脚,分别为CS_B、RDWR_B和PROG_B。

c.状态寄存器FpgaA(B)_State_Reg[2:0]。负责回读配置中的握手信号,分别为BUSY、DONE和INIT_B。

由Bootloader引导的用户程序由C语言开发,在CCS下调试通过。它主要实现Flash翻页,把之前烧写在Flash中的BIN文件,通过上述CPLD中3个加载寄存器对FPGA进行上电配置。具体流程如图3所示。

当前FPGA配置时钟CCLK是在用户程序中通过DSP写命令产生的,即写FpgaA(B)_Config_Reg的CCLK位高低电平;同时8位配置数据也连续写2次,由CPLD锁存到FPGA总线上,便能充分保证图1中该有效数据在CCLK上升沿上被锁。

以下是CPLD中动态加载部分的Verilog代码:

//FPGA控制寄存器(DSP只写)

结 语

该系统已成功用于某公司一款软件无线电平台中,通过反复软硬件调试,现已投放市场。此外,由于该系统中的DSP芯片TMS320C6416自带PCI桥,因此该平台设计有与主机通信的CPCI接口,支持32位的PCI总线带宽,最大数据吞吐率能达到133 MB/s。所以,此平台不仅可以实现上述提到的上电Flash自行加载FPGA的目的,还可在其配置完以后通过主机端对FPGA实现动态加载,充分满足了软件无线电中可重构化、实时灵活的指导思想。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7686

    浏览量

    344376
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593233
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146671
收藏 人收藏

    评论

    相关推荐

    急需TMS320C6416的板级支持包bsp/bsl,求助

    急需TMS320C6416的板级支持包bsp/bsl,求助我做了块使用TMS320C6416的板子,现在做DSP开发,没有dsp包啊,要自己写吗?大家有没有现成的,我可以借鉴借鉴。求帮
    发表于 03-22 22:33

    请问TMS320C6416TMS320C6414T 引脚兼容吗? 能不能替换?

    您好,请问TMS320C6416TMS320C6414T 引脚兼容么 能不能替换,如不能需要注意哪些问题?
    发表于 07-25 09:33

    请问有TMS320C6416TMS320C6747的对比表吗?原来用的TMS320C6416,现在想换TMS320C6747 或TMS320C6747

    我是用于图像处理方面,看到TMS320C6416TMS320C6747(TMS320C6748)的主频、指令集长度都不同,感觉不太好比较,能否给个46系列和67系列的对比表?
    发表于 08-02 07:02

    请问如何学习TMS320C6416?

    研二,硬件小白,请问如何学习TMS320C6416?
    发表于 01-24 10:16

    TMS320C6416带bios的程序运行时,连接不仿真器怎么回事

    您好,我正在使用TMS320C6416这款芯片,我目前的程序用的是dspbios 5.31操作系统,开发调试软件是ccs 3.3 。开发环境与软件功能:程序用到了2个GPIO口用来点灯,1个GPIO
    发表于 05-22 14:22

    tms320c6416的TCK、TDO、 TDI、TRST、TMS、EMU等能否直接接到JTAG

    因为看到tms320c6416的DSK JTAG 和DSP的TDO调试口之间加了 选择开关,相当于隔离开了,另外,还看到一个板子 虽然不需要选择开关,但特意加了双向总线开关74CBTD3384
    发表于 05-27 12:27

    如何使用一个TMS320C6713的EMIF口是否可以和多个tms320c6416的HPI口通信?

    使用一个TMS320C6713的EMIF口是否可以和多个tms320c6416的HPI口通信?
    发表于 05-27 15:38

    数字信号处理器TMS320C6416相关资料分享

    TMS320C6416具有8个相互独立的功能单元,其中包含6个支持单周期内单32位、双16位或4个8位数据操作的算术逻辑单元,以及2个支持单周期双16×16位或4个8×8位数据操作的乘法器;内部
    发表于 04-15 06:55

    TMS320C6416 pdf datasheet

    The TMS320C64x™ DSPs (including the TMS320C6414, TMS320C6415, and TMS320C6416 devices
    发表于 08-07 22:21 89次下载

    TMS320C6416 的软件编程优化

    TI 公司开发的TMS320C6416 是目前业界性能最强的芯片之一,目前,它的最高频率为1GHz,指令执行的并行度最高达到8,最大运行处理能力为8000MIPS。本文就基于TMS320C6416
    发表于 05-18 13:35 20次下载

    基于TMS320C6416的拓片图像处理与优化

    该文针对考古拓片的特点和数字信号处理器(DSP)的结构,将拓片图像的处理在TI公司 的TMS320C6416 DSK上进行实现和优化,着重阐述如何利用DSP优越的数字信号处理能力来对考
    发表于 08-05 11:51 19次下载

    基于DSP TMS320C6416的实时图像处理系统

    基于DSP TMS320C6416的实时图像处理系统    本文设计了基于TMS320C6000系列DSP的MPEG-4编码器。将摄像头获取的图像以MPEG-
    发表于 11-25 10:00 2589次阅读
    基于<b class='flag-5'>DSP</b> <b class='flag-5'>TMS320C6416</b>的实时图像处理系统

    基于DSP TMS320C6416的数字下变频技术

    本文以某雷达对抗侦察数字接收机为例,介绍一种基于TI公司的DSP TMS320C6416的数字下变频器。
    发表于 08-09 11:15 2490次阅读
    基于<b class='flag-5'>DSP</b> <b class='flag-5'>TMS320C6416</b>的数字下变频技术

    TMS320C6416 DSK原理图

    TMS320C6416 DSK原理图,下来看看
    发表于 08-05 18:37 46次下载

    TMS320C6416 DSK原理图

    TMS320C6416 DSK原理图,下来看看
    发表于 08-19 17:04 59次下载