CycloneII系列FPGA配置.docx
《CycloneII系列FPGA配置.docx》由会员分享,可在线阅读,更多相关《CycloneII系列FPGA配置.docx(21页珍藏版)》请在冰豆网上搜索。
CycloneII系列FPGA配置
杨宁
1041121665
CycloneII系列FPGA配置
杨宁1041121665
摘要:
由于CycloneII系列器件是用易失性的SRAM结构单元来存储配置数据的,所以在每次系统上电时都要进行重配置。
用户可以使用DCLK频率高达40MHz的AS(主动串行)模式、PS(被动串行)模式或是JTAG对FPGA器件进行配置操作。
另外,为了减小存储需求和配置时间,CycloneII系列器件能够使用压缩数据进行配置。
本文的目的是让用户了解CycloneII器件的配置特点,让用户掌握如何使用CycloneII器件所支持的配置方式对此系列FPGA进行配置。
同时,也会介绍配置管脚的使用及配置文件的格式等相关信息。
关键词:
CycloneII;FPGA;配置
第一节、CycloneII器件配置概述:
用户可以使用AS、PS和JTAG模式配置CycloneII系列FPGA。
选择何种配置方式取决于MSEL管脚的电平状态,请参照表1-1。
表1-1CycloneII配置模式
配置模式
MSEL1
MSEL0
描述
AS(20MHz)
0
0
使用串行配置器件(EPCS1、EPCS4、EPCS16或EPCS64)
PS
0
1
使用增强配置器件(EPC1、EPC2、EPC4、EPC8或EPC16)或者是微机加上电缆
FastAS(40MHz)
1
0
同AS模式
JTAG
*
*
下载电缆和微机(外部控制器)
第二节、配置文件格式
表2-1列出了几个CycloneII系列器件的没有压缩过的配置文件的大小(近似值)。
如果要计算多器件配置时的配置数据的存储空间,可以将相应的值相加。
表2-1CycloneII系列器件的.rbf文件大小(RawBinaryFile)
器件
数据大小(Bits)
数据大小(Bytes)
EP2C5
1,265,792
152,998
EP2C8
1,983,536
247,974
EP2C20
3,892,496
486,526
EP2C35
6,858,656
857,332
EP2C50
9,963,392
1,245,424
EP2C70
14,319,216
1,789,902
用表2-1的值只是为了在设计之前大致的估计配置文件的大小。
不同的配置文件格式的大小并不一样,但即使是不同款的设计软件,只要目标器件一定的情况下,那么它编译的无压缩配置文件大小是固定的;而压缩过的文件大小在每次编译时都有所改变,这是由设计时的压缩比例来决定。
第三节、配置数据压缩
CycloneII器件支持配置数据的压缩,这能节省配置数据存储的空间以及配置时间。
这个特性使得设计者能够将压缩过的配置数据存储在配置芯片或者其他的存储器(Flash)中,并且传送的也是压缩过的数据流文件。
在配置期间,CycloneII器件实时解压这些数据流并且将其配置到SRAM单元中。
数据压缩能使得配置数据减小35%---55%左右。
需要注意的是,CycloneII器件不支持在JTAG模式下的配置数据流的解压缩,只能在AS及PS模式下进行。
尽管压缩算法一样,但CycloneII器件与增强配置器件(EPC4、EPC8、EPC16)的解压缩特性却不一样,在增强配置器件中存储的压缩数据在传送给CycloneII器件之前就进行解压缩了。
在PS模式下,为了减少配置时间,用户可以使用CycloneII器件的解压特性而发送压缩过的配置数据进行器件配置。
需要注意的是在使用增强配置器件的时候,用户不能同时使用CycloneII和增强配置器件的解压特性。
当然也可以在AS模式下,使用CycloneII器件的解压特性进行配置,但这个时候用户存放配置数据的是串行配置器件(EPCS1、EPCS4、EPCS16orEPCS64)。
当用户使能了压缩功能,QuartusII软件就会产生压缩过的配置数据文件。
这个压缩文件能够减少数据在配置器件或Flash(这种需要协控制器)中存放的空间,当然也能减少配置过程所花费的时间。
有两种方法能够使能CycloneII器件配置数据的压缩:
一种是在编译之前(在编译设置中),另一种是在编译后(在转换配置文件格式下)。
当用户对多个CycloneII器件进行配置时,配置数据压缩同样也可以针对每个器件进行选择。
在下图3-1中,在配置链路上有两个CycloneII器件,如果第一个CycloneIIFPGA使用了压缩使能,那么它会从配置器件中接收到压缩过的配置数据;而第二个CycloneIIFPGA没有使用数据压缩,那么它将接收到非压缩的配置数据流文件。
图3-1压缩或不压缩配置数据的配置
第四节、AS模式:
在AS配置模式下,要使用串行配置器件来配置CycloneII系列FPGA,这些配置器件是低成本、非易失性设备,只有4个信号接口,这些优良特性使其成为理想的低成本配置解决方案。
这种器件使用串行接口来传送串行数据。
在配置时,CycloneII系列FPGA通过串行接口读取配置数据或经过压缩的数据来配置内部的逻辑单元。
这种由FPGA来控制外部器件的配置方式就是主动串行模式(Activeserial),而有外部设备(如PC机,或其他设备)控制FPGA进行配置的方式称为被动串行模式(Passiveserial)。
表4-1列出了AS配置模式时,MESL的管脚状态。
配置模式
MSEL1
MSEL0
AS(20MHz)
0
0
FastAS(40MHz)
1
0
1、AS模式下配置一个CycloneII系列FPGA:
串行配置器件具有4个I/O接口:
串行时钟输入(DCLK)、串行数据输出(DATA)、AS数据输入(ASDI)和片选信号(nCS)。
这四个信号与CycloneII系列FPGA相连的示意图如下图4-1所示:
图4-1AS模式下单芯片配置示意图
注意:
1、Vcc为3.3V;2、CycloneII器件使用ASD0信号控制串行配置控制器;
3、此信号可以不连接,或用于通用I/O口;
在CycloneII器件上电重起时,将nSTATUS和CONF_DONE信号拉低,将所有I/O口设置为高阻态(大概100ms)。
重起后,CycloneII器件释放nSTATUS,使得外部10K的上拉电阻将nSTATUS信号拉高,从而进入配置模式。
此时所有I/O口仍然持续高阻态。
整个配置过程包括:
重起(reset)、配置(configuration)以及初始化(initialization)阶段。
(1)、重起阶段
当nCONFIG或nSTATUS为低电平的时候,器件(FPGA)处于重起状态。
重起之后,CycloneII器件释放nSTATUS,外部10K上拉电阻将其拉高,此时器件进入配置状态。
(2)、配置阶段
由CycloneII器件内部产生的串行时钟(DCLK)用来控制整个配置过程,CycloneII器件内部可以产生DCLK信号时钟,使用MESL管脚可以选择时钟频率为20MHz或40MHz。
40MHz的频率可以使得配置所花费时间更短。
由于温度、电压等因素的影响,内部产生的DCLK的频率并不固定,见下表5-2所示。
表4-2DCLK的频率
内部频率选择
最小
典型
最大
单位
40MHz
20
26
40
MHz
20MHz
10
13
20
MHz
在AS和FastAS模式下,串行配置器件在DCLK的上升沿锁定输入和控制信号,在DCLK的下降沿输出配置数据。
而CycloneII器件在DCLK的下降沿输出控制信号,也在下降沿锁定输入的配置数据。
在配置时,CycloneII器件通过nCSO信号(此信号连接串行配置器的nCS)选中串行配置器件。
之后CycloneII器件通过串行时钟信号(DCLK)及串行地址信号(ASDO)来发送控制命令和地址信号;串行配置器件使用DATA信号发送配置数据到CycloneII器件的DATAO接口。
在CycloneII器件接收到所有的配置数据后,就会释放CONF_DONE,使得外部连接的10K上拉电阻将其拉高。
当然,此时CycloneII器件停止对DCLK信号的控制。
一旦CONF_DONE信号进入高电平的时候,那么就进入初始化状态。
这样也就是说一定要在CONF_DONE信号上接入10K的上拉电阻。
所有的AS配置信号(DATAO、DCLK、nCSO、ASDO)在FPGA内部都有一个一直工作的微弱的上拉电阻。
因此,在配置之后,这些信号都被拉高。
(3)、初始化阶段
在CycloneII器件中,初始化时钟信号即可以是芯片内部产生(与DCLK不一样)也可以使用可选的CLKUSR管脚。
内部时钟是默认的初始化时钟信号,这有利于CycloneII器件进行更合理的初始化过程,也避免用户给FPGA的CLKUSR管脚提供额外的时钟信号。
此时你可以将CLKUSR用作通用I/O接口。
如果用户想要延迟初始化,则可以使用CLKUSR管脚。
使用CLKUSR使得用户可以控制芯片何时进入用户状态。
当用户使能了UserSuppliedStart-upClock选项,则CLKUSR就是初始化的时钟信号。
这并不影响配置过程。
在接收到所有的配置数据并且CONF_DONE被拉高后,CycloneII器件需要299个时钟周期才能完成初始化进程。
CLKUSR的最高频率为100MHz。
CycloneII器件用INIT_DONE信号的由低到高的转变,来表明结束了初始化进程而进入到用户模式下。
EnableINIT_DONEoutput选项被选中的时候INIT_DONE信号才有效。
(有必要说明此选项在何处进行设置)。
如果使用此信号,则要将此信号线上接入10K的上拉电阻,目的是在配置一开始且nCONFIG为低时将此信号拉高。
一旦使用此信号的标志位(在配置数据的第一帧中)进入FPGA器件后,INIT_DONE信号进入低电平。
此信号由低到高的转变则标志了器件进入了用户模式状态。
如果用户没有使用此信号,初始化过程的结束是在CONF_DONE信号变高后再经过299个时钟周期(此时使用了CLKUSR)或是在CONF_DONE变高后经Tcf2um(此时使用的是内部的时钟)。
(4)、用户阶段
当初始化过程结束后,FPGA进入用户模式状态。
在用户模式下,用户I/O口上并不再使用内部微弱的上拉电阻,而是由用户的设计来决定。
当器件在用户模式下,用户可以将nCONFIG信号置低,来进行重新配置。
此信号置低的时间最少要保持40us。
当此信号为低时,CycloneII器件重起,进入重起阶段。
CycloneII器件也将nSTATUS和CONF_DONE拉低且所有I/O口为三态。
一旦nCONFIG和nSTATUS进入高电平后,则进入重配置状态。
(5)、配置过程中出错
如果在配置过程中出现错误,CycloneII器件将nSTATUS信号拉低来表明数据帧的错误,此时CONF_DONE信号仍为低。
如果用户在软件中使能了Auto-Restartconfigurationaftererror选项,CycloneII器件将通过cCSO信号将串行配置器件重新设置,且在重起时间之后(40us)释放nSTATUS,从而进行重配置工作。
如果Auto-Restartconfigurationaftererror没有开启,则外部系统必须监控nSTATUS上的状态。
一旦出现错误,则将nCONFIG信号拉低至少40us以便重新配置器件。
2、AS模式下多器件配置
用户可以使用一个串行配置器件来配置多个FPGA器件,可以使用芯片使能(nCE)及芯片使能输出(nCEO)信号级联多个FPGA芯片。
将第一个FPGA的nCE接地,将输出(nCEO)接到下一个芯片的输入上(nCE),且在后面的nCE信号上使用外部10K的上拉电阻。
当第一个器件获得配置数据后,就会将将nCEO拉低,从而对下个器件进行配置。
最后一个器件的nCEO可以悬空也可以用作通用I/O口。
在链路中的第一个CycloneII器件是配置控制者,它负责整个链路上的配置。
对第一个CycloneII器件选用AS模式来进行配置,而其他的器件使用PS模式。
由于所有其他的Altera的器件都支持PS配置模式,所以也可以将其他器件连接到此链路中。
在多器件链路中,每个器件的nCONFIG、nSTATUS、CONF_DONE、DCLK和DATAO信号都连在一起,如下图5-2所示:
图4-2AS模式下多器件的配置电路
说明:
Vcc为3.3伏;此电压为nCEO所在的Bank区的Vccio电压;nCEO可浮空或用于普通I/O;
如上图所示,连路中所有器件的nCONFIG、CONF_DONE都连接在一起,并在外部接入了10K的上拉电阻。
在第一个器件接收到所有的配置数据后,将它的nCEO信号置低,并且释放CONF_DONE信号,但后面的设备在接收到配置数据之前仍然保持CONF_DONE信号为低。
当所有的设备都得到它们的配置数据后且释放CONF_DONE后,外部的上拉电阻将此信号拉高,从而使得链路中所有设备同时进入初始化状态。
第五节、PS模式:
用户可以使用PS配置模式对CycloneII器件进行配置。
在此模式下,由外部控制器(如PC机、MaxII系列CPLD或其它嵌入式系统)控制整个配置过程。
配置数据在DCLK的上升沿由DATAO输入到CycloneII器件的内部。
(在PS模式下,可以使用CycloneII器件的解压缩特性)在PS模式下MSEL=01;
1、使用MAXII器件对单CycloneII器件的配置
在PS模式下,可以使用MAXII器件作为外部控制器,将配置数据从外部存储器(Flash)传送到CycloneII器件。
配置数据的存储格式可以是RBF、HEX、TTF等。
图5-1为MAXII器件与CycloneII器件连接的示意图。
图5-1用外部控制器控制的配置模式示意图
说明:
Vcc=3.3V;nCEO可浮空或用作普通I/O
系统加电后,CycloneII器件经过大约100ms的重起阶段,nSTATUS被拉低,所有用户I/O为高阻态。
整个配置过程由:
重起阶段、配置阶段和初始化阶段组成。
(1)、重起阶段:
在此阶段CycloneII器件的nCONFIG和nSTATUS被拉低,MAXII必须将nCONFIG由低拉高才能结束重起而进入到配置阶段。
当nCONFIG由低变为高时,CycloneII器件退出重起阶段,将nSTATUS信号释放,使得外部的10K上拉电阻将其拉高。
使得CycloneII器件进入配置阶段而准备接收配置数据。
MAXII能决定器件何时开始配置。
(2)、配置阶段:
在CycloneII器件的nSTATUS变为高电平后,MAXII器件通过DATAO管脚发送配置数据。
如果使用配置数据的格式为RBF、HEX或TTF类型,则先从每个字节的最低位开始发送。
例如:
你要发送的数据为021BEE01FA,那么最先传送的数据流为:
0100-00001101-10000111-01111000-00000101-1111。
CycloneII器件通过DATAO管脚接收数据,使用DCLK管脚接收时钟信号。
数据在DCLK的上升沿存入FPGA,直到CONF_DONF变高之前,数据被连续的存入到目标器件。
在CycloneII器件成功的接收到所有的配置数据之后,就会释放CONF_DONE,使得外部的10K上拉电阻将其拉高。
CONF_DONE信号由低到高的转变则说明器件结束了配置阶段而进入到初始化阶段。
(3)、初始化阶段:
在CycloneII器件中,初始化时钟信号即可以是芯片内部产生(与DCLK不一样)也可以使用可选的CLKUSR管脚。
内部时钟是默认的初始化时钟信号,这有利于CycloneII器件进行更合理的初始化过程,也避免用户给FPGA的CLKUSR管脚提供额外的时钟信号。
此时你可以将CLKUSR用作通用I/O接口。
如果用户想要延迟初始化,则可以使用CLKUSR管脚。
使用CLKUSR使得用户可以控制芯片何时进入用户状态。
当用户使能了UserSuppliedStart-upClock选项,则CLKUSR就是初始化的时钟信号。
这并不影响配置过程。
在接收到所有的配置数据并且CONF_DONE被拉高后,CycloneII器件需要299个时钟周期才能完成初始化进程。
CLKUSR的最高频率为100MHz。
CycloneII器件用INIT_DONE信号的由低到高的转变,来表明结束了初始化进程而进入到用户
模式下。
EnableINIT_DONEoutput选项被选中的时候INIT_DONE信号才有效。
(有必要说明此选项在何处进行设置)。
如果使用此信号,则要将此信号线上接入10K的上拉电阻,目的是在配置一开始且nCONFIG为低时将此信号拉高。
一旦使用此信号的标志位(在配置数据的第一帧中)进入FPGA器件后,INIT_DONE信号进入低电平。
此信号由低到高的转变则标志了器件进入了用户模式状态。
如果用户没有使用此信号,初始化过程的结束是在CONF_DONE信号变高后再经过299个时钟周期(此时使用了CLKUSR)或是在CONF_DONE变高后经Tcf2um(此时使用的是内部的时钟)。
(4)用户使用阶段:
初始化完成之后,CycloneII器件进入到用户使用阶段。
在此阶段,用户I/O口上不再有微弱的上拉电阻,各个IO口如何连接,决定于用户的设置。
确保在配置结束后DCLK和DATAO没有浮空,MAXII器件必须将它们拉高或拉低。
在配置完成后,CycloneII器件的DATAO管脚不能用于用户I/O口使用。
当器件在用户模式下,用户可以将nCONFIG信号置低,来进行重新配置。
此信号置低的时间最少要保持40us。
当此信号为低时,CycloneII器件重起,进入重起阶段。
CycloneII器件也将nSTATUS和CONF_DONE拉低且所有I/O口为三态。
一旦nCONFIG和nSTATUS进入高电平后,则进入重配置状态。
(5)配置过程发生错误
如果在配置过程中发生错误,CycloneII器件将nSTATUS信号拉低使得MAXII器件得知出现错误。
如果用户在软件中使能了Auto-Restartconfigurationaftererror选项,CycloneII器件在经过一个重起时间(大约40us)释放nSTATUS信号,使得外部的10K上拉电阻将其拉高。
这时MAXII器件在不给nCONFIG低电平脉冲(重起用)的情况下重新进行配置。
如果没有选中Auto-Restartconfigurationaftererror选项,MAXII器件必须产生一个低脉冲(40us)给nCONFIG,使得CycloneII器件进行重起。
MAXII器件同时也监测CONF_DONE和INIT_DONE这两个信号来确保配置成功。
MAXII器件必须监测CycloneII的CONF_DONE信号,来探测错误和获知配置结束。
如果所有的配置数据都已经发送,但CONF_DONE或INIT_DONE都没有变高,那么MAXII器件就重新配置目标器件。
2、使用MAXII器件对多CycloneII器件的配置
用MAXII器件对多CycloneII器件的配置与对单CycloneII器件的配置很相似,不一样的是级联了多个CycloneII器件。
如下图5-2所示:
图5-2PS模式下MAXII器件对多CycloneII器件的配置
说明:
Vcc=3.3V;Vcc连接到nCEO所在的Bank区I/O电压。
在多器件PS模式下,将第一个CycloneII器件的nCE接到Gnd,将nCEO接到下一个器件的nCE上。
在外部使用10K的上拉电阻将nCEO拉高。
在第一个器件配置完成后,会将它的nCEO拉低,使得下一个FPGA的nCE使能,让下一个FPGA在不到一个时钟周期内进入配置状态。
因此,MAXII器件在不中断的情况下将配置数据传送给下一个FPGA。
可以使最后一个nCEO管脚浮空或用于通用I/O口。
用户必须将CycloneII器件的nCONFIG、nSTATUS、DCLK、DATAO和COBF_DONE这些信号分别连接在一起。
配置信号上可能需要Buffer来保持信号的完整性和防止时钟倾斜。
每经过三个器件就要对DCLK和DATA这两个信号进行缓冲,这是因为所有器件的CONF_DONE都联在一起,所有器件初始化和进入用户使用状态是在同一时刻。
因为所有器件上的nSTATUS和CONF_DONE都是连接在一起的,所以在任意一个CycloneII器件上出现配置错误,都会使得整个链路上的配置停止而进入重配置状态。
如果用户在软件中使能了Auto-Restartconfigurationaftererror选项,CycloneII器件
在经过一个重起时间(大约40us)释放nSTATUS信号,使得外部的10K上拉电阻将其拉高。
这时MAXII器件在不给nCONFIG低电平脉冲(重起用)的情况下重新进行配置。
如果没有选中Auto-Restartconfigurationaftererror选项,MAXII器件必须产生一个低脉冲(40us)给nCONFIG,使得CycloneII器件进行重起。
如果在你的系统中使用的是同一种型号的CycloneII系列FPGA(大小、速度等级、封装),并且它们的配置数据相同。
那么用户将这些芯片的nCE连接到Gnd,且其他的配置信号分别连接在一起,就可以像配置一个器件一样来配置这些器件(节省配置时间)。
这种情况下,nCEO管脚就可以用作通用I/O口来使用。
为了保证信号的完整性以及防止时钟信号倾斜,要在DATA和DCLK链路上加入Buzzer(每4个器件需要加入一组)。
所有器件开始配置和完成配置的时间是一致的。
图5-3给出了PS模式下所