【精品博文】勇敢的芯伴你玩转Altera FPGA连载14:FPGA下载配置电路
上世纪八十年代,联合测试行为组织(Joint Test ActI/On Group,简称JTAG)制定了主要用于PCB和IC的边界扫描测试标准。该标准于1990 年被IEEE 批准为IEEE1149.1-1990 测试访问端口和边界扫描结构标准。随着芯片设计和制造技术的快速发展,JTAG越来越多的被用于电路的边界扫描测试和可编程芯片的在线系统编程。
上世纪八十年代,联合测试行为组织(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 II软件到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配置引脚连接电路