AR# 59572

面向 Spartan-3AN FPGA 在系统闪存修改和编程解决方案更新的设计咨询

描述

XCN14003 (http://china.xilinx.com/support/documentation/customer_notices/xcn14003.pdf)是产品修改通知,其包含 Spartan-3AN 器件中的在系统闪存修改。

需要 XC3S50AN-TQ(G)144 的编程解决方案更新才能避免编程失败。

Xilinx ISE iMPACT 编程解决方案兼容于受 XCN14003 影响的所有其它器件。

需要针对所有受 XCN14003 影响的 Spartan-3AN 器件实施第三方编程器算法更新或设置变更。

应评估所有受 XCN14003 影响的 Spartan-3AN 器件的定制编程方案,以确定表3 和表 4 中的变更是否会对它们产生影响。

受影响的器件:

对于大多数 Spartan-3AN 器件来说,最新在系统闪存都后向兼容旧的在系统闪存,属于原始的编程解决方案。 

例外情况包括:

  • XC3S50AN-TQ(G)144 器件:系统内闪存密度的变化。
  • XC3S700AN-FG(G)484 器件:最大擦除时间的变化。
  • 受 XCN14003 影响的所有 Spartan-3AN 器件: 扩展器件信息变化与状态寄存器读取变化。

 

如欲了解有关 Spartan-3AN 器件与在系统闪存修改产生的影响,敬请参见表 1。

表1:Spartan-3AN 器件以及在系统闪存修改对编程解决方案的影响。

Device

封装

XCN14003 的编程解决方案影响XCN14003

其它信息

XC3S50AN

TQ(G)144

需要更新

新的在系统闪存与原始的在系统闪存不同。

需要编程解决方案更新。

查看以下 XC3S50AN-TQ(G)144 变更详情:

XC3S50AN

FT(G)256

不受影响

不受影响 查看 PDN XCN13016  (http://www.xilinx.com/support/documentation/customer_notices/xcn13016.pdf).

XC3S200AN

FT(G)256

对少部分应用产生潜在影响。

对于大多数应用而言,新的在系统闪存都能后向兼容旧的在系统闪存,属于原始的编程解决方案。查看扩展器件信息变更详情,了解扩展器件信息字节的数量差别。
查看以下状态寄存器读取变化细节部分,了解持续读取状态寄存器字节时状态寄存器字节的差异。

XC3S400AN

FT(G)256

FG(G)400

对少部分应用产生潜在影响。
对于大多数应用而言,新的在系统闪存都能后向兼容旧的在系统闪存,属于原始的编程解决方案。查看扩展器件信息变更详情,了解扩展器件信息字节的数量差别。
查看以下状态寄存器读取变化细节部分,了解持续读取状态寄存器字节时状态寄存器字节的差异。

XC3S700AN

FG(G)484

对少部分应用产生潜在影响。
对于大多数应用而言,新的在系统闪存都能后向兼容旧的在系统闪存,属于原始的编程解决方案。  敬请参阅“XC3S700AN-FG(G)484 FPGA 设计和编程解决方案检查清单”章节,以评估新旧在系统闪存间的差异所带来的影响。查看扩展器件信息变更详情,了解扩展器件信息字节的数量差别。
查看以下状态寄存器读取变化细节部分,了解持续读取状态寄存器字节时状态寄存器字节的差异。

XC3S1400AN

FG(G)484

不受影响

不受影响查看 PDN XCN13016  (http://www.xilinx.com/support/documentation/customer_notices/xcn13016.pdf).

XC3S1400AN

FG(G)676

对少部分应用产生潜在影响。
对于大多数应用而言,新的在系统闪存都能后向兼容旧的在系统闪存,属于原始的编程解决方案。查看扩展器件信息变更详情,了解扩展器件信息字节的数量差别。
查看以下状态寄存器读取变化细节部分,了解持续读取状态寄存器字节时状态寄存器字节的差异。

XC3S50AN-TQ(G)144 变更详情:

XC3S50AN-TQ(G)144 在系统闪存从 1Mb 密度更改为 2Mb 密度。

Xilinx 工具与编程解决方案仅支持对前 1Mb 进行编程与数据文件生成,以保持同时与新器件和原始器件都兼容。

新的在系统闪存支持与原始在系统闪存相同的命令,而且具有相同的页面大小。因此,新的在系统闪存兼容原始在系统闪存前 1Mb 内存阵列的操作和函数。 

但是,新的在系统闪存存在表 2 所示的几项差异,其有可能导致原始编程解决方案或 FPGA 设计无法识别在系统闪存。 

敬请参阅表 2 了解显著的差异,并使用以下检查清单确认受相关差异影响的应用。

表 2:XC3S50AN-TQ(G)144 的在系统闪存修改

在系统闪存命令

旧的在系统闪存属性

新的在系统闪存属性

Description

N/A

Density=1 Mb(1)

Density=2 Mb(1)

在系统闪存密度不同。

9Fh 信息读取

Byte #2 = 22h

Byte #2 = 23h

在系统闪存器件 ID/密度代码(信息读取命令的 3 字节值中的第二个字节)不同。

D7h – 状态寄存器读取

或 57h(早期代码)

Byte #1, bits[5:2] =0011b

Byte #1, bits[5:2] =0101b

byte #1, bits [5:2]中的在系统闪存状态寄存器密度代码不同
也请查看以下状态寄存器读取变化细节部分,了解持续读取状态寄存器字节时状态寄存器字节的差异。

注:

该表中的术语 Mb* 指的是不同位数,具体取决于器件是按每页 256 个字节还是按每页 264 个字节设置的。对于按每页 256 个字节设置的器件,表中的 Mb* 是指 1,048,576 (2^20) 位。对于按每页 264 个字节设置的器件,Mb* 是指 1,081,344 位。Mb* 的定义适用于本文档全部内容。

 

XC3S50AN-TQ(G)144 编程解决方案算法更新 – 需要:

在系统闪存的修改需要更新全部编程解决方案。 敬请参见以下可用的编程解决方案更新列表。

大多数编程解决方案都会检查器件 ID。这种器件 ID 检查可能会导致编程解决方案无法使用新的 XC3S50AN-TQ(G)144 器件。

 

 XC3S50AN-TQ(G)144 FPGA 设计与编程解决方案的检查清单

设计检查

  • 检查相关 FPGA 设计是否使用 SPI_ACCESS 原语存取在系统闪存。
    如果相关设计采用 SPI_ACCESS 原语,则检查其是否发送上述表 2 所列的任何命令,以确定是否需要修改设计。

- 编程解决方案检查:

  • 检查 ISE iMPACT 的编程使用情况。需要一个补丁。否则,不兼容的 iMPACT 版本可能无法编程,并且报告以下错误消息:
    INFO:iMPACT –找不到 SPI 器件。
  • 检查器件编程的制造流程。器件编程器需要更新算法。
  • 查看开发板自动化测试或边界扫描测试流程以了解在系统器件编程。  必须使用带补丁的 iMPACT 重新生成 SVF/STAPL 文件。
  • 检查在系统编程或远程更新实现。必须使用带补丁的 iMPACT 重新生成 SVF/XSVF/STAPL 文件。
  •  

    其它信息:

    XC3S50AN-TQ(G)144 FPGA JTAG IDCODE 对于原始 XC3S50AN-TQ(G)144 器件和最新 XCN14003 XC3S50AN-TQ(G)144 器件都是一样的。

    没有区分原始 XC3S50AN-TQ(G)144 器件和最新 XCN14003 XC3S50AN-TQ(G)144 器件的顶标。

    只有内部闪存器件 ID 或密度代码才能区别原始 XC3S50AN-TQ(G)144 器件和最新 XCN14003 XC3S50AN-TQ(G)144 器件。

     

    参考:

    XC3S50AN-TQ(G)144 在系统闪存的详细信息可在 UG333 中找到。

 


 

XC3S700AN-FG(G)484 修改详细信息:

在 XC3S700AN-FG(G)484 的 XCN14003 修订版中,允许的最长 page erase 时间 (TPE, max) 和允许的最长 buffer to page program with built-in erase 时间 (TPEP, max) 有所增加。查看表 3,如下

表 3:XC3S700AN-FG(G)484 的在系统闪存修改

符号 在系统闪存命令说明 旧的
最长时间
新的
最长时间
TPE 81h Page Erase 或
0x3D + 0x2A + 0x7F + 0xCF Sector Protection Register Erase
35 ms, Max 50 ms, Max
TPEP 83h Buffer (1) to Page Program with Built-in Erase 或
86h Buffer (2) to Page Program with Built-in Erase
35 ms, Max 55 ms, Max


注:上述命令的典型时间对于新旧修订版的 XC3S700AN-FG(G)484 器件很相似,但比旧的最长时间要短得多(12 到 15 毫秒)。 

通常,只有在页面接近其额定的耐擦写级别 (ISF_PAGE_CYCLES),即每个擦写周期 100,000 个程序之后,这些命令的时间才接近指定的最长时间。

因此,最长时间的这一增加不影响 XC3S700AN-FG(G)484 内部闪存的大多数应用。

扩展器件信息变化详情

系统内闪存为 Information Read (0x9F) 命令返回几个字节的器件标识信息。

返回的第四个字节规定了可选的附加扩展器件信息 (EDI) 字节的数量。 

表 4 中列出了 EDI 字节的差异。  

UG333 中的“扩展器件信息段”部分给出了有关这些差异的更多具体内容,该信息适用于所有受 XCN14003 影响的 Spartan-3AN 器件。

  

表4:Information Read 命令的扩展器件信息段

系统内闪存修订 第四个字节:EDI 字符串长度(十六进制) 第五个字节值(十六进制)
旧 X-FAB ISF EDI 0x00 不适用
全新 UMC ISF EDI 0x01 0x00


状态寄存器读取变化细节
 
老 X-FAB ISF 中的状态寄存器为 1 个字节的寄存器。  查看表 5。
新 UMC ISF 中的状态寄存器为 2 个字节的寄存器。  查看表 6。
 
在 ISF 收到一个状态寄存器读取 (0xD7) 指令后,ISF 会输出状态寄存器字节 1(表 5)。

如果 ISF 收到更多 CSB 保持为低的 CLK 周期,则老 X-FAB ISF 再次输出一个更新了状态寄存器的字节 1。

不过对于初始状态寄存器字节 1 后面的更多 CLK 周期而言,新 UMC ISF 会发出状态寄存器字节 2(表 6),随后它会重复状态寄存器字节 1 和 2 的更新输出。

此后,ISF 会相应重复其状态寄存器字节的输出。
 
:所有状态寄存器字节的 Bit 7 一直都是 READY/BUSY# 状态。
 
对于新旧 ISF 之间的兼容性而言,在重复轮询更新状态时,应用会执行以下工作之一:
 
  • 对于状态检查的每个实例来说,要使用新的 CSB 高至低边缘重新启动状态读取,发出一个新的状态寄存器读取命令,并只读取字节 1。
     
  • 如果只对 READY/BUSY# 状态感兴趣,可使用 CSB 高至低边缘启动状态读取,发出状态寄存器读取命令,并持续读取 ISF 的状态字节,但只检查 Bit 7 READY/BUSY# 状态(同时忽略每个状态字节的所有其它位)。
 
表 5 — 状态寄存器格式,字节 1
 
Bit
7
6
5 4 3 2
1
0
名称
READY/BUSY#
COMPARE
ISF MEMORY SIZE
SECTOR PROTECT
PAGE SIZE
Description
0 = Busy
1 = Ready
0 = Matches
1 = Different
0011 = 1 Mbit: XC3S50AN (X-FAB ISF)
0101 = 2 Mbit: XC3S50AN (UMC ISF)
0111 = 4 Mbit: XC3S200AN or XC3S400AN
1001 = 8 Mbit: XC3S700AN
1011 = 16 Mbit: XC3S1400AN
0 = Open
1 = Protected
0 = Extended
(Default)
1 = Power-of-2

表 6 — 状态寄存器格式,字节 2
 
Bit
7
6
5
4
3
2
1
0
名称
READY/BUSY#
RESERVED
ERASE or
PROGRAM
ERROR
RESERVED
SECTOR LOCKDOWN
ENABLED
PROGRAM
SUSPEND
BUFFER 2
PROGRAM
SUSPEND
BUFFER 1
ERASE
SUSPEND
Description
0 = Busy
1 = Ready
0
0 = Successful
1 = Error
0
0 = Sector lockdown disabled
1 = Sector lockdown enabled
0 = Not suspended
1 = Suspended
0 = Not suspended
1 = Suspended
0 = Not suspended
1 = Suspended
 




 定制 Spartan-3AN FPGA 设计和编程解决方案的检查清单

ISE iMPACT 工具及其生成的文件不受影响。ISE iMPACT 工具不使用表 3 中的命令或表 4 中的 EDI 字节。

器件编程器不受影响。器件编程器不使用表 3 中的命令,但可能检查表 4 中所列的字节。

从第三方编程器厂商处获取算法更新,或在算法更新等待期间关闭 id 代码检查。

自定义编程实现检查:

 

  • 检查相关 FPGA 设计是否使用 SPI_ACCESS 原语存取在系统闪存。
    如果设计使用 SPI_ACCESS 原语,请检查该设计是否发送上表 3 中所列的任何命令或检查表4中列出的字节以确定该设计是否受到影响。
    如果设计受到影响,应考虑对设计进行修改,以便为表 3 中的命令提供更长的最大时间,或者忽略表 4 中显示的 EDI 字节。
    如果受表3影响,且应用的编程/擦写预期达到其额定的耐擦写级别 (ISF_PAGE_CYCLES),即每个擦写周期 100,000 个程序,则应当考虑增加最大时间。

  • 对于自定义编程实现方案(而非 ISE iMPACT 工具、BPM 微系统编程器或 Elnec 编程器),请检查编程实现方案是否使用上表 3 中所列的任何命令或表4中列出的字节,以确定该编程实现方案是否受到影响。
    如果编程实现方案受到影响,应考虑对编程实现方案进行修改,以便为表 3 中的命令提供更长的最大时间,或者忽略表 4 中显示的 EDI 字节。.
    如果受表3影响,且编程实现的编程/擦写预期达到其额定的耐擦写级别 (ISF_PAGE_CYCLES),即每个擦写周期 100,000 个程序,则应当考虑增加最大时间。

  • 对于定制编程实现方案(不是 ISE iMPACT 工具、不是 BPM Microsystems 编程器、也不是 Elnec 编程器),请检查编程实现方案能否在发出状态寄存器读取 (0xD7) 命令后持续读取字节。
    查看(以上)状态寄存器读取变化细节部分,了解应用与老 X-FAB 及新 UMC ISF 的兼容性。


 

 

解决方案

 

编程解决方案更新:

第三方编程算法更新:

 
    • BPM Microsystems 编程算法更新:
      • XC3S50AN-TQ(G)144 需要更新。Version: 1.1. 查看 http://www.bpmmicro.com/
      • 对于其它 Spartan-3AN 器件,可从 BPM Microsystems 获得编程器算法更新,或在获得可用的算法更新之前关闭 id 代码检查。
       
    • XC3S50AN-TQ(G)144需要Elnec 编程器算法更新。版本: 3.04s/04.2014 (或之后版本)。 查看http://www.elnec.com/sw/pg4uwarc-ondemand.exe
面向 XC3S50AN-TQ(G)144 器件的ISE iMPACT 设计/实验室工具补丁

为 ISE iMPACT 设计/实验室工具提供 spi.acd 补丁。 不过,spi.acd 补丁适用于新的 XCN14003 XC3S50AN-TQ(G)144 器件。

注:
如欲了解有关同时兼容原始 XC3S50AN-TQ(G)144 器件与最新 XCN14003 器件的可编程解决方案,敬请参见下面的替代 ISE iMPACT设计/实验室工具解决方案。

 

 

ISE iMPACT设计/实验室工具补丁由两部分组成:

 

全新 spi.acd 文件

 

使用流程建议

 
 
仅适用于最新 XCN14003 XC3S50AN-TQ(G)144 器件的 ISE iMPACT 14.7 补丁文件: spi.acd 

此补丁文件适用于 ISE iMPACT V12.2 至 V14.7。

补丁安装建议:

 

1.创建补丁目录。

 

例如,如果您的 Xilinx ISE 设计工具的安装位于
C:\Xilinx\14.7\ISE_DS\ISE
,而 Xilinx环境变量设为
C:\Xilinx\14.7\ISE_DS\ISE
,则创建C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch\data 目录路径并且把 psi.acd 补丁文件复制到此目录,从而使 spi.acd 补丁文件位于
C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch\data\spi.acd。

 

2. 设置以下环境变量:  set MYXILINX=C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch 


 

检查正确的补丁安装--您应确定:

 

1. 补丁文件位于: C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch\data\spi.acd 

 

2. 这些环境变量设置:   

 

MYXILINX=C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch   

 

XILINX=C:\Xilinx\14.7\ISE_DS\ISE (或在不同于默认安装路径的情况下:   ISE 安装路径)  

 


注: 切勿删除原始 spi.acd 文件。

 

原始 XC3S50AN-TQ(G)144 器件的编程需要原始 spi.acd 文件。 

 

原始 spi.acd 文件应当仍然位于您的 ISE 安装数据目录,即: C:\Xilinx\14.7\ISE_DS\ISE\data\spi.acd

推荐 iMPACT 补丁使用: 

需要通过定义或省略可支持全新 XCN14003 器件或原始器件编程的 MYXILINX 环境变量来启用或禁用该补丁。 

 

在可以编程原始 XC3S50AN-TQ(G)144 器件或最新 XCN14003 XC3S50AN-TQ(G)144 器件的iMPACT 工具会话之间切换的方法之一如下:

 

1.打开窗口命令提示符;

 

2.清除 MYXILINX 环境变量(如:设置 MYXILINX=);

 

3.运行 impact.exe;

 

4.然后按照标准 iMPACT 程序进行 XC3S50AN-TQ(G)144 器件编程。 

 

5. 如果 iMPACT 编程失败并且报告以下信息,则继续执行第 6 步,因为 iMPACT 未识别最新在系统闪存的器件 ID:

 

INFO:iMPACT - 未找到 SPI 器件 

 

6. 关闭 impact.exe 

 

7. 把 MYXILINX 环境变量设定指向补丁的基本位置(上述补丁安装说明所示),如:设置MYXILINX=C:\Xilinx\14.7\ISE_DS\ISE_XCN14003_patch;

 

8. 运行 impact.exe

 

9. 然后按照标准 iMPACT 程序进行 XC3S50AN-TQ(G)144 器件编程。


XC3S50AN-TQ(G)144 器件的替代 ISE iMPACT 设计/实验室工具解决方案:  
 
提供同时兼容原始器件与最新 XCN140003 器件的替代 ISE iMPACT 设计/实验室工具与 JTAG 电缆编程解决方案。 
 
替代解决方案的 iMPACT 建议使用方法:  
 
以下建议替代 iMPACT 工具解决方案流程可以同时支持原始器件与最新 XCN14003 器件编程:
  1. 在您的板上生成用于目标 XC3S50AN-TQ(G)144 器件编程的 SVF。
  2. 采用(以下)iMPACT SVF 文件更新解决方案修改 SVF,以便兼容原始与最新 XCN14003 器件。
  3. 通过 iMPACT 工具执行修改后的 SVF 文件,通过与板上器件相连的 JTAG 电缆对器件进行编程。
 

本替代解决方案不需要上述 iMPACT spi.acd 补丁。    
 
用于 XC3S50AN-TQ(G)144 器件的ISE iMPACT SVF/STAPL/ACE/XSVF 文件更新
 
 

编程 XC3S50AN-TQ(G)144 器件的 SVF、STAPL、XSVF 或 ACE 文件需要修改。

 

提供 Perl 脚本用于修改 SVF 或 STAPL 文件:xc3s50an_svf_stapl_fix_for_xcn14003.pl。

 

Perl 脚本接受 SVF 或 STAPL 文件输入,然后输出文件的修改版本。修改后的版本同时兼容原始的 XC3S50AN-TQ(G)144 器件与最新 XCN14003 器件。Perl 脚本便于删除 SVF 或 STAPL 文件中的在系统闪存密度代码校验。

 

 

 

Perl 脚本使用方法:

 
  1. 获取原始 SVF 或 STAPL 编程文件,或者采用 iMPACT 生成一个新的 SVF 文件,以便把您的 .bit 文件编入 XC3S50AN-TQ(G)144 器件。
  2. 如下所示运行 Perl 脚本,提供输入文件:
 
   perl $0 <inputfile> [<outputfile>]
     or for Xilinx perl users
   xilperl $0 <inputfile> [<outputfile>]
 where\n";                                                               inputfile = Name of input .SVF or .STAPL file.
   outputfile = [Optional] Name of output file.                    
   If not outputfile specified, then uses original root file name
   and adds _xcn14003 to the file name,    
   e.g. original.svf --> original_xcn14003.svf
 

XSVF 或 ACE 文件的附加操作说明:

 

采用 XSVF 或 ACE 文件的编程解决方案必须首先采用上述 Perl 脚本修改 SVF 文件。然后必须采用 SVF2XSVF 或 SVF2ACE 转换工具把修改后的 SVF 转换成 XSVF 或 ACE。 

 

这些工具已经内置到 iMPACT 工具,可以通过“svf2xsvf”或“svf2ace”作为 iMPACT 批处理命令运行。另外,通过分别与 XAPP058 XAPP424关联的文件提供 SVF2XSVF 或 SVF2ACE 转换工具的单机版。

 
Vivado 设计工具:
 
 
注: Vivado 设计工具不支持 Spartan-3AN 系列。
 

附件

文件名 文件大小 File Type
xcn14003_iMPACT_patch.zip 10 KB ZIP
xc3s50an_svf_stapl_fix_for_xcn14003.zip 2 KB ZIP

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
50921 有关 Spartan-3 FPGA 设计咨询的主要答复记录 N/A N/A
AR# 59572
日期 03/31/2015
状态 Active
Type 设计咨询
器件
Tools