AR# 940

JTAG - 如何利用边界扫描配置 XC4000/XC5200/Spartan 系列

描述

紧急程度:高

 

General Description:

除了 X 系列外,可以通过边界扫描引脚 TUMS、TACK、TD 和 TD 配置 X、Spartan 和 X 器件。 该解决方案适用于 X(包括 X)、Spartan 和 X 器件。

 

注意:该答复记录的内容是通过 JTAG TAP 配置X/X/Spartan FAGAN。 本答复记录的信息可取代其它任何有关 FPGA JTAG 配置方面的文档。

解决方案

A 部分

 

您可以使用 Xilinx Alliance 1.5 JTAG Programmer 软件对 JTAG 链内的 XC4000、XC5200 和 Spartan 器件进行编程。 敬请参考 A1.5 JTAG Programmer 用户指南了解更多信息。

 

B 部分

注意:要理解该解决方案的 B 部分,您必须首先了解 JTAG/边界扫描。 该解决方案适用于 XC4000 系列和 XC5200 系列器件。

 

配置 - 通过 JTAG 配置 Xilinx XC4000 或 XC5200 所需遵循的步骤:

 

所有配置模式的比特流格式都相同。您可以使用".bit" 文件或 ".rbt" 文件,具体取决于您想要读取的是二进制文件 (.bit) 还是 ascii 文件 (.rbt)。 通过边界扫描进行配置时不能使用 Express 模式的比特流。

 

此外,Xilinx 还建议在开始配置之前将器件的模式引脚置为低电平。

 

1. 开启边界扫描电路。

 

这可采用三种方法实现:1 上电;2 使用启用边界扫描的配置器件;3 将 /PROGRAM 引脚拉为低电平。

 

如果您想采用上电法,那么只需在电源开启时将 INIT 引脚保持为低电平。一旦 VCC 达到 VCC(min),TAP 就可以切换到输入 JTAG 指令。将 INIT 引脚保持低电平的方法有两种,即手动或下拉电阻法。 如果您选择手动维持 INIT 低电平,那么 INIT 引脚必须保持低电平直到 CONFIGURE 指令成为当前指令为止。如果选择下拉电阻法,那么需要将 INIT 引脚电平下拉至大约 0.5V。 下拉法的优势在于:无论 FPGA 何时上电都可以使 INIT 处于低电平,而且能够让用户在配置过程中看到变低的 INIT 引脚。

 

在 FPGA 配置完成后,您如果需要对已经配置过并且在配置后已启用边界扫描功能的器件进行重新配置, 那么只需要开始切换边界扫描 TAP 引脚。

 

2. 将 Xilinx 配置指令载入 IR。 Xilinx 配置指令为 101(I2 I1 I0)。I0 是第一个移入 IR 的位。

 

3. 在移入 Xilinx CONFIGURE 指令后,需要通过 update-IR 状态让 CONFIGURE 指令成为当前的 JTAG 指令。当 TCK 在 update-IR 状态下进入低电平,FPGA 此时处于 JTAG 配置模式并开始清空配置存储器;CONFIGURE 指令现在成为当前指令,接下来必须出现 TCK 的上升沿。 如果您选择手动维持 INIT 引脚低电平,那么 INIT 引脚必须保持低电平直到 CONFIGURE 指令成为当前指令为止。

 

4. 一旦 Xilinx CONFIGURE 指令成为当前指令,就必须进入 run-test/idle 状态,并保持该状态直到 FPGA 清空配置存储器为止。

 

清空 FPGA 配置存储器所用的时间大约是:2 * 1 us *(单位器件数据流的帧数量)。

 

当 FPGA 清空配置存储器时,集电极开路 INIT 已进入高阻抗。此时,用户应推进至 shift-dr 状态。一旦 TAP 处于 shift-dr 状态,并且 INIT 引脚被释放,那么 TCK 引脚上的时钟将被作为用于进行数据和长度计数的配置时钟。

 

5. 在 shift-DR 状态下,开始在比特流中进行移位。继续比特流移位,直到 DONE 进入高电平并且启动操作步骤结束为止。

 

在通过 TAP 进行比特流移位的过程中,配置引脚 LDC、HDC、INIT、PROGRAM、DOUT 和 DONE 的工作状态均与未进行 JTAG 配置时的工作状态相同。用户可以探测这些引脚,或者是在配置结束或配置失败后,利用 SAMPLE/PRELOAD 指令查看这些 IOB(除了 PROGRAM 或 DONE)。

 

配置过程中 LDC 处于低电平。配置过程中 HDC 处于高电平。配置过程中 INIT 将处于高阻抗状态,但是如果检测到 CRC 差错或帧差错,INIT 将进入低电平状态。如果 INIT 存在下拉电阻,那么必须用仪表或示波器检测 INIT 引脚。当下拉电阻(如步骤 1 所述)连接到 INIT 引脚时,如果发生数据错误并引起 INIT 降为低电平,那么您会看到电压从大约 0.5V 降至 OV。 PROGRAM 仍可用于退出配置过程。DOUT 和 TDO 将回应 TDI,直到前同步码和长度数值移入 TDI 为止。 当前同步码和长度数值移入 FPGA 后,DOUT 将维持高电平。配置结束后 DONE 将处于高电平状态。 在配置结束之前,DONE 将维持低电平。

 

一些其它注意事项:

 

a. 可以在一个 JTAG 链中配置若干个 4K 和/或 5K 器件。与非 JTAG 菊花链配置不同,这里不一定应要将所有比特流合并成单个比特流。像在 JTAG 链中对 Xilinx 器件进行 JTAG 配置这种情况,所有器件(除了正在进行配置的器件)都必须置于旁路 (BYPASS) 模式。处于 CONFIGURE 中的器件将会把比特流下载到器件中。这个器件在配置完成后将被置入 BYPASS 状态,同时另一个器件将从 BYPASS 状态进入 CONFIGURE 状态。

 

b. 如果您正在配置一个“较长”的 JTAG 器件的菊花链(TDI 连接到前一个器件的 TDO),那么可能需要对带有 CONFIGURE 指令的器件进行比特流修改。例如,假设您采用如下的器件菊花链结构:

 

器件1---器件2-----器件3

 

器件1的 TDO 引脚连接到器件2 的 TDI 引脚。 器件2 的 TDO 引脚连接到器件3 的 TDO 引脚。 该器件链的配置方法是让一个器件处于 CONFIGURE 状态,另外两个处于 BYPASS 状态。

 

进一步假设器件 1 和器件 2 以这种方式进行配置,但器件 3 从不配置。具体来说就是器件 3 的 DONE 引脚从不会置于高电平。这会存在比特流长度计数的问题。问题的原因除了比特流受损坏外,还可能是由于在加载完成之前就已经达到了用户或软件计算出的最终长度计数值。

 

解决方案有两个。一种解决方案是持续为 TCK 计时(大概 15 秒),直到 DONE 变为高电平为止。另一种解决方案是修改比特流。增加器件链长度,增加值为当前配置器件前面的器件总数。以上面的测试为例,需要将长度值增加 2。 (在通过边界扫描进行配置的器件菊花链中,处于 BYPASS 状态的器件将提供比特流头部所需的额外 1's)。

 

c. 一般来说对于 XC4000 和 XC5200 器件而言,如果通过 JTAG 配置器件,那么在执行任何其它 JTAG 指令之前必须先完成器件配置操作。 一旦启动边界扫描配置,配置操作就必须完成。

 

d. 如果正在进行配置的设计中不含边界扫描,那么应确保释放 I/O 是启动顺序中的最后一步。

 

如果不含边界扫描、FPGA 已经过配置并且 I/O 在启动顺序完成之前被释放,那么 FPGA 将不会响应输入信号,同时输出也不会有任何响应。

 

e. 在清空配置存储器后重新发送边界扫描 CONFIGURE 指令将会取消配置指令。

 

在清空配置存储器后重新发送 CONFIGURE 指令的正确方法是:先发送另外一个边界扫描指令,然后紧跟着一个 CONFIGURE 指令。

 

f. 如果通过边界扫描进行配置失败,那么只有两个可用的边界扫描指令:sample/preload 和 bypass。如果尝试进行另一个重配置,那么 PROGRAM 引脚必须拉至低电平,或者给 FPGA 重新上电。

 

g. 当 CONFIGURE 指令成为当前指令时,直到 /INIT 引脚进入高阻抗并且 TAP 处于 shift-dr 状态后,TCK 引脚上的时钟才能作为配置时钟使用。

 

h. 如果您希望配置一个器件链,那么建议您只在全边界扫描模式下进行配置,或者使用非边界扫描配置模式。当配置一条器件菊花链时,可以将部分进行边界扫描配置,部分进行非边界扫描配置。在混合模式下配置不一定能提供连续的边界扫描链,这对于特定的用户应用来说可能是个问题,也可能不是。

 

i. 当用边界扫描配置 Xilinx FPGA 器件链时,不需要将所有比特流都合并成单个比特流,而在非边界扫描配置菊花链中需要这样做。当 FPGA 处于边界扫描模式,使用的配置电路就是非边界扫描配置所使用的电路。因此,如果您愿意,可以使用 Prom Formatter 或 makeprom/promgen 将所有比特流都合并成单个比特流。 如果您希望将所有比特流合并成单个比特流,那么需要依照上面的注意事项 (a) 进行配置。此外, 您还需要将所有 /INIT 引脚连接在一起。所有 DONE 引脚也需要连接在一起。

 

j. n 位 指令需要 n-1 个 TCK 才能加载到 n 位 IR 寄存器。在 IEEE 1149.1 tap 实现方案中,无论何时 TAP 处于 shift-IR/shift-DR 状态或者退出 shift-IR/shift-DR 状态,IR/DR 中都会发生移位。根据这种行为特点,在 n 位指令中的移位需要 n-1 个 TCK。在采用可通过 JTAG 进行配置的 Xilinx FPGA 中,您只需要在 shift-IR 状态保持 2 个 TCK,即可完成 3 位 CONFIGURE 指令的移位。

 

注意:菊花链配置的目的是让所有器件或者都采用边界扫描配置,或者都采用非边界扫描配置。

AR# 940
日期 10/10/2013
状态 Archive
Type 综合文章
器件