现在密钥应该已经保存在一个可编程存储区。编程是通过器件的JTAG端口进行。应该注意到,用密钥对位流加了密,现在只能通过加密的位流对FPGA进行配置。用sysCONFIG接口或JTAG接口可以对莱迪思的FPGA进行编程。该sysCONFIG接口可以让用户使用集中配置模式,或Flash SPI ,或以并行的方式使用并行配置模式重新输入数据。符合IEEE 1149.1和IEEE 1532标准的JTAG端口允许以突发位流(或快速编程)模式、或用1532模式对数据进行编程。JTAG端口用来对器件中的AES 128位密钥编程。不需要用特别的模式来保存FPGA中的128位密钥。
在莱迪思的FPGA中使用一个编码位流可以防止器件的配置被重新读取,但需要一些措施来确保配置能够正确地运作。位流未加密时,FPGA执行CRC操作。如果程序不正确,DONE信号保持在0,INITN变为0 。用户仍然可以访问JTAG Usercode寄存器。对FPGA的位流译码时,它存储位流用户码,用来存放FPGA应用程序的版本号。
图4:加密位流的数据路径。
图4展示了加密位流的数据路径。当数据进入FPGA时,解码器读引导程序,前面所有的数据被忽略。即使解码器检测到加密的文件,如果FPGA的密钥未被编程,数据则被阻止,DONE信号保持在'0 ' (表示配置失败) 。如果密钥已被编程,FPGA检查引导程序,指出后面所有的数据应通过解码器。然后FPGA检查标准引导程序,得知数据是否已被压缩。如果数据没有被压缩,则将它直接发送到解码单元。如果数据已压缩,就先把它送到解压缩引擎,然后再送到解码单元。一旦通过CRC校验,即对SRAM进行编程。DONE位被激活时,解压缩和译码擎不工作,允许其它JTAG链元件接收配置数据。
莱迪思的经济型ECP2/M FPGA拥有位流加密功能,内置闪存的非易失LatticeXP2 FPGA也有此功能。LatticeXP2 FPGA把SRAM映射合并入同一块芯片,设计和含有位流配置的Flash映射都在此芯片上工作。当设计师重点关注电路板的面积和快速启动时间时,这类器件特别有用。
内置闪存的FPGA
非易失FPGA提供额外的Flash保护安全功能,可以防止内存因意外或未经授权的操作被擦除或重新编程。Flash保护功能采用64位密钥。
对器件进行删除或重新编程时, ispVM System会核查Flash是否被保护。如果是,就要求用户输入64位密钥,然后ispVM检查这个密钥是否与存储在器件中的密钥一致,如果一致就执行操作。但是,如果丢失了密钥,器件就再也不能被擦除了。
这些安全性措施不仅保护了用户电路板上的设计,而且也防止了试图修改系统功能的盗版行为。这些功能还有助于远程的系统更新。莱迪思FPGA提供这一功能,使用户可以通过对FPGA重复编程来更新他们的系统,而不会中断它与周围元件的联系。此功能被称为TransFR 。
图5:用最短的中断系统时间进行远程更新。
FPGA最值得注意的的特点是设计人员很容易对器件进行重构。但是,重构通常意味着系统要中断很长时间。但是,莱迪思开发的TransFR技术将重构的影响降至最低。莱迪思的几个FPGA系列都支持TransFR技术,包括那些含有内置闪存的器件,如MachXO 、LatticeXP和LatticeXP2 ,以及像LatticeECP2 /M那样的SRAM FPGA。
TransFR是一种同时使用基本任务编程和边界扫描单元的技术。基本任务编程修改非易失存储器的内容(内部的或外部的) ,以便使FPGA的SRAM部分继续工作。莱迪思的FPGA拥有可以取样和预加载的边界扫描单元,可以在编程时控制FPGA的I/O。
图6:执行TransFR的4个步骤。
执行TransFR的4个步骤:
1、进行基本任务编程。系统对FPGA的非易失性存储器再编程,但不会中断SRAM的功能。
2、可以锁定I/O的状态,用户可以保持或预先确定I/O的状态。在整个重新配置过程中,I/O的值保持不变,以防止系统被关闭。
3、接着用JTAG命令把新的配置传输至非易失存储器。一完成对SRAM就执行全局复位,以便使该器件处于一个已知的状态。然后释放I/O的状态,并再次锁定PLL。
4、释放输出,内部逻辑停止对I/O的监测。
要使用TransFR,需要用到ispLEVER开发工具和ispVM。
用户通过使用128位AES密钥加密文件和Lattice TransFR技术完成了更新过程,但仍有可能因为系统本身的弱点或违法行为引发系统故障。虽然FPGA的位流是加密的,但是非法操作或传输中的错误都可能损坏它,从而导致FPGA被阻塞,使系统无**确地重启。为了解决这个问题,莱迪思推出了“双引导 ”功能。
双引导配置
在配置存储器中存储两个编程文件。
图7:双引导配置 |