当前位置:首页 > 新闻资讯 > FPGA之家动态 >

如何利用SPI Flash配置Xilinx 7系列FPGA器件

时间:2024-07-27      来源:网络搜集 关于我们 0

引言:本文我们介绍下使用串行SPI Flash配置Xilinx 7系列FPGA的优点以及相应的配置方案实现细节,包括FPGA和SPI Flash

SPI Flash x1/x2配置方案注意:

DONE默认为开路输出,推荐连接外部上拉电阻;INIT_B是双向开路管脚,推荐外部上拉电阻;CCLK信号完整性非常管脚,需要当作高速信号处理;从SPI Flash到FPGA的数据路径应考虑串联电阻,以尽量减少过冲。通过仿真可以确定合适的电阻值;FPGA配置I/O电压必须与SPI Flash I/O电压兼容;VCCBATT用于给SRAM供电,用于保存AES密钥。


 SPI Flash x4配置方案注意:

DONE默认为开路输出,推荐连接外部上拉电阻;INIT_B是双向开路管脚,推荐外部上拉电阻;CCLK信号完整性非常管脚,需要当作高速信号处理;从SPI Flash到FPGA的数据路径应考虑串联电阻,以尽量减少过冲。通过仿真可以确定合适的电阻值;FPGA配置I/O电压必须与SPI Flash I/O电压兼容;VCCBATT用于给SRAM供电,用于保存AES密钥。

3.1 SPI Flash上电考虑

上电时,FPGA和SPI Flash之间存在竞争条件。FPGA完成自我初始化后,向SPI Flash发送读取命令,以检索配置数据,此时SPI Flash必须准备好,并对此作出响应命令。参考SPI Flash数据表中Flash完成自身初始化所需的时间。一般来说,7系列FPGA的自初始化时间(也称为上电复位)比SPI Flash(数百微秒)多一个数量级(毫秒),但设计者应评估时间。如果SPI Flash和FPGA位于不同的供电轨道上,这一点无疑更为重要。

3.2 SPI Flash配置FPGA

FPGA完成自初始化后,INIT管脚被释放,FPGA对模式管脚(M[2:0])采样,以确定使用哪种配置模式。当模式管脚M[2:0]=001时,FPGA在CCLK管脚输出大约3MHz的时钟频率 。很快之后,FCS_B驱动低电平,接着是x1快速读取指令和地址的操作码出现在D[00]引脚上,如图6所示。


数据最初以x1模式从SPI Flash传输到FPGA。在数据流早起部分,命令切换到外部时钟、x2或x4总线宽度或其他选项的命令。在读取这些选项之后,FPGA进行中间配置调整。

默认行为是从CCLK下降沿的SPI flash输出数据,并由FPGA在CCLK上升沿捕获数据。通过启用SPI_FALL_edge BitGen选项,可以将默认行为更改为在下降沿捕获。

4.SPI Flash配置时间计算

公式1应用于确定SPI Flash可以安全运行并且仍然可靠地传送比特流的最大频率。SPI Flash在时钟下降沿传输数据。7系列FPGA的默认设置是在时钟上升沿捕获数据。为了使下面的等式成立,假设启用了使FPGA能够在下降沿上捕获数据的SPI flash配置选项(-g SPI_fall_dege:yes). 这允许利用整个时钟周期,因此可以达到更高的频率。

最大时钟频率:


在7系列FPGA中,内部振荡器(fMCCKTOL)的频率容差非常重要。如果最短配置时间很关键,建议设计者使用外部时钟(EMCCLK)。

在确定最佳配置速率后,设计者需要将总比特流大小除以配置速率来确定x1模式下的总配置时间。如果使用x2或x4数据宽度,则除以宽度。

4.1 配置时钟计算举例

本节演示确定SPI Flash解决方案的最大操作配置频率的步骤。

选择的SPI flash是N25Q128A13,目标是Kintex-7xc7k325t FPGA。

根据SPI flash数据表,SPI Flash clock to out有多个值,取决于VCC和输出引脚上的电容。根据N25Q128A13的数据表,这些值最快为5ns,慢至7ns。在这个例子中,取7ns表示SPI Flash在30pf或更小的负载下运行。根据Kintex-7xc7k325t FPGA器件手册,FPGA的建立时间为3.0ns。从CCLK到C管脚的走线传播延迟和任何数据管脚的最长传播延迟提供TTPD。在这个例子中,使用的经验法则是每英寸165 ps,从FPGA到SPI闪存的走线长度为6英寸。(为了获得更精确的结果,建议使用其他技术,如IBIS模拟法。)在165ps/inch下,12英寸的跟踪值给出2.0ns。因此时钟频率为:1/(7ns+3.0ns+2.0ns)=83.3MHz。设计者应考虑使用FPGA的内部振荡器,最接近83.3 MHz的值为66 MHz。但是,XC7K325T的频率容差(fMCCKTOL)为±50%(当前值请参考DS182,Kintex-7 FPGA数据表),因此该时钟频率可能为(66 MHz x 1.5)=99 MHz,这对于计算的最大值来说太快了。下一个最快的配置速率是50MHz,其最大频率为(50MHz×1.5)=75MHz。该速率远低于计算的最大值,名义上在50MHz下工作,远低于所需的83.3MHz。Kintex-7xc7k325t FPGA的比特流大小为91548896 btis。因此,在50MHz时钟下,需要的配置时间为:91548896/50000000 = 1.83s。

假设一个80MHz的振荡器已经在板上为另一个应用或设备服务,因此可以将其作为FPGA配置的时钟。此时,91548896/80000000 = 1.144s,使用x4数据位宽模式时,配置时间为1.144/4 = 286ms。

4.2 外部主时钟(EMCCLK)考虑

当使用外部主时钟(EMCCLK)作为配置时钟源时,EMCCLK必须包含在用户的设计中。否则会导致FPGA无法完成启动。当使用内部振荡器进行FPGA配置时,不需要特殊的设计要求。

5.小结

本文我们对使用SPI Flash配置FPGA进行了详细的说明,包括SPI Flash与FPGA配置管脚的硬件设计,SPI Flash的选型以及配置时间计算等。对于自己项目设计,我们要根据实际需求,合理的选择对应的配置方案,以达到设计的最优化。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言