勇敢的芯伴你玩转Nios II(电子设计与嵌入式开发实践丛书)
上QQ阅读APP看书,第一时间看更新

2.4 FPGA下载配置电路

20世纪80年代,联合测试行为组织(Joint Test ActI/On Group,JTAG)制定了主要用于PCB和IC的边界扫描测试标准。该标准于1990年被IEEE批准为IEEE1149.1-1990测试访问端口和边界扫描结构标准。随着芯片设计和制造技术的快速发展,JTAG越来越多地被用于电路的边界扫描测试和可编程芯片的在线系统编程。

FPGA器件都支持JTAG进行在线配置,JTAG边界扫描的基本原理如图2.11所示。在FPGA器件内部,边界扫描寄存器由TDI信号作为数据输入,TDO信号作为数据输出,形成一个很长的移位寄存器链。而JTAG通过整个寄存器链,可以配置或者访问FPGA器件的内部逻辑状态和各个I/O引脚的当前状态。

图2.11 JTAG边界扫描原理

在这里不过多地研究JTAG的原理。对于电路设计来说,JTAG的四个信号引脚:TCK/TMS/TDI/TDO(TRST信号一般可以不用)以及电源、地连接到下载线即可。

说到FPGA的配置,这里不得不提一下它们和CPLD内部存储介质的不同。由于CPLD大都是基于PROM或Flash来实现可编程特性,因此对其进行在线编程时就已将配置数据流固化好了,重新上电后还能够运行固有的配置数据;FPGA大都是基于SRAM来实现可编程特性,换句话说,通过JTAG实现在线编程时,在保持不断电的情况下,FPGA能够正常运行,而一旦掉电,SRAM数据将丢失,FPGA会一片空白,无法继续运行任何既定功能。因此,FPGA通常需要外挂一个用于保存当前配置数据流的PROM或Flash芯片,通常称之为“配置芯片”,CPLD则不需要。

因此,对于FPGA器件,若希望它产品化,可以脱机(PC机)运行,那么就必须在板级设计时考虑它的配置电路。也不用太担心,FPGA厂商的器件手册里通常也会给出推荐的配置芯片和参考电路,大多数情况下依葫芦画瓢便可。当然了,板级设计还是马虎不得的,有几个方面是需要注意的:

●配置芯片尽量靠近FPGA。

●考虑配置信号的完整性问题,必要时增加阻抗匹配电阻。

●部分配置引脚可以被复用,但是要谨慎使用,以免影响器件的上电配置过程。

FPGA配置电路的设计是非常重要的,相关信号引脚通常都是固定并且专用的,需要参考官方推荐电路进行连接。

如图2.12所示,这是FPGA下载和配置的示意图。在图2.12的左侧,DC10插座将FPGA器件的JTAG专用引脚TCK、TMS、TDI、TDO引出,通过USB-Blaster下载器可以连接这个DC10插座和PC机,实现从PC机的Quartus Ⅱ软件到FPGA器件的在线烧录或配置芯片(SPI Flash)的固化。而在图2.12的右侧,一颗SPI Flash作为FPGA器件的配置芯片,FPGA器件的固化代码可以存储在这颗SPI Flash中,当FPGA器件每次上电时,都会直接从SPI Flash中读取固化代码并运行。

图2.12 FPGA下载和配置示意图

为了实现上述图2.12配置电路的正常工作,还需要如图2.13所示,将MSEL0/MSEL1/MSEL2引脚分别连接到GND/2.5V/GND,这是设定FPGA器件在上电后直接进入AS配置模式,即从SPI Flash的固化代码启动运行。需要额外说明的是,无论MSEL0/MSEL1/MSEL2引脚如何设置,当JTAG在线配置FPGA时,FPGA器件都会优先运行JTAG最新烧录的代码。CONF_DONE\nCONFIG\nSTATUS三个信号则分别上拉到3.3V,同时nCONFIG连接按键S17,可以通过这个按键使FPGA器件重新加载配置代码。

图2.13 FPGA配置引脚连接电路