所有邏輯器件的廠商生產(chǎn)的器件都支持JTAG加載電路,它是一種通用的加載電路.幾乎所有的邏輯工程師或硬件開發(fā)工程師都曾被這種簡單的JTAG控制電路困惑過.本人通過多次的現(xiàn)場應(yīng)用,把JTAG電路的應(yīng)用技巧總結(jié)如下.(以ALTERA,并且FPGA支持CPU+JTAG編程模式為例).
典型的JTAG控制電路
很多設(shè)計者在應(yīng)用此電路的時候,往往達(dá)不到理想的效果.該電路使用方法不正確,可能導(dǎo)致如下結(jié)果:
問題一:電路無法正常加載.
問題二:電路可以正常加載,編程軟件顯示加載過程正常,但加載后內(nèi)部邏輯被復(fù)位.(多出現(xiàn)在CPLD+FLASH方式和CPU+FLASH方式)
問題三:CONF_DONE信號不能夠正常變高.
工程師在使用此電路的時候,不要忽略nCONFIG,MSEL[3..0]和DCLK等特殊管腳的作用,更不要忽略上拉和下拉電路的作用.
nCONFIG,MSEL[3..0],DCLK等特殊管腳的作用.
1.nCONFIG信號是FPGA的另一種加載模式PS(PassiveSerial)的握手信號,該信號低電平有效.因?yàn)镻S模式的時鐘可以由設(shè)計者靈活控制,并且時序簡單.PS模式常用于CPU加載或CPLD+FLASH等方式的加載,以方便CPU或CPLD模擬PS的時序.其典型電路為:
CPU加載或CPLD+FLASH加載方式
PS模式時序圖
FPGA既采用CPU加載又采用JTAG的加載模式.這是一種典型的應(yīng)用,CPU加載可以避免使用昂貴的配置芯片,在產(chǎn)品量產(chǎn)時使用.JTAG加載模式一般用于量產(chǎn)之前的調(diào)試.在調(diào)試的過程中,如果不對nCONFIG信號進(jìn)行正確的處理,可能導(dǎo)致”問題二”.從PS模式的時序圖上可以清楚的看到,nCONFIG信號是低電平有效,PS的控制電路檢測該信號的下降沿.如果采用CPU+JTAG模式編程FPGA,因在調(diào)試時只會用到JTAG模式,那么此時的nCONFIG必須保證為高電平.也就是PS模式無效.
2.MSEL[3..0]是ModeSelect管腳.因?yàn)镕PGA支持不同的加載模式.在用到特殊模式編程FPGA時,必須把MSEL[3..0]設(shè)置為對應(yīng)的狀態(tài).
從下面的注釋可以看到,JTAG模式對MSEL[3..0]無任何要求,可以接’1’,’0’,NC等.由于電路支持CPU加載模式.MSEL[3..0]以PS模式的要求為準(zhǔn).
3.DCLK屬于AS(ActiveSerial)模式的時鐘管腳.AS模式是專用配置芯片和FPGA的連接電路.如果電路只支持CPU+JTAG方式,那么DCLK應(yīng)為一個確定的電平,可以為高/低電平,但不能夠接NC.
上拉和下拉電路的作用
Altera公司不斷優(yōu)化JTAG模式中的上拉和下拉電路,這是隨著FPGA內(nèi)部的JTAG控制的發(fā)展而發(fā)展的.這些電阻有不可低估的作用,不但需要設(shè)計者在PCB上一個不漏,而且需要靈活應(yīng)用.
上拉/下拉電阻的三大作用:
1.保證電路的初始值.比如TCK信號采用下拉電阻.為什么采用下拉電阻,而不采用上拉電阻呢?因?yàn)橄吕娮枋筎CK信號的初始值為0,由于是時鐘信號,可以保證時鐘信號在初值后第一個邊沿為上升沿,而JTAG控制電阻正是以TCK的上升沿向FPGA內(nèi)部寫配置數(shù)據(jù)的.
2.這里的上/下拉電阻僅僅屬于推薦值,并非確定值,目的是保證信號質(zhì)量.以上拉電阻為例,如果上拉電阻為10K以上,由于管腳對地有一個等效電容,由于T=RC,C由器件的工藝決定,電阻越大,充放電時間越長,信號的上升沿就越緩慢,斜率就越小.上升時間如果超過JTAG控制電路的要求,向FPGA內(nèi)部寫數(shù)據(jù)就可能出錯.那么,如果上拉電阻越小呢?會不會上升時間變小呢?是的.電阻變小,上升時間變小,斜率變大,但是卻帶來了另一個嚴(yán)峻的問題,如果電阻小到一定程度,信號將在上升沿出現(xiàn)上沖現(xiàn)象,情形嚴(yán)重時會出現(xiàn)信號的振鈴.如果電阻太小,產(chǎn)生的倒灌電流超過器件IO的容限,JTAG控制電路會燒壞.
那么,這個電阻究竟多大才滿足一般PCB的要求呢?一般情況使用4.7K.
3.保證信號的驅(qū)動能力.前面提到,電阻越小,信號的斜率越小,同時信號的驅(qū)動能力越強(qiáng).電阻越大,信號斜率越大,同時信號的驅(qū)動能力越弱.這一點(diǎn)在JTAG菊花鏈電路中有及其重要的重要.
JTAG菊花鏈電路
如有多個FPGA在同一板卡中,在板卡集成度較高的情況下會采用該電路.一般情況,菊花鏈不超過3三級,也就是不超過三個FPGA時,可以采用上述電路.由于JTAG控制電路的信號的吸電流較大,加上PCB走線的功率損耗,可以通過調(diào)節(jié)上/下拉電阻的方式來調(diào)節(jié)信號的驅(qū)動強(qiáng)度.
如果菊花鏈超過三級,也就是超過三個FPGA.則推薦使用Buffer增強(qiáng)JTAG各個信號的驅(qū)動強(qiáng)度
Linux內(nèi)核是從V2.6開始引入設(shè)備樹的概念,其起源于OF:OpenFirmware, 用于描述一個硬件平臺的硬件資源信息,這些信息包括:CPU的數(shù)量和類別、內(nèi)存基地址和大小、總線和橋、外設(shè)連接、中斷控制器和中斷使用情...
關(guān)鍵字: Linux內(nèi)核 硬件 CPUFPGA的應(yīng)用領(lǐng)域包羅萬象,我們今天來看看在音樂科技領(lǐng)域及醫(yī)療照護(hù)的智能巧思。
關(guān)鍵字: FPGA 科技領(lǐng)域 智能