所有逻辑器件的厂商生产的器件都支持JTAG 加载电路, 它是一种通用的加载电路. 几乎所有的逻辑工程师或硬件开发工程师都曾被这种简单的JTAG 控制电路困惑过. 本人通过多次的现场应用,把JTAG电路的应用技巧总结如下.(以ALTERA,并且FPGA支持CPU+JTAG编程模式为例). 典型的JTAG 控制电路 很多设计者在应用此电路的时候,往往达不到理想的效果.该电路使用方法不正确,可能导致如下结果: 问题一: 电路无法正常加载. 问题二: 电路可以正常加载,编程软件显示加载过程正常,但加载后内部逻辑被复位.(多出现在CPLD+FLASH 方式和CPU+FLASH 方式) 问题三: CONF_DONE 信号不能够正常变高. 工程师在使用此电路的时候,不要忽略nCONFIG, MSEL[3..0]和DCLK 等特殊管脚的作用, 更不要忽略上拉和下拉电路的作用. nCONFIG, MSEL[3..0],DCLK 等特殊管脚的作用. 1. nCONFIG信号是FPGA的另一种加载模式PS(Passive Serial)的握手信号,该信号低电平有效.因为PS模式的时钟可以由设计者灵活控制,并且时序简单.PS模式常用于CPU加载或CPLD+FLASH等方式的加载,以方便CPU或CPLD模拟PS的时序.其典型电路为: CPU加载或CPLD+FLASH 加载方式 PS模式时序图 FPGA 既采用CPU 加载又采用JTAG 的加载模式.这是一种典型的应用,CPU 加载可以避免使用昂贵的配置芯片,在产品量产时使用. JTAG 加载模式一般用于量产之前的调试.在调试的过程中,如果不对nCONFIG信号进行正确的处理,可能导致”问题二”.从PS 模式的时序图上可以清楚的看到,nCONFIG 信号是低电平有效,PS 的控制电路检测该信号的下降沿.如果采用CPU+JTAG模式编程FPGA,因在调试时只会用到JTAG模式,那么此时的nCONFIG必须保证为高电平.也就是PS 模式无效. 2. MSEL[3..0]是Mode Select 管脚.因为FPGA支持不同的加载模式.在用到特殊模式编程FPGA 时,必须把MSEL[3..0]设置为对应的状态. 从下面的注释可以看到,JTAG模式对MSEL[3..0]无任何要求,可以接’1’,’0’,NC 等.由于电路支持CPU 加载模式.MSEL[3..0]以PS 模式的要求为准. 3. DCLK 属于AS(Active Serial)模式的时钟管脚.AS 模式是专用配置芯片和FPGA 的连接电路.如果电路只支持CPU+JTAG方式,那么DCLK 应为一个确定的电平,可以为高/低电平,但不能够接NC. 上拉和下拉电路的作用 Altera 公司不断优化JTAG 模式中的上拉和下拉电路,这是随着FPGA 内部的JTAG 控制的发展而发展的.这些电阻有不可低估的作用,不但需要设计者在PCB 上一个不漏,而且需要灵活应用. 上拉/下拉电阻的三大作用: - 保证电路的初始值. 比如TCK 信号采用下拉电阻. 为什么采用下拉电阻,而不采用上拉电阻呢? 因为下拉电阻使TCK 信号的初始值为0,由于是时钟信号,可以保证时钟信号在初值后第一个边沿为上升沿,而JTAG 控制电阻正是以TCK 的上升沿向FPGA 内部写配置数据的.
- 这里的上/下拉电阻仅仅属于推荐值,并非确定值,目的是保证信号质量. 以上拉电阻为例,如果上拉电阻为10K 以上,由于管脚对地有一个等效电容, 由于T=RC,C 由器件的工艺决定, 电阻越大,充放电时间越长,信号的上升沿就越缓慢,斜率就越小.上升时间如果超过JTAG控制电路的要求,向FPGA内部写数据就可能出错.那么,如果上拉电阻越小呢?会不会上升时间变小呢?是的.电阻变小, 上升时间变小,斜率变大,但是却带来了另一个严峻的问题,如果电阻小到一定程度,信号将在上升沿出现上冲现象,情形严重时会出现信号的振铃.如果电阻太小,产生的倒灌电流超过器件IO 的容限,JTAG 控制电路会烧坏.
那么,这个电阻究竟多大才满足一般PCB 的要求呢? 一般情况使用4.7K. - 保证信号的驱动能力. 前面提到,电阻越小,信号的斜率越小,同时信号的驱动能力越强. 电阻越大,信号斜率越大,同时信号的驱动能力越弱.这一点在JTAG 菊花链电路中有及其重要的重要.
JTAG 菊花链电路 如有多个FPGA 在同一板卡中,在板卡集成度较高的情况下会采用该电路. 一般情况,菊花链不超过3 三级,也就是不超过三个FPGA 时,可以采用上述电路. 由于JTAG 控制电路的信号的吸电流较大,加上PCB 走线的功率损耗,可以通过调节上/下拉电阻的方式来调节信号的驱动强度. 如果菊花链超过三级,也就是超过三个FPGA.则推荐使用Buffer 增强JTAG 各个信号的驱动强度.
|