热门搜索 :
考研考公
您的当前位置:首页正文

Cyclone_II系列FPGA配置

2023-09-01 来源:华涂网


杨宁

1041121665

Cyclone II系列FPGA配置

杨宁 1041121665

摘要:

由于 Cyclone II 系列器件是用易失性的 SRAM 结构单元来存储配置数据的,所以在每次系统上电时都要进行重配置。用户可以使用 DCLK 频率高达 40MHz 的 AS(主动串行)模式、PS(被动串行)模式或是 JTAG 对 FPGA 器件进行配置操作。另外,为了减小存储需求和配置时间,Cyclone II 系列器件能够使用压缩数据进行配置。

本文的目的是让用户了解 Cyclone II 器件的配置特点,让用户掌握如何使用 Cyclone II 器件所支持的配置方式对此系列 FPGA 进行配置。同时,也会介绍配置管脚的使用及配置文件的格式等相关信息。

关键词:Cyclone II; FPGA; 配置 第一节、Cyclone II器件配置概述:

用户可以使用 AS、PS 和 JTAG 模式配置 Cyclone II 系列 FPGA。选择何种配置方式取决于 MSEL管脚的电平状态,请参照表 1-1。

表1-1 Cyclone II 配置模式

配置模式 AS(20MHz) PS Fast AS(40MHz) JTAG MSEL1 0 0 1 * MSEL0 0 1 0 * 描述 使用串行配置器件(EPCS1、EPCS4、EPCS16 或EPCS64) 使用增强配置器件(EPC1、EPC2、EPC4、EPC8或EPC16)或者是微机加上电缆 同 AS 模式 下载电缆和微机(外部控制器) 第二节、配置文件格式

表2-1 列出了几个 Cyclone II 系列器件的没有压缩过的配置文件的大小(近似值)。如果要计算多器件配置时的配置数据的存储空间,可以将相应的值相加。

表2-1 Cyclone II 系列器件的.rbf文件大小(Raw Binary File) 器件 EP2C5 EP2C8 数据大小(Bits) 1,265,792 1,983,536 数据大小(Bytes) 152,998 247,974 EP2C20 EP2C35 EP2C50 EP2C70 3,892,496 6,858,656 9,963,392 14,319,216 486,526 857,332 1,245,424 1,789,902 用表 2-1 的值只是为了在设计之前大致的估计配置文件的大小。不同的配置文件格式的大小并不一样,但即使是不同款的设计软件,只要目标器件一定的情况下,那么它编译的无压缩配置文件大小是固定的;而压缩过的文件大小在每次编译时都有所改变,这是由设计时的压缩比例来决定。

第三节、配置数据压缩

Cyclone II 器件支持配置数据的压缩,这能节省配置数据存储的空间以及配置时间。这个特性使得设计者能够将压缩过的配置数据存储在配置芯片或者其他的存储器 (Flash)中,并且传送的也是压缩过的数据流文件。在配置期间,Cyclone II 器件实时解压这些数据流并且将其配置到SRAM 单元中。数据压缩能使得配置数据减小 35%---55%左右。

需要注意的是,Cyclone II 器件不支持在 JTAG 模式下的配置数据流的解压缩,只能在 AS 及PS 模式下进行。尽管压缩算法一样,但 Cyclone II 器件与增强配置器件(EPC4、EPC8、EPC16)的解压缩特性却不一样,在增强配置器件中存储的压缩数据在传送给 Cyclone II 器件之前就进行解压缩了。

在 PS 模式下,为了减少配置时间,用户可以使用 Cyclone II 器件的解压特性而发送压缩过的配置数据进行器件配置。需要注意的是在使用增强配置器件的时候,用户不能同时使用 Cyclone II和增强配置器件的解压特性。

当然也可以在 AS 模式下,使用 Cyclone II 器件的解压特性进行配置,但这个时候用户存放配置数据的是串行配置器件(EPCS1、EPCS4、EPCS16 or EPCS64)。

当用户使能了压缩功能,Quartus II 软件就会产生压缩过的配置数据文件。这个压缩文件能够减少数据在配置器件或 Flash(这种需要协控制器)中存放的空间,当然也能减少配置过程所花费的时间。

有两种方法能够使能 Cyclone II 器件配置数据的压缩:一种是在编译之前(在编译设置中),另一种是在编译后(在转换配置文件格式下)。

当用户对多个 Cyclone II 器件进行配置时,配置数据压缩同样也可以针对每个器件进行选择。在下图 3-1 中,在配置链路上有两个 Cyclone II 器件,如果第一个 Cyclone II FPGA 使用了压缩使能,那么它会从配置器件中接收到压缩过的配置数据;而第二个 Cyclone II FPGA 没有使用数据压缩,那么它将接收到非压缩的配置数据流文件。

图 3-1 压缩或不压缩配置数据的配置

第四节、AS 模式:

在AS配置模式下,要使用串行配置器件来配置 Cyclone II 系列FPGA,这些配置器件是低成本、非易失性设备,只有 4 个信号接口,这些优良特性使其成为理想的低成本配置解决方案。

这种器件使用串行接口来传送串行数据。在配置时,Cyclone II 系列 FPGA 通过串行接口读取配置数据或经过压缩的数据来配置内部的逻辑单元。这种由 FPGA 来控制外部器件的配置方式就是主动串行模式(Active serial),而有外部设备(如 PC 机,或其他设备)控制 FPGA 进行配置的方式称为被动串行模式(Passive serial)。

表 4-1 列出了 AS 配置模式时,MESL 的管脚状态。 配置模式 MSEL1 MSEL0 AS(20MHz) 0 0 Fast AS(40MHz) 1 0 1、AS模式下配置一个Cyclone II 系列FPGA: 串行配置器件具有 4 个 I/O 接口:串行时钟输入(DCLK)、串行数据输出(DATA)、AS 数据输入(ASDI)和片选信号(nCS)。这四个信号与 Cyclone II 系列 FPGA 相连的示意图如下图 4-1 所示:

图 4-1 AS 模式下单芯片配置示意图

注意:1、Vcc 为 3.3V;2、CycloneII器件使用ASD0信号控制串行配置控制器;

3、此信号可以不连接,或用于通用 I/O 口;

在 Cyclone II 器件上电重起时,将 nSTATUS 和 CONF_DONE 信号拉低,将所有 I/O 口设置为高阻态(大概 100ms)。重起后,Cyclone II 器件释放 nSTATUS,使得外部 10K 的上拉电阻将 nSTATUS信号拉高,从而进入配置模式。此时所有 I/O 口仍然持续高阻态。

整个配置过程包括:重起(reset)、配置(configu ration)以及初始化(initializa tion)阶段。

(1)、重起阶段

当 nCONFIG 或 nSTATUS 为低电平的时候,器件(FPGA)处于重起状态。重起之后,Cyclone II器件释放 nSTATUS,外部 10K 上拉电阻将其拉高,此时器件进入配置状态。

(2)、配置阶段

由 Cyclone II 器件内部产生的串行时钟(DCLK)用来控制整个配置过程,Cyclone II 器件内部可以产生 DCLK 信号时钟,使用 MESL 管脚可以选择时钟频率为 20MHz 或 40MHz。40MHz 的频率可以使得配置所花费时间更短。由于温度、电压等因素的影响,内部产生的 DCLK 的频率并不固定,见下表 5-2 所示。

表4-2 DCLK的频率 内部频率选择 最小 典型 最大 单位 40MHz 20 26 40 MHz 20MHz 10 13 20 MHz 在 AS 和 Fast AS 模式下,串行配置器件在 DCLK 的上升沿锁定输入和控制信号,在 DCLK 的下降沿输出配置数据。而 Cyclone II 器件在 DCLK 的下降沿输出控制信号,也在下降沿锁定输入的配置数据。

在配置时,Cyclone II 器件通过 nCSO 信号(此信号连接串行配置器的 nCS)

选中串行配置器件。之后 Cyclone II 器件通过串行时钟信号(DCLK)及串行地址信号(ASDO)来发送控制命令和地址信号;串行配置器件使用 DATA 信号发送配置数据到 Cyclone II 器件的 DATAO 接口。

在 Cyclone II 器件接收到所有的配置数据后,就会释放 CONF_DONE,使得外部连接的 10K 上拉电阻将其拉高。当然,此时 Cyclone II 器件停止对 DCLK 信号的控制。一旦 CONF_DONE 信号进入高电平的时候,那么就进入初始化状态。这样也就是说一定要在 CONF_DONE 信号上接入 10K 的上拉电阻。所有的 AS 配置信号(DATAO、DCLK、nCSO、ASDO)在 FPGA 内部都有一个一直工作的微弱的上拉电阻。因此,在配置之后,这些信号都被拉高。 (3)、初始化阶段

在 Cyclone II 器件中,初始化时钟信号即可以是芯片内部产生(与 DCLK 不一样)也可以使用可选的 CLKUSR 管脚。内部时钟是默认的初始化时钟信号,这有利于 Cyclone II 器件进行更合理的初始化过程,也避免用户给 FPGA 的 CLKUSR 管脚提供额外的时钟信号。此时你可以将 CLKUSR 用作通用 I/O 接口。

如果用户想要延迟初始化,则可以使用 CLKUSR 管脚。使用 CLKUSR 使得用户可以控制芯片何时进入用户状态。当用户使能了 U ser Supplied Start-up Clock 选项,则 CLKUSR 就是初始化的时钟信号。这并不影响配置过程。在接收到所有的配置数据并且 CONF_DONE 被拉高后,Cyclone II 器件需要 299 个时钟周期才能完成初始化进程。CLKUSR 的最高频率为 100MHz。

Cyclone II 器件用 INIT_DONE 信号的由低到高的转变,来表明结束了初始化进程而进入到用户模式下。E nable I NIT_DONE output 选项被选中的时候 INIT_DONE 信号才有效。(有必要说明此选项在何处进行设置)。如果使用此信号,则要将此信号线上接入 10K 的上拉电阻,目的是在配置一开始且 nCONFIG 为低时将此信号拉高。一旦使用此信号的标志位(在配置数据的第一帧中)进入 FPGA器件后,INIT_DONE 信号进入低电平。此信号由低到高的转变则标志了器件进入了用户模式状态。如果用户没有使用此信号,初始化过程的结束是在 CONF_DONE 信号变高后再经过 299 个时钟周期(此时使用了 CLKUSR)或是在 CONF_DONE 变高后经 Tcf2um(此时使用的是内部的时钟)。 (4)、用户阶段

当初始化过程结束后,FPGA 进入用户模式状态。在用户模式下,用户 I/O 口上并不再使用内部微弱的上拉电阻,而是由用户的设计来决定。

当器件在用户模式下,用户可以将 nCONFIG 信号置低,来进行重新配置。此信号置低的时间最少要保持 40us。当此信号为低时,Cyclone II 器件重起,进入重起阶段。Cyclone II 器件也将 nSTATUS和 CONF_DONE 拉低且所有 I/O 口为三态。一旦 nCONFIG 和 nSTATUS 进入高电平后,则进入重配置状态。

(5)、配置过程中出错

如果在配置过程中出现错误,Cyclone II 器件将 nSTATUS 信号拉低来表明数据帧的错误,此时CONF_DONE 信号仍为低。如果用户在软件中使能了 Auto-Re start configuration aft er error 选项,Cyclone II 器件将通过 cCSO 信号将串行配置器件重新设置,且在重起时间之后(40us)释放 nSTATUS,从而进行重配置工作。如果 Auto- Restart configuration after error 没有开启,则外部系统

必须监控 nSTATUS 上的状态。一旦出现错误,则将 nCONFIG 信号拉低至少 40us 以便重新配置器件。

2、AS模式下多器件配置

用户可以使用一个串行配置器件来配置多个 FPGA 器件,可以使用芯片使能(nCE)及芯片使能输出(nCEO)信号级联多个 FPGA 芯片。将第一个 FPGA 的 nCE 接地,将输出(nCEO)接到下一个芯片的输入上(nCE),且在后面的 nCE 信号上使用外部 10K 的上拉电阻。当第一个器件获得配置数据后,就会将将 nCEO 拉低,从而对下个器件进行配置。最后一个器件的 nCEO 可以悬空也可以用作通用 I/O口。

在链路中的第一个 Cyclone II 器件是配置控制者,它负责整个链路上的配置。对第一个 Cyclone II 器件选用 AS 模式来进行配置,而其他的器件使用 PS 模式。由于所有其他的 Altera 的器件都支持 PS 配置模式,所以也可以将其他器件连接到此链路中。在多器件链路中,每个器件的 nCONFIG、nSTATUS、CONF_DONE、DCLK 和 DATAO 信号都连在一起,如下图 5-2 所示:

图 4-2 AS 模式下多器件的配置电路

说明:Vcc为3.3伏;此电压为nCEO所在的Bank区的Vccio电压;nCEO可浮空或用于普通I/O;

如上图所示,连路中所有器件的 nCONFIG、CONF_DONE 都连接在一起,并在外部接入了 10K 的上拉电阻。在第一个器件接收到所有的配置数据后,将它的 nCEO 信号置低,并且释放 CONF_DONE信号,但后面的设备在接收到配置数据之前仍然保持 CONF_DONE 信号为低。当所有的设备都得到它们的配置数据后且释放 CONF_DONE 后,外部的上拉电阻将此信号拉高,从而使得链路中所有设备同时进入初始化状态。

第五节、PS 模式:

用户可以使用 PS配置模式对 Cyclone II 器件进行配置。在此模式下,由外部控制器(如 PC机、Max II 系列CPLD或其它嵌入式系统)控制整个配置过程。配置数据在 DCLK 的上升沿由 DATAO输入到 Cyclone II 器件的内部。(在

PS 模式下,可以使用 Cyclone II 器件的解压缩特性)在 PS模式下 MSEL=01; 1、 使用MAX II器件对单Cyclone II器件的配置

在 PS 模式下,可以使用 MAX II 器件作为外部控制器,将配置数据从外部存储器(Flash)传送到 Cyclone II 器件。配置数据的存储格式可以是 RBF、HEX、TTF 等。图 5-1 为 MAX II 器件与 Cyclone II 器件连接的示意图。

图 5-1 用外部控制器控制的配置模式示意图

说明:Vcc=3.3V;nCEO可浮空或用作普通I/O

系统加电后,Cyclone II 器件经过大约 100ms 的重起阶段,nSTATUS 被拉低,所有用户 I/O 为高阻态。

整个配置过程由:重起阶段、配置阶段和初 始化阶段组成。 (1)、重起阶段:

在此阶段 Cyclone II 器件的 nCONFIG 和 nSTATUS 被拉低,MAX II 必须将 nCONFIG 由低拉高才能结束重起而进入到配置阶段。

当 nCONFIG 由低变为高时,Cyclone II 器件退出重起阶段,将 nSTATUS 信号释放,使得外部的10K 上拉电阻将其拉高。使得 Cyclone II 器件进入配置阶段而准备接收配置数据。MAX II 能决定器件何时开始配置。

(2)、配置阶段: 在 Cyclone II 器件的 nSTATUS 变为高电平后,MAX II 器件通过 DATAO 管脚发送配置数据。如果使用配置数据的格式为 RBF、HEX 或 TTF 类型,则先从每个字节的最低位开始发送。例如:你要发送的数据为 02 1B EE 01 FA,那么最先传送的数据流为:0100-0000 1101-1000 0111-0111 1000-0000 0101-1111。

Cyclone II 器件通过 DATAO 管脚接收数据,使用 DCLK 管脚接收时钟信号。数据在 DCLK 的上升沿存入 FPGA,直到 CONF_DONF 变高之前,数据被连续的存入到目标器件。在 Cyclone II 器件成功的接收到所有的配置数据之后,就会释放 CONF_DONE,使得外部的 10K 上拉电阻将其拉高。CONF_DONE信号由低到高的转变则说明器件结束了配置阶段而进入到初始化阶段。

(3)、初始化阶段: 在 Cyclone II 器件中,初始化时钟信号即可以是芯片内部产生(与 DCLK 不一样)也可以使用可选的 CLKUSR 管脚。内部时钟是默认的初始化时钟信号,这有利于 Cyclone II 器件进行更合理的初始化过程,也避免用户给 FPGA 的 CLKUSR 管脚提供额外的时钟信号。此时你可以将 CLKUSR 用作通用 I/O 接口。

如果用户想要延迟初始化,则可以使用 CLKUSR 管脚。使用 CLKUSR 使得用户可以控制芯片何时进入用户状态。当用户使能了 U ser Supplied Start-up Clock 选项,则 CLKUSR 就是初始化的时钟信号。这并不影响配置过程。在接收到所有的配置数据并且 CONF_DONE 被拉高后,Cyclone II 器件需要 299 个时钟周期才能完成初始化进程。CLKUSR 的最高频率为 100MHz。

Cyclone II 器件用 INIT_DONE 信号的由低到高的转变,来表明结束了初始化进程而进入到用户

模式下。E nable I NIT_DONE output 选项被选中的时候 INIT_DONE 信号才有效。(有必要说明此选项在何处进行设置)。如果使用此信号,则要将此信号线上接入 10K 的上拉电阻,目的是在配置一开始且 nCONFIG 为低时将此信号拉高。一旦使用此信号的标志位(在配置数据的第一帧中)进入 FPGA器件后,INIT_DONE 信号进入低电平。此信号由低到高的转变则标志了器件进入了用户模式状态。如果用户没有使用此信号,初始化过程的结束是在 CONF_DONE 信号变高后再经过 299 个时钟周期(此时使用了 CLKUSR)或是在 CONF_DONE 变高后经 Tcf2um(此时使用的是内部的时钟)。

(4)用户使用阶段: 初始化完成之后,Cyclone II 器件进入到用户使用阶段。在此阶段,用户 I/O 口上不再有微弱的上拉电阻,各个 IO 口如何连接,决定于用户的设置。

确保在配置结束后 DCLK 和 DATAO 没有浮空,MAX II 器件必须将它们拉高或拉低。在配置完成后,Cyclone II 器件的 DATAO 管脚不能用于用户 I/O 口使用。

当器件在用户模式下,用户可以将 nCONFIG 信号置低,来进行重新配置。此信号置低的时间最少要保持 40us。当此信号为低时,Cyclone II 器件重起,进入重起阶段。Cyclone II 器件也将 nSTATUS和 CONF_DONE 拉低且所有 I/O 口为三态。一旦 nCONFIG 和 nSTATUS 进入高电平后,则进入重配置状态。

(5)配置过程发生错误

如果在配置过程中发生错误,Cyclone II 器件将 nSTATUS 信号拉低使得 MAX II 器件得知出现错误。如果用户在软件中使能了 Auto-Restart conf iguration after error 选项,Cyclone II 器件在经过一个重起时间(大约 40us)释放 nSTATUS 信号,使得外部的10K上拉电阻将其拉高。这时MAX II 器件在不给nCONFIG 低电平脉冲(重起用)的情况下重新进行 配置。如果没有选中A uto-Restart configuration after err or 选项 ,MAX II 器 件必须产生一个低脉冲(40us)给nCONFIG,使得 Cyclone II器件进行重起。

MAX II 器件同时也监测 CONF_DONE 和 INIT_DONE 这两个信号来确保配置成功。MAX II 器件必须监测 Cyclone II 的 CONF_DONE 信号,来探测错误和获知配置结束。如果所有的配置数据都已经发送,但 CONF_DONE 或 INIT_DONE 都没有变高,那么 MAX II 器件就重新配置目标器件。

2、 使用MAX II器件对多Cyclone II器件的配置

用 MAX II 器件对多 Cyclone II 器件的配置与对单 Cyclone II 器件的配置很相似,不一样的是级联了多个 Cyclone II 器件。如下图5-2 所示:

图 5-2 PS 模式下 MAX II 器件对多 Cyclone II 器件的配置 说明:Vcc=3.3V;Vcc连接到nCEO所在的Bank区I/O电压。

在多器件 PS 模式下,将第一个 Cyclone II 器件的 nCE 接到 Gnd,将 nCEO 接到下一个器件的nCE上。在外部使用10K的上拉电阻将 nCEO 拉高。在第一个器件配置完成后,会将它的 nCEO 拉低,使得下一个FPGA的 nCE 使能,让下一个 FPGA 在不到一个时钟周期内进入配置状态。因此,MAX II器件在不中断的情况下将配置数据传送给下一个 FPGA。可以使最后一个 nCEO 管脚浮空或用于通用I/O 口。

用户必须将 Cyclone II 器件的 nCONFIG、nSTATUS、DCLK、DATAO 和 COBF_DONE 这些信号分别连接在一起。配置信号上可能需要 Buffer 来保持信号的完整性和防止时钟倾斜。每经过三个器件就要对 DCLK 和 DATA 这两个信号进行缓冲,这是因为所有器件的 CONF_DONE 都联在一起,所有器件初始化和进入用户使用状态是在同一时刻。

因为所有器件上的 nSTATUS 和 CONF_DONE 都是连接在一起的,所以在任意一个 Cyclone II 器件上出现配置错误,都会使得整个链路上的配置停止而进入重配置状态。

如果用户在软件中使能了 Auto-Restart conf iguration after error 选项,Cyclone II 器件

在经过一个重起时间(大约40us)释放 nSTATUS 信号,使得外部的 10K 上拉电阻将其拉高。这时MAX II器件在不给 nCONFIG 低电平脉冲(重起用)的情况下重新进行配置。如果没有选中A uto-Restart configuration after err or 选项,MAX II器件必须产生一个低脉冲(40us)给nCONFIG,使得 Cyclone II 器件进行重起。

如果在你的系统中使用的是同一种型号的 Cyclone II 系列 FPGA(大小、速度等级、封装),并且它们的配置数据相同。那么用户将这些芯片的 nCE 连接到 Gnd,且其他的配置信号分别连接在一起,就可以像配置一个器件一样来配置这些器件(节省配置时间)。这种情况下,nCEO 管脚就可以用作通用 I/O 口来使用。为了保证信号的完整性以及防止时钟信号倾斜,要在 DATA 和 DCLK 链路上加入 Buzzer(每 4 个器件需要加入一组)。所有器件开始配置和完成配置的时间是一致的。图 5-3给出了 PS 模式下所有器件同时接受配置数据的示意图:

图5-3 PS 模式下多器件同时接收配置数据示意图

第六节、JTAG配置模式:

联合测试行动组(Joint Test Action Group)为边界扫描( Boundary-scan test)开发了一总测试方案。这种边界扫描(BST)结构使得用户能够测试已经焊接在 PCB上的元件。这种测试方法使得器件在运行的时候不使用外部测试仪器来获取器件内部数据。

JTAG 链路也能够将配置数据传送到器件内部,在 Quartus 软件中,可以通过 JTAG 链路将 Quartus软件自动生成的 SOF 数据传送到器件中进行配置。

Cyclone II 器件的配置被设计成优先使用 JTAG 模式下载,也就是说 JTAG 模式可以打断任何其他的配置模式(例如其它模式正在进行中,而 JTAG 就可以将其强行终止,从而进行 JTAG 模式配置,但在 JTAG 模式下,不能使用 Cyclone II 器件的能解压配置数据的特性)。

在 JTAG 模式下使用 TCK、TDO、TMS 和 TDI 这四个信号来进行器件的配置。在 TCK 管脚上 FPGA内部有微弱的下拉电阻,TCK 和 TDI 上有微弱的上拉电阻。在 JTAG 配置阶段,所有的 I/O 都处于三态。表 7-1 列出了这些管脚的功能。

表6-1 JTAG功能管脚说明 名称 类型 描述 TDI 数据输入 数据在 TCK 时钟的上升沿移入器件;在不使用 JTAG 时要用 1K的上拉电阻将其拉高。此为输入接口。 TDO 数据输出 在 TCK 的下降沿将数据输出;此接口为三态;在不使用 JTAG 时,将此管脚浮空。 TMS 模式选择 输入接口,用于提供控制信号。在不使用 JTAG 时,将此管脚用1K 的上拉电阻拉高。 TCK 时钟输入 时钟输入接口;在不使用 JTAG 时,将此管脚用 1K 下拉电阻拉低。 1. JTAG模式下对单Cyclone II器件的配置 如果使用 JTAG 接口进行下载,那么用户可以使用 MV、BBII 或 USB 下载电缆对 Cyclone II 器件进行配置。使用电缆对器件进行编程与在线编程非常相似。下图 7-1 所示为 JTAG 接口对单个 FPGA器件进行配置的原理图。

图 6-1 使用 JTAG 接口对 Cyclone II 器件配置原理图

说明: 1、Vcc 应为同一种电源,一般是在板上取电;

2、如果只用 JTAG 模式,那么可以将 nCONFIG 接到 Vcc,而 MSEL 信号接到 Gnd;且将DCLK 和 DATAO 接到 Gnd 或 Vcc; 3、在 MV 电缆中此管脚不用,再使用 AS 模式的时候,此脚连接到 nCE 上; 4、nCE 必须接到 Gnd,或者拉低;

5、nCEO 可以浮空,或者用作用户 I/O。 在JTAG模式下对单器件进行配置时,编程软件将设置其它器件为旁路模式。在旁路模式下,Cyclone II 器件使用旁路电阻将数据从 TDI 传送到 TDO 管脚上,这个过程并不影响内部数据的使用。在 JTAG 模式下,配置软件即能对器件进行编程,也能对器件进行调试。在 TDO 上出现一个时钟信号后,配置数据就被传送到目标器件中了。

Quartus II 软件会在配置完成后校验 JTAG 链路配置是否成功。在配置结束时,软件会通过 JTAG链路检测 CONF_DONE 信号。在配置多器件的链路时会,软件会生成 JAM 文件,它包含让所有在同一链路上的器件在同一时刻进入初始化阶段的指令。如果 CONF_DONE 没有变高,软件会认为配置失败;如果 CONF_DONE 变高,则认为配置成功。在配置数据流通过 TDI 接口传送之后,在 TCK 链路上出现299 个时钟周期后,Cyclone II 器件才执行初始化进程。

在使用 Quartus II 软件和下载电缆用 JTAG 接口下载数据时,Enable user-supplied start-up c lock(CLKUSR)选项不起作用。所以不能使用 CLKUSR 来对器件进行初始化工作,也就不用在给 CLKUSR管脚加入时钟信号了。

Cyclone II 器件的 JTAG 管脚只有 JTGA 的作用。在 Cyclone II 器件进行配置之前、之间或之后,用户都可以进行 JTAG 测试。

CONFIG_IO 指令可以通过 JTAG 接口配置 I/O buffers,此指令可以中断配置进程。CONFIG_IO指令能够在配置 Cyclone II 器件之前或是在等待配置器件完成 Cyclone II 器件配置时,执行边界扫描测试。如果用户中断了配置过程,

Cyclone II 器件必须通过 JTGA(给出让 CONFIG 信号拉低的指令)重新配置,或者在 JTAG 测试之后直接将 nSTARUS 拉低。

当用户在使用 JTAG 接口对 Cyclone II 器件进行配置的时候,请按照下表 6-2 对各配置管脚进行设置。

表6-2 JTAG模式下,配置功能管脚的设定 管脚名称 nCE nCEO 描述 在所有的 Cyclone II 系列器件中,nCE 都要通过下拉电阻连接到 Gnd 上,只有在 nCE 连接到 Gnd 的时候,器件才工作 当配置一个 FPGA 器件的时候,可以将此管脚浮空,或用于通用 I/O 口;当配置多个器件的时候,此信号可以作为下一个器件 nCE 的输入,但此时在此信号上必须接入 10K 的上拉电阻 如果只使用 JTAG 的时候,此管脚可以连接到 Gnd 上。 用 10K 的上拉电阻将其拉高。 需要接入 10K 的上拉电阻;当配置多个器件的时候,要将每个器件的此信号都单独接入 10K 的上拉电阻。在配置期间此信号被拉低,则说明配置出错 MSEL nCONFIG nSTASUS 接入 10K 的上拉电阻;当配置多个器件的时候,要将每个器件的此信号都单独接入 10K 的上拉电阻。在配置成功后此信号为高电平。 DCLC 不能浮空,上拉或下拉 下图 6-2 是使用微控制器在 JTAG 模式下配置 Cyclone II 器件的原理图: CONF-DONE

图 6-2 JTAG 模式下使用微控制器(单片机)对 Cyclone II 器件配置 说明: 1、Vcc=3.3V;

2、如果使用了穿行配置器,则将其连接为 10,只用 JTAG 的时候。可以将其连接到 Gnd; 3、nCE 连接到 Gnd;

4、浮空或用作通用 I/O;

2. J TAG模式下对多个Cyclone II器件的配置

可以使用 JTAG 接口对多个 Cyclone II 器件进行下载,当在链路中多于 4 个 Cyclone II 器件时,要在 TCK、TMS 和 TDI 信号链路上加入板上 Buffer。

使用 JTAG 配置器件以及对器件进行边界扫描是比较理想的方式,下图 6-3 给出了JTAG 模式下多器件配置原理图。

图 6-3 JTAG 模式下多器件的配置

说明: 1、Vcc 要使用同一个电源提供

2、可以连接 nCONFIG 和 MSEL 支持另外一种配置的方式。如果只使用 JTAG 方式,将nCONFIG 连接到 Vcc,MSEL 为[00]。DATAO 和 DCLK 不能浮空。

3、如果是 MV 电缆,此管脚有用; 4、nCE 必须连接到 Gnd。

在 JTAG 模式下配置多器件时,要将 nCE 连接到 Gnd;而在 AS 或 PS 模式下配置多器件时,第一个器件的 nCE 直接连接到 Gnd,而上一个器件输出的 nCEO 连接到下一个器件 nCE 的输入上。

3. 用JTAG接口在系统环境下对串行配置器件编程

在一个配置链路中不管是只有单个 Cyclone II 器件,还是有多个 Cyclone II 器件。只要通过JTAG 接口,就可以使用在线编程对串行配置器件(EPCS)进行编程。

串行 Flash(EPCS)控制方式,是基于 JTAG 接口的,对串行配置器件进行在线编程的解决方案。串行 Flash 控制器,是在 FPGA 中使用 JTAG 接口访问控制串行配置器件的连接桥。

在多器件链路中,只用在主控器件中加入串行 Flash 控制器。在这种情况下,主器件的配置模式应为 AS 或 Fast AS。

这种配置方式由三个阶段构成,具体描述如下: 第一阶段:在设计中加入串行 Flash 控制器 Cyclone II 器件通过串行 Flash 控制器可以方便的控制串行配置器件,这样就使得 PC 机能够间接的对串行配置器件进行编程了。

如果在主控器件中加入了串行 Flash 控制器,即使在此链路中的其他器件还没有被配置,主控器件也能够进入到用户使用状态。也就是说此时即使 CONF_DONE 信号仍被其他从器件拉低的,主控芯片也一样会提前进入到用户模式。请参照下图 6-4。

图6-4 带有串行 Flash 控制器的配置方式

说明: 1、Vcc 要使用同一个电源提供

2、可以连接 nCONFIG 和 MSEL 支持另外一种配置的方式。如果只使用 JTAG 方式,将nCONFIG 连接到 Vcc,MSEL 为[00]。DATAO 和 DCLK 不能浮空。

3、如果是 MV 电缆,此管脚有用; 4、nCE 必须连接到 Gnd。

第二阶段:对串行配置器件进行在线编程

在此阶段,可以使用 JTAG 接口,将配置数据通过 Cyclone II 器件中已经配有的串行 Flash 控制器存储到串行配置器件中。

具体的过程是,PC 机先将配置数据传送到 Cyclone II 器件中,然后 Cyclone II 再将配置数据传送到串行配置器件中。

第三阶段:重配置阶段

在所有配置数据成功写入串行配置器件后,Cyclone II 器件不能重新进行重配置。要由外部主机将 nCONFIG 信号上给出重起信号来进行 Cyclone II 器件的重配置过程。

总结:

FPGA主动(Active)方式;

只能够与Altera公司的主动串行配置芯片(EPCS系列)配合使用,因此此配置方式又称为主动串行AS模式。部分器件不支持此模式。 FPGA被动(Passive)方式;

由系统中的其他设备发起并控制配置过程。这些设备可以是Altera的配置芯片(EPC系列),或者是单板上的微处理器,CPLD等智能设备。FPGA在配置过程中完全处于被动地位,只是输出一些状态信号来配合配置过程。

被动方式又可细分为多种模式,包括 被动串行PS(Passive Serial)、快速被动并行FPP(Fast Passive Parallel)、被动并行同步PPS(Passive Parallel Synchronous)、被动并行异步PPA(Passive Parallel Asynchronous),以及被动串行异步PSA(Passive Serial Asynchronous)。

JTAG方式;

IEEE1149.1边界扫描测试的标准接口。大多数Altera FPGA都支持JTAG口进行配置,并支持JAM STAPL标准。从JTAG接口进行配置可以使用Altera的下载电缆,通过QuartusII工具下载也可以采用智能主机(Intelligent Host),如微处理器来模拟JTAG时序进行配置。

参考文献:

1. Cyclone II 系列器件配置手册

2. 关于Cyclone II Device 的几种配置方式

因篇幅问题不能全部显示,请点此查看更多更全内容

Top