基于FIash和JTAG接口的FPGA多配置系统

发布者:二进制游侠最新更新时间:2011-04-20 来源: 单片机与嵌入式系统关键字:FIash  JTAG  多配置系统 手机看文章 扫描二维码
随时随地手机看文章
   

摘要:针对需要切换FPGA器件的配置以实现不同功能的特殊应用场合,提出了一种使用大容量的Flash存储器作配置码流载体的FPGA多配置系统。该系统采用传输速度快的JTAG接口提高了配置码流的烧写速度,采用并行从模式减少了FPGA器件配置时间,并利用串口通信实现了配置码流的在线切换。应用结果表明,该系统操作方便,可靠性高,实现成本低,通用性好。
关键词:FPGA;Flash存储器;JTAG

引言
    针对需要切换多个FPGA配置码流的场合,Xilinx公司提出了一种名为System ACE的解决方案,它利用CF(Compact Flash)存储卡来替代配置用PROM,用专门的ACE控制芯片完成CF卡的读写,上位机软件生成专用的ACE文件并下载到CF存储卡中,上电后通过ACE控制芯片实现不同配置码流间的切换。
    System ACE的解决方案需要购买CF存储卡和专用的ACE控制芯片,增加了系统搭建成本和耗费了更多空间,而且该方案只能实现最多8个配置文件的切换,在面对更多个配置文件时,这种方案也无能为力。但若要开发System ACE的替代方案,则需要选择更合适的可反复编程存储器,并且需要选用合适的传输协议接口来下载配置码流。通过串口或并口来下载配置码流速度太慢,不能满足应用中快速下载的需要;通过USB接口来下载配置码流则需要专门的控制芯片,增加了系统设计的成本。
    本文选用大容量NOR Flash存储器来存储配置码流,并利用JTAG接口完成配置码流下载的FPGA多配置解决方案。与System ACE方案相比,该方案不仅能快速完成多个配置码流的下载,还具有更高的配置速度和更低的实现成本。

1 JTAG接口模块的设计
    为了将配置码流写入Flash存储器,上位机软件通过JTAG下载线与JTAG接口模块连接。JTAG接口模块接收上位机软件发送的JTAG信号,从中提取出JTAG指令及对应的数据,并产生针对Flash存储器的擦除和烧写信号。由IEEE 1149.1—2001标准以及NOR Flash存储器先擦除后写入的特性,设计上位机软件的具体执行流程如图1所示。同时为了完成Flash存储器的擦除和烧写,本文在软件设计中规定了一系列的自定义JTAG指令,如图1中括号内所示。本文规定一帧数据大小为4 096比特。

b.JPG


    JTAG接口模块通过外部引脚接收到JTAG信号后,为了完成JTAG指令及数据的提取,JTAG接口模块中必需包含一个TAP(Test Access Port)控制器,TAP控制器是一个16状态的状态机,在TCK的上升沿通过TMS的变化可以控制状态的转移。在特定的状态即可将JTAG指令及数据分别存入指令寄存器(IR-Instruetion Register)和数据寄存器(DR-Data Register)中。JTAG接口模块在接收到上位机软件发送的指令后,相应的解释如表1所列。

b.JPG



2 FIash控制器和FPGA器件配置模块设计
2.1 FIash控制器设计
    烧写Flash存储器和利用Flash存储器配置FPGA器件时,都需要对Flash存储器进行操作,因此需要设计一个控制器模块来专门产生Flash存储器的控制指令。Flash控制器要实现的功能是:响应输入的擦除、写、读命令,并根据命令产生相应的时序来实现对Flash的操作。
    为了在一片Flash存储器中存放多个配置文件,可以将Flash按照配置文件的大小分为多个区间。这样,对于一个具体的配置文件,输入指令的作用范围应该在配置文件存放的区间内。因此,擦除某个配置文件时要选用块擦除方式,而不是整片擦除方式。
    为了及时的将一帧配置码流写入Flash存储器中,要求Flash存储器的编程时间应该小于FPGM指令执行后的等待时间。根据Flash存储器数据手册上的参考数据计算后发现,使用普通的编程方式来烧写一帧配置码流时间大于等待时间,而使用写缓冲的编程方式来烧写一帧配置码流的时间要小于等待时间,因此必须选用写缓冲的编程方式来烧写Flash存储器。
    JTAG接口与Flash控制器间的命令和数据翻译由反向兼容JTAG控制器中的烧写控制模块完成。它会接收JTAG接口发送的擦除或写命令,经过转化后产生相应的Flash控制器必需的命令、地址和数据。由于一次写缓冲编程写入Flash存储器的数据小于一帧配置码流的大小,因此接收到写命令后,烧写控制模块会配合写命令和对应的操作地址,将缓冲区中一帧配置码流分多次送往Flash控制器。
2.2 FPGA器件配置模块设计
    Virtex系列FPGA器件的配置模式共有4种:串行主模式、串行从模式、并行从模式和边界扫描模式,其中主模式使用内部振荡器提供时钟,从模式和边界扫描模式使用器件外部提供的时钟。在FPGA器件上电初始化后,配置模块向FPGA发送配置码流和配置时钟来配置FPGA器件。因为配置速度越快FPGA器件工作前的等待时间就越短,所以本方案选择速度最快的并行从模式。图2是并行从模式的时序图,数据(DATA[7:O])必须满足建立时间(Tsu)和保持时间(Th)的约束。FPGA器件配置模块配置FPGA器件的步骤如下:
    ①FPGA器件配置模块检测到INIT引脚信号变高,说明FPGA器件的上电后自动初始化已完成,配置模块向Flash控制器发送读命令;
    ②配置模块收到Flash控制器返回的配置码流后,在每个时钟上升沿向FPGA器件发送一个8位配置码流;
    ③配置模块检测到DONE引脚信号变高,说明FPGA器件已配置完成,配置过程结束。

c.JPG


    由于从向Flash控制器发送读命令到Flash控制器返回配置码流的时间大于一个周期,且返回数据的位宽大于并行从模式的数据位宽,因此必须先对配置码流进行位宽转换。同时,为了保证CCLK的每个始终上升沿都有一个8位配置码流发送出去,还必须对CCLK进行合适的分频。

3 方案的设计实现
    本方案的所有控制逻辑设计用一片Xilinx Spartan II系列XC2S200型FPGA器件实现。采用Spansion公司的NOR Flash存储器来存放配置文件,其型号为S29GL512N,容量为512 Mb。系统总体框图如图3所示。上位机软件包括Flash烧写工具和串口工具。烧写配置文件时,Flash烧写工具通过JTAG下载线向控制FPGA传输JTAG指令及配置码流,同时串口工具通过串口向控制FPGA发送配置文件地址,完成配置文件存放区间的切换;配置FPGA时,串口工具通过串口向控制FPGA发送配置文件地址及重配置信号,完成配置文件的切换。若实际应用中配置文件过多,还可组成Flash存储器阵列来增加存储深度。

d.JPG


3.1 设计的FPGA实现
    控制FPGA实现的逻辑控制功能包括与上位机软件iMPACT和串口工具通信、烧写Flash以及配置FPGA器件。基于模块化的设计思想将具体功能分解成多个模块,如图3所示,数据与地址通道上的下标为其通道宽度。各模块作用如下:
    ①RS232接口模块接收来自串口工具的配置文件地址及重配置信号,配置文件地址译码后得到对Flash存储器进行各种操作时的起始地址,重配置信号则用来触发FPGA配置文件的切换。
    ②JTAG模块包括JTAG接口模块、数据缓存模块及烧写控制模块。JTAG接口接收JTAG下载线上的JTAG指令和数据后,若为FERASE或FPGM指令则向烧写控制模块发送擦除或烧写信号,若为FDATA0指令则接收TDI上的串行数据并存入数据缓存模块中。数据缓存模块利用片内BRAM来实现,可存放一帧配置码流。烧写控制模块接收到擦除信号后,产生擦除命令和操作地址并发往状态选择模块;接收到烧写信号后,从数据缓存模块读取配置码流,产生的写命令、操作地址发往状态选择模块,操作数据则直接发往Flash控制器。
    ③FPGA配置模块接收到来自RS232接口模块的起始地址和重配置信号后,先向待配FPGA器件发送初始化信号,等待初始化完成后向状态选择模块连续发送读命令和操作地址,并利用从Flash控制器返回的配置码流来配置FPGA器件。
    ④状态选择模块根据外部的烧写/配置信号选择Flash控制器的输入,从而决定控制FPGA目前处于烧写Flash存储器状态还是配置FPGA器件状态。若为“0”,则输入烧写控制模块产生的命令和地址,控制FPGA处于烧写Flash存储器状态;若为“1”,则输入配置控制模块产生的命令和地址,控制FPGA处于配置FPGA器件状态。
    Flash控制器响应这些输入的命令、操作地址和数据,产生与命令相对应的Flash存储器控制时序,并返回Flash存储器的数据输出。
3.2 性能实际测试
    本方案处于编程模式时,系统能够通过JTAG接口和串口与上位机软件进行正常的通信,在加载合适的配置文件后,可以完成Flash存储器的擦除和烧写操作,实测烧写速度为160 Kb。需要烧写多个配置文件时,通过串口工具发送配置文件地址,即可对不同的Flash空间进行操作。
    处于配置模式时,以Virtex系列中XCV1000型FPGA为配置对象,其配置文件大小约为5.84 Mb,实测一次配置时间为60 ms,计算得知配置速度约为97 Mb/s,远大于System ACE解决方案的30 Mb/s。如需切换不同的配置文件,从串口工具发送配置文件地址及重配置信号,即可实现多个配置文件的实时切换。

结语
    本文分析了各种传输协议接口以及System ACE多配置解决方案的优缺点,根据实际应用需求,提出了一种基于大容量NOR Flash并利用JTAG接口完成配置码流下载的FPGA多配置系统解决方案。本系统采用Flash存储器替代配置用PROM或CF卡,节省了硬件成本和空间,且理论上可以支持不限数量的配置文件切换,对FPGA的配置速度也达到了System ACE方案的3倍以上。

关键字:FIash  JTAG  多配置系统 引用地址:基于FIash和JTAG接口的FPGA多配置系统

上一篇:莱迪思推出基于FPGA的低成本设计平台:LatticeECP3 Versa
下一篇:根升余弦脉冲成形滤波器FPGA实现

推荐阅读最新更新时间:2024-05-02 21:21

keil提示仿真器SWD/JTAG Communication Failure的问题解决
问题现象 在使用CMSIS-DAP仿真器的时候,经常出现连不上仿真器,很烦人,就算你重启MDK或者重启电脑,插拔主板的电源或者仿真器的usb连接线都无济于事。错误提示: 问题分析: 把可能出现硬件问题都一遍遍排除了,剩下就是软件问题了,莫非是MDK的配置问题,打开仿真器的设置 ,上面的设置似乎也没啥问题,只提示仿真器通讯错误。心里想:莫非是工程配置文件的问题?于是打开其他工程,下载,仿真,果然没问题。再打开刚才出问题的工程,问题依旧。这样可以确定是项目配置文件的问题,可能是之前仿真出错,强制关闭Keil导致项目配置文件出错了。 问题解决 最后定位到一个以“uvoptx”后缀的配置文件,把它拷贝到有问题的工程项目里,替换原
[单片机]
keil提示仿真器SWD/<font color='red'>JTAG</font> Communication Failure的问题解决
MAXQ微控制器中JTAG接口引脚的复用
  简介   通常在嵌入式应用中,微控制器的每个端口引脚对于实际应用来说都是必需的,没有多余的引脚。然而,开发人员可采用其他方法来解决这个问题。大部分MAXQ微控制器可重写内部程序存储器(如闪存或EEPROM),支持标准JTAG/TAP接口(也称为调试端口)。外部主机可利用该接口执行在线调试或在线编程(引导装载)功能。该接口中的所有引脚通常可复用为标准GPIO端口引脚功能,从而使这些引脚在开发阶段结束之后仍然可以被使用。本应用笔记阐述了在常规应用中如何复用这些引脚。同时,本应用笔记还指出了在复用这些引脚时需要考虑的事项。   应用系统开发阶段   在开发阶段,JTAG兼容调试端口可提供许多有用功能。首先,调试端口允许应
[嵌入式]
采用JTAG仿真器的DSP中断检测处理技术方案
1、引言   在采用集成化的开发调试平台CCS结合基于JTAG技术的仿真器实现 DSP系统的实时性分析过程中设定中断检测点是非常重要的,中断检测点可以中断程序的执行以进行特定的操作,例如可以进行数据文件的输入输出,可以刷新图表和数据窗口等,便于在实时性分析中更有效的观察数据处理的显示结果。 2、基于 JTAG技术的仿真器   JTAG技术即边界扫描技术,是一种专用的电子系统测试技术,就是通常所指的 IEEE1149.1标准,已经在各行业中得到了广泛的应用,如图 1,一个符合 IEEE1149.1标准的 JTAG器件,有别于不同的逻辑器件,内部都包括一个 TAP(测试访问端口)控制器,其次在芯片内部经由一个扫描链路将所有
[嵌入式]
采用<font color='red'>JTAG</font>仿真器的DSP中断检测处理技术方案
关于MSP430-JTAG的若干个问答
1.问:在将程序通过JTAG口烧入MSP430时常遇到找不到器件,通过断电复位,重新联机几次才可以写入,一点规律没有,不知道是怎么回事?有那位仁兄也遇到此类问题?如何解决的?是不是JTAG口的问题?请指教。 答: 1、可能是目标板复位原因,最常见的就是复位芯片。 2、用户使用内外部电源,很可能是因为电源冲突。切忌!!! 2.问:我把BSL的6,8两脚不接外电分别接目标板的电压或接外电(3。6V)后再分别接目标板的电压,4种情况都还是调不通,不知道具体问题出在哪里?请指教。 答:bsl接口针对不同的MSP430 FLASH系列,其连接方式是不一样,其电源部分是一致的,您还是着重检测P1/2/3脚的接法。主要是根据FLASH系列不
[单片机]
JTAG调试接口电路图设计
  JTAG接口主要包括以下四个引脚:TMS TCK TDI和TCO及一个可选配的引脚TRST,用于驱动电路模块和控制执行规定的操作。各引脚的功能如下:   TCK:JTAG测试时钟,为TAP控制器和寄存器提供测试参考。在TCK的同步作用下通过TDI和TDO引脚串行移入或移出数据及指令。同时,TCK为TAP控制器状态机提供时钟。   TMS:TAP控制器的三项式输入信号。TCK的上升沿时刻TMS的状态确定TAP控制器即将进入的工作状态。通常TMS引脚具有内部上拉电阻,以保证该引脚在没有驱动时处于逻辑1状态。   TDI:JTAG指令和数据寄存器的串行数据输入端。TAP控制器的当前状态以及保持在指令寄存器中的具体指令决定对于一个特定
[电源管理]
<font color='red'>JTAG</font>调试接口电路图设计
基于多核芯片S698PM的JTAG应用
摘 要: 经过几十年SoC系统设计技术的快速发展, SOC芯片内部频率越来越快,编写及运行程序越来越大。在测试及调试过程中,用传统UART串口下载及调试程序,在速度、打印等方面呈现出诸多不便;而且该端口在SOC/FPGA研发领域中不通用,而JTAG接口却圆满地解决了上述两个问题。 关键词: 系统级芯片(SOC);知识产权(IP);JTAG;S698PM多核芯片; AMBA总线; Abstract: THE JTAG APPLICATION OF S698PM CHIP After the rapid development of SoC system design technology, SoC chip
[单片机]
基于多核芯片S698PM的<font color='red'>JTAG</font>应用
一种可配置主轴数控系统研究与开发
  在现有 数控技术 中,最常用的是单主轴的多轴联动数控系统。这种数控系统一般一次只能装夹加工一个工件。而在某些应用场合,需要进行工件的批量加工,单台 数控机床 的加工效率难以满足需要。尽管可以在单一主轴架上夹装多个主轴头,但因装配误差以及刀具长短不一,同时加工同一种工件时,为保证加工工件的一致性,在机床装配和刀具调整上将花费大量人力物力,使用很不方便;在另一些应用场合,对于同一工件,往往需要一次装夹后采用多把刀具多道工序轮动复合加工完成,每道工序只用其中一把刀具加工。目前,最常用的方式是配置刀库,刀库主要是提供储刀位置,并能依程序的控制,由换刀机构正确选择刀具加以定位,以进行刀具交换 。通过自动换刀和工作台分度可对棱柱体类零件进行
[嵌入式]
STM32 中JTAG 引脚作为普通IO口设置方法
第一次画STM32 的PCB ,因为采用了SWD 调试,认为JTAG的引脚PB3,PB4,没有用到就做了普通IO口,麻烦从此引起了。 设置PB3,PB4均为输出口,且输出高电平,用万用表测量,PB4为高,PB3不是高电平,在看MDK 中的寄存器值,PB3,PB4都是高啊?寄存器的值怎么和实际的值不一样了? 唉,都让我怀疑是不是引脚接错了,反复测量后发现引脚确实是对的,但为什么PB3能输出高,而PB4不可呢? 不知道,问度娘,后来在一个帖子上发现了相关回复: 首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些 端口设置为
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved