UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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 设计咨询
器件
  • Spartan-3AN
Tools
  • ISE Design Suite - 14.7
的页面