位置:51电子网 » 技术资料 » EDA/PLD

TMS320C61416 EMIF总线下双FPGA加载设计

发布时间:2008/5/28 0:00:00 访问次数:946

  基于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公司的tms320c61416 dsp控制fpga芯片数据加载的软硬件设计。

1 xilinx fpga配置原理

  virtex-4系列的fpga芯片外部配置引脚mode pin(m0、m1、m2),有5种配置模式,如表1所列。

  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进行配置加载。

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加

  基于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公司的tms320c61416 dsp控制fpga芯片数据加载的软硬件设计。

1 xilinx fpga配置原理

  virtex-4系列的fpga芯片外部配置引脚mode pin(m0、m1、m2),有5种配置模式,如表1所列。

  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进行配置加载。

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加

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!