关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
2016-07-11 09:42
495 查看
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量 |
发布时间:2014-08-13 14:55:35 |
技术类别:CPLD/FPGA |
1、关于链路中的芯片数量
Xilinx的UG380:“Spartan-6 FPGA Configuration User Guide”的第58页“JTAG Signal Routing”一节有如下描述:
The TCK and TMS signals go to all devices in the chain; consequently, their signal quality
is important. For example, TCK should transition monotonically at all receivers to ensure
proper JTAG functionality and must be properly terminated. The quality of TCK can limit
the maximum frequency for reliable JTAG configuration.
Additionally, if the chain is large (three devices or more), TMS and TCK should be buffered
to ensure that they have sufficient drive strength at all receivers, and the voltage at logic
High must be compatible with all devices in the chain.
由于TCK和TMS两个信号是连接到菊花链中的所有芯片,因此这两个信号的质量(完整性)非常重要!特别是时钟信号TCK,任何毛刺干扰和边沿抖动都会导致下载失败。
当菊花链中的芯片(或设备)在3个以上时,TMS和TCK必须加缓冲器(如74LVC245),以增加其驱动能力,对于一些驱动能力差的国产下载器尤其重要。每个驱动门所在分支链路中的芯片(或设备)数量取决于缓冲器的驱动能力,一般74LVC245(8缓冲)的一个缓冲门可驱动3~4个负载(芯片)。在TCK的缓冲器输出端串接一个20~30Ω的电阻,设备端并接一个100~1000p的电容到地,可明显降低边沿抖动、减少毛刺干扰。
TMS是一个模式选择开关信号,TCK是时钟脉冲信号,缺省频率为6MHz,当负载较多时,不加缓冲适当降低TCK的频率也可提高信号完整性。
JTAG协议规定TCK下降沿输出TDI数据有效,并在TCK上升沿采集TDO数据,因此,在整个JTAG链中必须保证TDI至TDO的贯通延时(Propagation Delay)TCPD必须小于TCK的1/2周期TCLK/2,即△T=TCLK/2 –TCPD>0。也就是说,在增加缓冲驱动的情况下,JTAG链路中的芯片总数与每个芯片的TDO延时TDOV(FPGA为TTCKTDO)和TCK频率有关。在芯片总数确定以后,为保证△T>0,可以降低TCK的频率。
下面举一个实例:假设一个封闭嵌入式系统中有三个模块(或电路板):B1、B2、B3,其中B1、B2的JTAG分支都含1片XCF16P PROM、1片V5 FPGA;B3的JTAG分支含1片XCF16P PROM、1片V5 FPGA、1片S6 FPGA外挂1片8M SPI FPASH。 三个模块的TDI、TDO按B1→B2→B3顺序串接;外部接1个JTAG口,其TCK、TMS在母板上经3路缓冲驱动(74LVC1T45)分别至每个模块,TCK串接22Ω电阻。整个JTAG链上串联7个芯片(不算SPI),其中3个XCF16P、3个V5、1个S6,总的TCPD =3×22+3×6+6.5=85.5ns。考虑到缓冲器和线路延时,TCPD >100ns,因此TCK频率取3MHz最合适,其TCLK/2 =167ns。
2、如何设置JTAG的TCK频率
启动Xilinx FPGA/PEROM下载工具iMpact,点击“Output | Cable Setup…”,下拉“Tck Speed/Baud Rate:”设置频率,缺省值为6MHz,如下图所示:
相关文章推荐
- 转:AngularJS性能优化总结篇
- javaWeb基本的pom.xml配置
- Ubuntu的apt-get命令以及一些常见错误
- js笔记--表单
- SCU2016-04 C题模拟
- Xilinx FPGA上电时序分析与设计
- 通俗讲解:缓存、缓存算法和缓存框架
- TopCoder SRM 694
- svn: E155004 is already locked 解决方案
- linux命令追加信任列表
- poj 2151概率dp
- c++库
- delphiXE Implicit string cast from 'AnsiString' to 'string'
- [Jenkins] Use python requests to programatically get and set Jenkins job configuration
- 一个insert插入语句很慢的优化
- ReactNative实现通知监听事件
- c# UDP通信
- big endian
- 进程平均周转时间的计算
- Java里面Unreachable code