找回密码
 注册
关于网站域名变更的通知
查看: 353|回复: 1
打印 上一主题 下一主题

系统断电时FPGA数据保护方法

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-5-30 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    系统断电时FPGA数据保护方法
    ! N( b; {, i) W* x; C' T

    # K2 k9 w) D' [( R# c. H. Q7 c! \) K4 b. \/ c
    从消费电子设备到工业控制设备,越来越多的系统都在使用FPGA。这些应用通常需要设备在断电时存储一些数据,比如校准信息、用户设置、辨认标签等。如果设备使用了微处理器,则还需要存储微处理器的代码。
    ' b) v& L% z9 M8 l
    ) c: Q  X8 p% o5 l: }- J, W! U5 \- p2 |3 m
    对于那些对成本、器件数量以及电路板尺寸不敏感的系统,可采用标准的闪存来存储这些数据。但在许多情况下,成本、器件数量和电路板尺寸等方面的限制导致系统不得不采用双用器件。无论采用单片非易失存储器,还是采用引导用的SRAM器件,FPGA总是具有与它们相联系的非易失存储器。一个显然的问题是,这些非易失存储器是否能在系统关闭时存储数据。- l+ m3 m3 S! t9 l8 v+ u

    3 l7 F% E* i0 s8 T& d9 d& I) F" w7 e( {) {$ W
    在选择采用哪种方法之前,应考虑应用的要求。这些问题包括: 是否需要进行读/写操作,或者是否接受只读操作;存储的数据有多大;写周期的数量。最后,必须复查与读和写操作相关的特性、时序等。
    . o' F" N3 C; M, [0 H" L
    1 E# j: \1 T7 r1 v+ p+ _! w/ U% F$ s( M5 I0 g; e5 N1 n. \  x1 p
    1.初始化块RAM( }% }, M- x* e* s
    7 y; e* H9 d7 F% P! i
    大多数FPGA允许其内置的块RAM在引导器件时被初始化。这是一个很好的方法,它提供了较大容量的ROM,可用于存储查找表或程序代码。ROM支持高速随机读取操作,能很容易地对FPGA配置进行再次编程。如果设计需要小容量的ROM,这个方法也不可忽视。
    7 D/ n+ w% }( V8 v2 z9 M. Z. b8 u
    2. SPI重使用3 Y4 ~6 R+ U+ B9 }& v- T/ d
    ' d, `4 ^1 R+ s9 K0 ]
    现在所有的SRAM FPGA都允许用SPI存储器来进行配置。因为SPI存储器的附加位很便宜,不会占用电路板的面积,使用SPI存储器的附加空间来存储数据是合理的。在FPGA用其进行配置之后(尽管是各式各样的,设计者使用这个方法前要进行确认),构建SPI接口只需少量逻辑。使用SPI存储器时,要小心避免写到FPGA配置空间中。通过接口逻辑的设计可将其封锁,或者使用在许多SPI Flash存储器中可找到的扇区锁定方法 。
    $ T0 X. c7 x5 l' }; L2 q" ^; y- \- h- n6 C) P4 H' `/ i
    在许多应用中SPI器件允许随机读。用FPGA的存储器块,通过高速缓冲存储当前区技术可实现较高的性能。由于写操作首先要求擦除这个区域,高速缓冲存储方法具有更大的灵活性。利用SPI存储器,擦除/编程周期在正常情况下超过100K。这个规范包括正常的运作期间要若干个上电和断电周期。然而,如果存储器写的次数超过这个数值,则可再次使用存储器高速缓冲方法,防止系统到达SPI的极限。
    5 r" a+ S) V3 g4 E4 e1 Q1 @+ q' J8 }0 b7 m
    3.非易失FPGA TAG存储器/ x/ [( H8 R9 V$ n5 T) j: J" z( G
    . K4 n4 }0 |3 X# h% P1 c* P6 _9 s
    现在许多非易失FPGA集成了小的TAG存储器。例如,LatticeXP2提供 0.6~3.4kb的存储器用于此目的。这通常是存储设备设置和校准数据所要求的存储器容量。如图1(b)所示,可以通过JTAG接口或片内逻辑访问LatticeXP2 TAG存储器。在LatticeXP2 FPGA中,对这个存储器的读和写是定序的,支持的写周期超过1K。为简化存储器接口,并使存储器写周期次数最小,可再次利用高速缓冲存储数据技术的优点。TAG存储器与FPGA配置是分开的,因此在这些操作期间,不会写到FPGA的配置中。对集成小的、串行EEPROM而言,片上TAG存储器非常理想。5 i8 ?3 b/ ?8 s% ]" e
    6 l& _9 B) u% ?8 Q/ c

    0 J/ O3 g8 c" H; y2 d: S* ~- H
    $ ^; f4 z& u8 {  d
    图1:(a) 用LatticeECP2 FPGA再次使用SPI配置;(b) LatticeXP2 TAG存储器。
    8 L7 J2 c& T& U9 F  u/ U
    点击查看大图
    . N6 s- U* N, ]8 M" N
    * ?( a; ]3 ?( Y  V$ m: t, }: l) F7 U+ }" B% m8 G! }
    4.闪存影子块RAM# g" `  X7 e2 q* t
    ) O: S1 L4 I/ X/ n  ]7 u: O
    LatticeXP2还提供使用闪存初始化位的功能。配置时,闪存初始化位初始化器件中的每个块RAM。这些存储器可以读和写,就像SRAM一样。当FPGA内必须存储配置数据时,则切换适当的信号使当前的RAM值转入闪存(图2)。这个方法能够对与非易失闪存组合在一起的RAM进行高速读和写 。在LatticeXP2器件中,这个操作支持数千个擦除和写周期。如同TAG存储器,与块RAM在一起的闪存在逻辑上是分开的,这样就能确保FPGA逻辑配置不会意外地被改写。1 {1 W* p$ j( i# |' |$ `
    ' Y; q" h) s. S; z0 _
    6 n+ d. v2 S( B* N1 W, ]: I

    : I  K2 s# _) u图2 :LatticeXP2闪存影子SRAM操作示意图。

    % H" O" ]7 N7 Z. z# H+ ?. i以上四种方法,每一种方法有其应用优势。如果设计工程师希望采用中等容量的ROM来存储代码或者用作查找表,那么初始化块RAM的方法也许最佳。如果需要存储少量的数据,例如校准信息、当前设置信息或者系统辨别信息,那么TAG存储器方案更方便一些。对于需要再次写入的较大容量的存储器,重使用SPI存储器,或者闪存影子块RAM方法是有用的。当然,无论采用哪种方法,都可以降低电路板的面积和成本。- s" b3 ~1 v: W- e$ K1 y
    . G0 I9 s% h4 ?0 q+ {

    $ L$ n+ U. w+ J% [
    3 g, o0 U' U: j1 b% L. x( p! a

    该用户从未签到

    2#
    发表于 2019-5-30 18:03 | 只看该作者
    最近正在找这方面的资料 谢谢楼主分享
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-13 10:24 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表