很多兄弟对于CPLD下JTAG的下载很熟悉了,可转到FPGA来的时候,多多少少有些迷惑,怎么出现配置芯片了,为什么要用不同的下载电缆,不同的下载模式?我就自己知道的一点东西谈一些个人的见解,并发一些资料.
1.FPGA器件有三类配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式。
AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EPCS4配置器件专供AS模式,目前只支持 Cyclone系列。使用Altera串行配置器件来完成。Cyclone期间处于主动地位,配置期间处于从属地位。配置数据通过DATA0引脚送入 FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。(见附图)
PS则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。(见附图)
JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。
FPGA在正常工作时,它的配置数据存储在SRAM中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS。在实用系统中,多数情况下必须由FPGA主动引导配置操作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中fpga配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。
专用配置器件:epc型号的存储器
常用配置器件:epc2,epc1,epc4,epc8,epc1441(现在好象已经被逐步淘汰了)等
对于cyclone cycloneII系列器件,ALTERA还提供了针对AS方式的配置器件,EPCS系列.如EPCS1,EPCS4配置器件也是串行配置的.注意,他们只适用于cyclone系列.
除了AS和PS等单BIT配置外,现在的一些器件已经支持PPS,FPS等一些并行配置方式,提升了配置速度。当然所外挂的电路也和PS有一些区别。还有处理器配置比如JRUNNER 等等,如果需要再baidu吧,至少不下十种。比如Altera公司的配置方式主要有Passive Serial(PS),Active Serial(AS),Fast Passive Parallel(FPP),Passive Parallel Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchronous(PSA),JTAG等七种配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三种.
2 对FPGA芯片的配置中,可以采用AS模式的方法,如果采用EPCS的芯片,通过一条下载线进行烧写的话,那么开始的"nCONFIG,nSTATUS"应该上拉,要是考虑多种配置模式,可以采用跳线设计。让配置方式在跳线中切换,上拉电阻的阻值可以采用10K
3,在PS模式下tip:如果你用电缆线配置板上的FPGA芯片,而这个FPGA芯片已经有配置芯片在板上,那你就必须隔离缆线与配置芯片的信号.(祥见下图).一般平时调试时不会把配置芯片焊上的,这时候用缆线下载程序.只有在调试完成以后,才把程序烧在配置芯片中, 然后将芯片焊上.或者配置芯片就是可以方便取下焊上的那种.这样出了问题还可以方便地调试.
在AS模式下tip: 用过一块板子用的AS下载,配置芯片一直是焊在板子上的,原来AS方式在用线缆对配置芯片进行下载的时候,会自动禁止对FPGA的配置,而PS方式需要电路上隔离。
4,一般是用jtag配置epc2和flex10k,然后 epc2用ps方式配置flex10k.这样用比较好.(这是我在网上看到的,可以这样用吗?怀疑中)望达人告知.
5,下载电缆,Altera下的下载电缆分为byteblaster和byteblasterMV,以及ByteBlaster II,现在还推出了基于USB-blaster.由于BB基本已经很少有人使用,而USB-Blaster现在又过于昂贵,这里就说一下BBII和 BBMV的区别.
BBII支持多电压供电5.5v,3.3v,2.5v,1.8v;
BBII支持三种下载模式:AS,可对Altera的As串行配置芯片(EPCS系列)进行编程
PS,可对FPGA进行配置
JTAG,可对FPGA,CPLD,即Altera配置芯片(EPC系列)编程
而BBMV只支持PS和JTAG
6,一般在做FPGA实验板,(如cyclone系列)的时候,用AS+JTAG方式,这样可以用JTAG方式调试,而最后程序已经调试无误了后,再用 AS模式把程序烧到配置芯片里去,而且这样有一个明显的优点,就是在AS模式不能下载的时候,可以利用Quartus自带的工具生成JTAG模式下可以利用的jic文件来验证配置芯片是否已经损坏,方法祥见附件(这是骏龙的人写的,摘自咱们的坛子,如有版权问题,包涵包涵).
7.Altera的FPGA可以通过单片机,CPLD等加以配置,主要原理是满足datasheet中的时序即可,这里我就不多说了,有兴趣的朋友可以看看下面几篇文章,应该就能够明白是怎么回事了.
8.配置时,quartus软件操作部分:
(1).assignment-->device-->device&pin options-->选择configuration scheme,configuaration mode,configuration device,注
意在不支持远程和本地更新的机器中configuration mode不可选择,而configuration device中会根据不同的配置芯片产生pof文件,
如果选择自动,会选择最小密度的器件和适合设计
(2).可以定义双口引脚在配置完毕后的作用,在刚才的device&pin option-->dual-purpose pins-->,可以在配置完毕后继续当I/O口
使用
(3).在general菜单下也有很多可钩选项,默认情况下一般不做改动,具体用法参见altera configuration
handbook,volume2,sectionII.
(4)关于不同后缀名的文件的适用范围:
sof(SRAM Object File)当直接用PS模式下将配置数据下到FPGA里用到,USB BLASTER,MASTERBLASER,BBII,BBMV适用,quartusII会自
动生成,所有其他的配置文件都是由sof生成的.
pof(Programmer Object File)也是由quartusII自动生成的,BBII适用,AS模式下将配置数据下到配置芯片中
rbf(Raw Binary File)用于微处理器的二进制文件.在PS,FPP,PPS,PPA配置下有用处
rpd(Raw Programing Data File)包含bitstream的二进制文件,可用AS模式配置,只能由pof文件生成
hex(hexadecimal file)这个就不多说了,单片机里很多
ttf(Tabular Text File)适用于FPP,PPS,PPA,和bit-wide PS配置方式
sbf(Serial Bitstream File)用PS模式配置Flex 10k和Flex6000的
jam(Jam File)专门用于program,verigy,blank-check
jic的用法6楼已经提到,在这里就不多说了
ALTERA CPLD器件的配置与下载
一、 配置方式
ALTERA CPLD器件的配置方式主要分为两大类:主动配置方式和被动方式。主动配置方式由CPLD器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式由外部计算机或控制器控制配置过程。根据数据线的多少又可以将CPLD器件配置方式分为并行配置和串行配置两类。经过不同组合就得到四种配置方式:主动串行配置(AS)、被动串行(PS)、被动并行同步(PPS)、被动并行异步(PPA)。我们没有必要对每一种配置方式都进行讲述,而是详细地来讲讲我们实验室中经常使用的方式:被动串行配置方式(PS)。
以FLEX10K器件为例,我们首先对PS方式中使用到的引脚有个了解,它的主要配置引脚如下:
MSEL1、MSEL0:输入;接地。
nSTATUS:双向漏极开路;命令状态下器件的状态输出。加电后,FLEX10K立即驱动该引脚到低电位,然后在100ms内释放掉它,nSTATUS必须经过1.0k电阻上拉到Vcc,如果配置中发生错误,FLEX10K将其拉低。
nCONFIG:输入;配置控制输入。低电位使FLEX10K器件复位,在由低到高的跳变过程中启动配置。
CONF_DONE:双向漏极开路;状态输出。在配置期间,FLEX10K将其驱动为低。所有配置数据无误差接收后,FLEX10K将其置为三态,由于有上拉电阻,所以将变为高电平,表示配置成功。
状态输入。输入高电位引导器件执行初始化过程并进入用户状态。 CONF_DONE必须经过1.0k电阻上拉到Vcc,而且可以将外电路驱动为低以延时FLEX10K初始化过程。
DCLK:输入;为外部数据源提供时钟。
nCE:输入;FLEX10K器件使能输入,nCE为低时使能配置过程,而且为单片配置时,nCE必须始终为低。
nCEO:输出(专用于多片器件);FLEX10K配置完成后,输出为低。在多片级联配置时,驱动下一片的nCE端。
DATA0:输入;数据输入,在DATA0引脚上的一位配置数据。
在被动串行配置(PS)方式中,由ByteBlaster、FLEX下载电缆或微处理器产生一个由低到高的跳变送到nCONFIG引脚,然后微处理器或编程硬件将配置数据送到DATA0引脚,该数据锁存至CONF_DONE变为高电位,它是先将每字节的最低位LSB送到FLEX10K器件。CONF_DONE变为高电位后,DCLK必须多余的10个周期来初始化该器件,器件的初始化是由下载电缆自动执行的。在PS方式中没有握手信号,所以配置时钟的工作频率必须低于10MHz。
在多器件PS方式下,第一片FLEX10K的nCEO引脚级联到下一片FLEX10K的nCE引脚。在一个时钟周期内,第二个FLEX10K器件开始配置,因此,对于微处理器或控制器来说,要转移的数据是透明的,电路如图1。
二、下载电缆ByteBlaster原理(PS方式)
ByteBlaster下载电缆由以下几部分组成:
与PC机并口相连的25针插头;与PCB板插座相连的10针插头;25针到10针的变换电路。
ByteBlaster有两种配置模式:
被动串行模式(PS)——常用来配置重构ACEX1K,APEX20K,FLEX10K,FLEX6000等系列器件。
边界扫描模式(JTAG)——具有边界扫描电路的配置重构或在线编程。
1. ByteBlaster25针插头
ByteBlaster与PC机并口相连的是一个25针的插头,它们的管脚对应关系参见altera网站上的ByteBlaster数据手册。
2. ByteBlaster10针插头
ByteBlaster10针插头是与PCB板上的10针插座连接的,各引脚对应关系参见altera网站上的ByteBlaster数据手册。。
3. ByteBlaster的数据变换电路
在ByteBlaster下载电缆中,其变换电路实际上就是只有一个74LS244和N个电阻,其原理图如图2。
三、基于差分的下载电缆
在上面所述的下载电缆中,用于短距离的下载不会有什么问题;但是,当我们进行稍微长一点距离的下载时,电路就不能正常运行了。为了解决这一问题,我们提出了基于差分传输的下载电缆,并经过实践得以实现了。
在前面讲述的下载电缆中出现的问题主要是由于线路变长后,驱动能力下降造成电路的非正常运行;我们的着眼点就在于增强电路的传输能力,避免电路驱动能力的下降。差分传输是靠电流方式工作的,其传输能力相当强,将其应用于下载电缆中是一种不错的选择。 基于差分传输的下载电缆与前面所述下载电缆的不同在于第三部分——25针到10针的变换电路,其它部分一样。我们只对不同部分进行讲述。
差分传输的原理图如图3。
首先,在发送端将信号变换为差分信号,进行传输;然后,在接受端将差分信号还原为初始信号。
由此我们得到基于差分传输的下载电缆框图如图4所示。
在该设计中,下载电缆的工作条件与前面的工作条件相同。我们用5米长的信号线,电路工作得相当稳定。根据实际需要,信号线还可以加长