0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用MxTNI JTAG庫和SVF文件編程Xilinx PROM器件

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-06-16 17:33 ? 次閱讀

本應(yīng)用筆記闡述了如何利用MxTNI? JTAG庫以及串行向量格式(SVF)文件來編程Xilinx? PROM器件。假定讀者已經(jīng)對JTAG和可編程邏輯器件有了一定認(rèn)識。

介紹

Maxim微型網(wǎng)絡(luò)接口(MxTNI)是Dallas Semiconductor (Maxim Integrated的全資子公司)開發(fā)的一個平臺。它包含了一套小型卻功能強(qiáng)大的芯片組以及Java?可編程虛擬機(jī)。芯片組具有處理、控制、器件級通信和網(wǎng)絡(luò)互連的能力。為了和任何JTAG器件通信,TINIs400適配板在J21端具有4引腳JTAG輸出。 這些引腳將直接連到JTAG器件上標(biāo)準(zhǔn)JTAG引腳TDI、TDO、TMS和TCK。

在系統(tǒng)編程PROM可以進(jìn)行單獨(dú)編程,或者級連編程。鏈中的所有器件共享TCK和TMS信號。MxTNI的TDI信號接到邊界掃描鏈中第一個器件的TDI輸入端。第一個器件的TDO信號接到鏈中第二個器件的TDI輸入上,如此連接下去。鏈中的最后一個器件的TDO輸出接到MxTNI的TDO引腳上,見圖1所示。

圖1. 所有JTAG操作都通過器件的測試訪問端口進(jìn)行控制

圖1. 所有JTAG操作都通過器件的測試訪問端口進(jìn)行控制

所有JTAG操作都是由器件的測試訪問端口(TAP)控制的。TAP包括四個信號:TMS、TDI、TDO和TCK。 這些信號通過TAP控制器,即16狀態(tài)有限狀態(tài)機(jī)與器件相互作用。JTAG的TMS信號控制狀態(tài)間的轉(zhuǎn)換。指令和數(shù)據(jù)由TDI引腳移入器件,并由TDO引腳移出。TDI和TDO信號的所有狀態(tài)轉(zhuǎn)換和行為都與TCK同步。見 圖2

圖2.

圖2.

所有JTAG操作都是將數(shù)據(jù)移入或移出JTAG指令和數(shù)據(jù)寄存器。TAP控制器可對所有這些寄存器直接訪問。有兩類JTAG寄存器:指令寄存器(IR)和數(shù)據(jù)寄存器(DR)。訪問IR通過移位-IR (Shift-IR)狀態(tài)實(shí)現(xiàn),而訪問DR通過移位-DR (Shift-IR)狀態(tài)實(shí)現(xiàn)。IR長度通常是大于2位的任意長度。除了由IEEE? Std. 1149.1定義的BYPASS指令為全1以外,生產(chǎn)商定義所有其它的指令位碼。

在本應(yīng)用筆記中,JAVA樣例代碼將解釋說明串行向量格式(SVF)文件來進(jìn)行編程。這里所用的SVF是描述高層IEEE 1149.1 (JTAG)總線操作的語法規(guī)范。JTAG設(shè)備和軟件提供商已經(jīng)將SVF作為標(biāo)準(zhǔn)用于數(shù)據(jù)交換。SVF以緊湊和可移植的形式描述JTAG鏈操作。SVF文件通過描述需要移入器件鏈的信息,記錄JTAG操作。通過Xilinx iMPACT (詳細(xì)信息見下面)軟件,將JTAG操作記錄在SVF文件中。SVF文件寫成ASCII文本形式,因此可以在任何文本編輯器中人工讀、修改和寫?!霸S多第三方編程工具使用SVF文件作為輸入,這樣利用包含在SVF文件中的信息可以對JTAG鏈中的Xilinx器件編程。”

JTAG庫簡要說明

所開發(fā)的JTAG類庫可幫助用戶使用MxTNI與JTAG器件進(jìn)行通信。一個可能的應(yīng)用是:從遙遠(yuǎn)的位置對可編程邏輯進(jìn)行動態(tài)和在系統(tǒng)更新。用戶能夠?qū)AP控制器初始化到初始狀態(tài)、瀏覽16個狀態(tài)、獲得或設(shè)置TAP狀態(tài)、產(chǎn)生時鐘信號、發(fā)送命令和數(shù)據(jù)等等。以下為JTAG類方法的簡要說明:

  • public jtag(): 加載jtag庫。
  • public String getVersion(): 返回jtag類的版本。
  • public int runClock( int numticks ): 以numticks指定的數(shù)量運(yùn)行時鐘。
  • public byte initialize(): 先將TMS置高達(dá)五個TCK時鐘脈沖,然后TMS置低1個時鐘并進(jìn)入缺省狀態(tài)Run-Test-Idle。
  • public byte setState( byte aState ): 將目標(biāo)狀態(tài)設(shè)置為aState指定的狀態(tài)。
  • public byte getState(): 返回目標(biāo)狀態(tài)。
  • public byte scanState( byte state ): 將TAP控制器的狀態(tài)機(jī)轉(zhuǎn)換到參數(shù)state指定的狀態(tài)。
  • public String displayState(byte state): 顯示TAP控制器的狀態(tài)。
  • public byte waitState( int msecs ): 進(jìn)程延時一定毫秒數(shù)。
  • public byte getTDO(): 獲得引腳TDO的當(dāng)前狀態(tài)。
  • public void setTDI(byte logic): 引腳TDI設(shè)定為指定的邏輯狀態(tài)。
  • public byte getTDI(): 獲得引腳TDI的當(dāng)前狀態(tài)。
  • public void setTMS(byte logic): s引腳TMS設(shè)定為指定的邏輯狀態(tài)。
  • public byte getTMS(): 獲得引腳TMS的當(dāng)前狀態(tài)。
  • public void setTCK(byte logic): 引腳TCK設(shè)定為指定的邏輯狀態(tài)。
  • public byte getTCK(): 獲得引腳TCK的當(dāng)前狀態(tài)。
  • public byte sendNrcv(byte[] data, int offset, int size, byte numberOfBits, boolean state, boolean update, byte extraHeaderClock, byte HeaderBitVal,byte extraTrailerClock, byte TrailerBitVal): 發(fā)送數(shù)據(jù)字節(jié)數(shù)組,并接收返回的字節(jié)數(shù)組。
  • public byte sendNrcv(int[] data, int offset, int size, byte numberOfBits, boolean state, boolean update,byte extraHeaderClock, byte HeaderBitVal,byte extraTrailerClock, byte TrailerBitVal): 發(fā)送數(shù)據(jù)整形數(shù)組,并接收返回的整形數(shù)組。

硬件和軟件需求

以下為所需要的硬件和軟件:

  • TINI400評估板,并配置有MxTNI OS 1.12或更高版本。
  • JTAG器件(可編程邏輯)。
  • 器件鏈中JTAG器件模型的SVF文件。

編程步驟

第1步: 將MxTNI板的4個JTAG引腳與JTAG器件的4個JTAG引腳相連。

第2步: 遵循SVF文件的命令并使用JTAG庫編寫JAVA應(yīng)用程序,來對JTAG器件進(jìn)行編程,編譯后加載到MxTNI。

(附錄A: 一個樣例Idcode.svf文件,實(shí)現(xiàn)從單獨(dú)的XC18V02 Xilinx器件讀取IDCODE。)

(附錄B: 樣例AppJtag.java程序,將SVF文件作為輸入并產(chǎn)生JTAG信號來讀取IDCODE。該樣例程序是用來處理單獨(dú)器件的(對于級連器件的詳細(xì)信息見附錄C)。)

(附錄C: 展示了由已有的SVF文件編程級連器件的步驟。)

第3步: 運(yùn)行JAVA程序??蓤?zhí)行AppJtag.tini將加載到MxTNI板。在MxTNI提示符下錄入“java AppJtag.tini Idcode.svf”來運(yùn)行程序。程序?qū)a(chǎn)生JTAG信號與JTAG器件進(jìn)行通信。注意:

  1. 生成的編程JTAG器件SVF文件應(yīng)該與器件鏈中設(shè)計的確切模型一致。
  2. 所有操作碼,例如編程JTAG器件的READ、WRITE、ERASE及其它命令等,都是由生產(chǎn)商定義的。SVF文件應(yīng)該包含用戶需要的所有操作碼。

示例

以下示例說明了如何利用JTAG庫從Xilinx JTAG器件XC18V02中讀取Idcode。完整的樣例代碼,請查閱附錄B。

  1. 生成器件模型的SVF文件:

    使用Xilinx WEB START來生成SVF文件。

    • 執(zhí)行iMPACT并選擇單選按鈕“Prepare Configuration Files”選項(xiàng),然后點(diǎn)擊next。選擇單選按鈕“Boundary Scan file”并點(diǎn)擊next。選擇“SVF File”然后點(diǎn)擊finish。
    • 在對話框中錄入SVF文件名,例如example,并點(diǎn)擊OK。
    • 選擇要加載的name_of_mcs_file.mcs文件,并從列表中選擇PROM器件(XC18V02_vq44)。
    • XC18V02已加到模型中。
    • 點(diǎn)擊我們要編程的XC18V02器件型號。器件將為高亮顯示。
    • 點(diǎn)擊鼠標(biāo)右鍵,并選擇編程選項(xiàng)。勾選“Get Idcode”。
    • 在模型外點(diǎn)擊鼠標(biāo)以取消高亮顯示器件,右擊并選擇option以關(guān)閉SVF。這時就生成了模型的SVF文件。
  2. 讀取SVF文件并使用JTAG庫來編程XC18V02器件。

    • 以下為SVF文件的部分樣例代碼:
    // Created using Xilinx iMPACT Software [ISE WebPACK - 5.1i]
    TRST OFF;
    ENDIR IDLE;
    ENDDR IDLE;
    STATE RESET IDLE;
    TIR 0 ;
    HIR 0 ;
    TDR 0 ;
    HDR 0 ;
    // Validating chain...
    TIR 0 ;
    HIR 0 ;
    TDR 0 ;
    HDR 0 ;
    SIR 8 TDI (ff) SMASK (ff) ;
    TIR 0 ;
    HIR 5 TDI (1f) SMASK (1f) ;
    HDR 1 TDI (00) SMASK (01) ;
    TDR 0 ;
    //Loading device with 'idcode' instruction.
    SIR 8 TDI (fe) SMASK (ff) ;
    SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK (ffffffff) ;
    //Loading device with 'conld' instruction.
    SIR 8 TDI (f0) ;
    RUNTEST 110000 TCK;
    
    • 遵循SVF命令并使用庫向XC18V02發(fā)送命令。
    • SVF規(guī)范提供了四個全局填充指令:頭指令寄存器(HIR)、尾部指令寄存器(TIR)、頭數(shù)據(jù)寄存器(HDR)和尾部數(shù)據(jù)寄存器(TDR)。這些全局命令規(guī)定了移位操作的開始和結(jié)尾處要填充的位數(shù),從而解決旁路器件問題,并為SVF文件壓縮提供了一種簡單的方法。一旦指定,這些位會出現(xiàn)在SIR或者SDR命令的每一組比特位的前面或者后面。
    • 以下兩個示例說明如何把SVF命令解釋為JTAG庫命令。

示例1: 帶有全局填充指令的SVF語法結(jié)構(gòu)

a/ SVF file commands:
STATE RESET IDLE;
TIR 0 ;
HIR 5 TDI (1f) SMASK (1f) ;
HDR 1 TDI (00) SMASK (01) ;
TDR 0 ;
//Loading device with 'idcode' instruction.
SIR 8 TDI (fe) SMASK (ff) ;
SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK (ffffffff) ;
//Loading device with 'conld' instruction.
SIR 8 TDI (f0) ;
RUNTEST 110000 TCK;
//Check for Read/Write Protect.
SIR 8 TDI (ff) TDO (01) MASK (ff) ;
//Loading device with 'idcode' instruction.
SIR 8 TDI (fe) ;
SDR 32 TDI (00000000) TDO (05025093) ;
//Loading device with 'conld' instruction.
SIR 8 TDI (f0) ;
RUNTEST 110000 TCK;
//Check for Read/Write Protect.
SIR 8 TDI (ff) TDO (01) ;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
b/ Sample JAVA program using JTAG library:
import java.io.*;
import javax.comm.*;
import com.dalsemi.comm.*
public static void main(String[] args)
{
myJtag = new jtag();
int SIZE = 0x1000;
byte[] byteArray = new byte[SIZE];
byte HeaderInstBitVal = (byte)0x00;
byte TrailerInstBitVal = (byte)0x00;
byte HeaderDataBitVal= (byte)0x00;
byte TrailerDataBitVal= (byte)0x00;
// STATE RESET IDLE;
myJtag.initialize();//This JTAG library method will initialize
		  // XC18V02 TAP controller and stay at
		  // Run-Test/Idle
// TIR 0 ;
byte TIR = (byte)0x00;
// HIR 5 TDI (1f) SMASK (1f) ;
byte HIR = (byte)0x05;
HeaderInstBitVal = (byte)0x01;
// HDR 1 TDI (00) SMASK (01) ;
byte HDR = (byte)0x01;
HeaderDataBitVal = (byte)0x00;
// TDR 0
byte TDR = (byte)0x00;
// SIR 8 TDI (fe) SMASK (ff) ;
byteArray[0] = (byte)0xfe;
myJtag.sendNrcv(byteArray,0,1,(byte)8,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 32 TDI (00000000) SMASK (ffffffff) TDO (05025093) MASK
// (ffffffff) ;
byteArray[0] = (byte)0x00;
byteArray[1] = (byte)0x00;
byteArray[2] = (byte)0x00;
byteArray[3] = (byte)0x00;
myJtag.sendNrcv(byteArray,0,4,(byte)8,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// SIR 8 TDI (f0) ;
byteArray[0] = (byte)0xf0;
myJtag.sendNrcv(byteArray,0,1,(byte)8,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// RUNTEST 110000 TCK;
myJtag.waitState(100); // Depend on operation frequency, user can
			 // calculate how many miliseconds to wait.
}

示例2: 無全局填充指令的SVF語法結(jié)構(gòu)

a/ SVF file commands:
STATE RESET IDLE;
TIR 0 ;
HIR 0 ;
TDR 0 ;
HDR 0 ;
SIR 13 TDI (1fff) SMASK (1fff) ;
SDR 2 TDI (00) SMASK (03) ;
SIR 13 TDI (1fff) TDO (0021) MASK (1c63) ;
// Loading devices with 'ispen' or 'bypass'  instruction.
SIR 13 TDI (1d1f) ;
SDR 7 TDI (68) SMASK (7f) ;
// Loading device with 'faddr' instruction.
SIR 13 TDI (1d7f) ;
SDR 17 TDI (000002) SMASK (01ffff) ;
RUNTEST 1 TCK;
// Loading device with 'ferase' instruction.
SIR 13 TDI (1d9f) ;
RUNTEST 100000 TCK;
// Loading device with a 'faddr' instruction.
SIR 13 TDI (1d7f) ;
SDR 17 TDI (000002) ;
RUNTEST 1 TCK;
// Loading device with 'serase' instruction.
SIR 13 TDI (015f) ;
RUNTEST 37000 TCK;
// Loading devices with 'conld' or 'bypass' instruction.
SIR 13 TDI (1e1f) ;
RUNTEST 110000 TCK;
// Loading devices with 'ispen' or 'bypass'  instruction.
SIR 13 TDI (1d1f) ;
SDR 7 TDI (68) SMASK (7f) ;
// Loading device with a 'fdata0' instruction.
SIR 13 TDI (1dbf) ;
b/ Sample JAVA program using JTAG library:
import java.io.*;
import javax.comm.*;
import com.dalsemi.comm.*
public static void main(String[] args)
{
myJtag = new jtag();
int SIZE = 0x1000;
int[] intArray = new int[SIZE];
byte HeaderInstBitVal = (byte)0x00;
byte TrailerInstBitVal = (byte)0x00;
byte HeaderDataBitVal= (byte)0x00;
byte TrailerDataBitVal= (byte)0x00;
// STATE RESET IDLE;
myJtag.initialize();//This JTAG library method will initialize
	  // XC18V02 TAP controller and stay at
	  // Run-Test/Idle
// TIR 0 ;
byte TIR = (byte)0x00;
// HIR 0 ;
byte HIR = (byte)0x00;
// HDR 0 ;
byte HDR = (byte)0x00;
// TDR 0
byte TDR = (byte)0x00;
// SIR 13 TDI (1fff) SMASK (1fff) ;
intArray[0] = (int)(0x1fff&0x1fff);
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 2 TDI (00) SMASK (03) ;
intArray[0] = (int)(0x00&0x03);
myJtag.sendNrcv(intArray,0,1,(byte)2,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// SIR 13 TDI (1fff) TDO (0021) MASK (1c63) ;
intArray[0] = (byte)0x1fff;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SIR 13 TDI (1d1f) ;
intArray[0] = (byte)0x1d1f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 7 TDI (68) SMASK (7f) ;
intArray[0] = (int)(0x68&0x7f);
myJtag.sendNrcv(intArray,0,1,(byte)7,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// SIR 13 TDI (1d7f) ;
intArray[0] = (byte)0x1d7f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 17 TDI (000002) SMASK (01ffff) ;
intArray[0] = (int)(0x0002 & 0xffff);
TDR = (byte)0x01;
myJtag.sendNrcv(intArray,0,1,(byte)16,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// RUNTEST 1 TCK;
myJtag.waitState(1);
// SIR 13 TDI (1d9f) ;
intArray[0] = (byte)0x1d9f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// RUNTEST 100000 TCK;
myJtag.waitState(1000);
// SIR 13 TDI (1d7f) ;
intArray[0] = (byte)0x1d7f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 17 TDI (000002) ;
intArray[0] = (int)(0x0002 & 0xffff);
TDR = (byte)0x01;
myJtag.sendNrcv(intArray,0,1,(byte)16,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// RUNTEST 1 TCK;
myJtag.waitState(1);
// SIR 13 TDI (015f) ;
intArray[0] = (byte)0x015f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// RUNTEST 37000 TCK;
myJtag.waitState(100);
// SIR 13 TDI (1e1f) ;
intArray[0] = (byte)0x1e1f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// RUNTEST 110000 TCK;
myJtag.waitState(110);
// SIR 13 TDI (1d1f) ;
intArray[0] = (byte)0x1d1f;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
// SDR 7 TDI (68) SMASK (7f) ;
intArray[0] = (int)(0x68 & 0x7f);
TDR = (byte)0x00;
myJtag.sendNrcv(intArray,0,1,(byte)7,false,false,(byte)HDR,
(byte)HeaderDataBitVal,(byte)TDR,(byte)TrailerDataBitVal);
// SIR 13 TDI (1dbf) ;
intArray[0] = (byte)0x1dbf;
myJtag.sendNrcv(intArray,0,1,(byte)13,true,false,(byte)HIR,
(byte)HeaderInstBitVal,(byte)TIR,(byte)TrailerInstBitVal);
}

結(jié)論

由提供的SVF文件來編程Xilinx PROM器件是非常簡單的。但是,如果用戶能夠正確分析SVF文件并理解如何確定對器件鏈中哪個器件進(jìn)行編程,會更有好處。知道了這些信息,編程者能夠更加高效地使用JTAG庫。軟件小組要對遙遠(yuǎn)位置的Xilinx JTAG器件進(jìn)行編程,已有實(shí)際應(yīng)用。利用開發(fā)包中的嵌入式JTAG編程軟件,并以mcs文件作為輸入文件,這是很容易做到的。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417208
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8257

    瀏覽量

    149965
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27813
收藏 人收藏

    評論

    相關(guān)推薦

    Xilinx文件的編譯

    在FPGA開發(fā)過程中需要利用Modelsim對設(shè)計進(jìn)行仿真,在不同階段需要用到不同的文件,這里把Xinlinx文件的編譯過程說一下。常用
    發(fā)表于 02-27 15:16

    Xilinx FPGA的JTAG配置方式和PROM配置方式的問題

    大家好,最近剛接觸FPGA不久 現(xiàn)在手上有一塊xilinx SP3E開發(fā)板,簡單的設(shè)計了一個流水燈的程序 通過JTAG下載方式 直接下到FPGA里 板子可以運(yùn)行 因?yàn)橄雽?shí)現(xiàn)斷電后重啟板子自動
    發(fā)表于 10-11 11:16

    使用Impact創(chuàng)建.svf文件時出現(xiàn)問題

    我試圖使用Impact / Project Navigator(版本O.40d)生成用于JTAG測試的.svf文件,所有生成的文件都是0kb!這是一個工作設(shè)計,我可以生成.bit&am
    發(fā)表于 03-18 13:36

    Spartan 3E怎么通過JTAG進(jìn)行SPI編程

    我有一個基于Spartan 3e的嵌入式設(shè)計,我需要能夠更新PROM。我可以做到的唯一方法是通過JTAG端口。影響不是在現(xiàn)場缺少Xinlinx編程電纜的選擇,也是因?yàn)樗枰目臻g。我有一個簡單
    發(fā)表于 05-27 14:01

    Spartan3A SVF配置

    對于除Spartan3A之外的多個設(shè)備,我已成功創(chuàng)建了一個SVF文件,以使用第三方邊界掃描工具配置設(shè)備。我用Acculogic。所以我使用的過程是:1.影響:將位文件加載到Jtag鏈中
    發(fā)表于 06-19 11:20

    如何使用JTAG從微控制器重新編程FPGA的ISF?

    SVF文件編程和驗(yàn)證FPGA(在ISF內(nèi)存中),但是當(dāng)我使用自定義代碼(JTAG驅(qū)動程序)從微處理器播放SVF
    發(fā)表于 08-05 07:18

    如何使用Xilinx工具及連接到JTAG的ft2232芯片的定制電路板?

    :// www.gadgetfactory.net/gf/project/butterfly_main/,它使用ft2232芯片進(jìn)行jtag通信。我目前能夠使用urjtag加載svf文件,但我正試圖找到一種
    發(fā)表于 08-15 10:18

    在SP605上編程SPI Flash收到設(shè)備ID錯誤

    我無法在SP605板上編程SPI Flash器件。我遵循了XAPP951并從FPGA位文件中創(chuàng)建了一個SPI PROM文件。我已經(jīng)將
    發(fā)表于 09-06 09:21

    XAPP058 -利用嵌入式微控制器實(shí)現(xiàn)Xilinx系統(tǒng)編程

    Xilinx 高性能 CPLD、FPGA 和配置 PROM 系列具備在系統(tǒng)可編程性、可靠的引腳鎖定以及JTAG 邊界掃描測試功能。此強(qiáng)大的功能組合允許設(shè)計人員在進(jìn)行重大更改時,仍能保留
    發(fā)表于 01-17 17:37 ?42次下載
    XAPP058 -<b class='flag-5'>利用</b>嵌入式微控制器實(shí)現(xiàn)<b class='flag-5'>Xilinx</b>系統(tǒng)<b class='flag-5'>編程</b>

    XAPP483 - 利用 Platform Flash PROM 實(shí)現(xiàn)多重啟動功能

    一些應(yīng)用利用 Xilinx FPGA 在每次啟動時可改變配置的能力,根據(jù)所需來改變 FPGA 的功能。Xilinx Platform Flash XCFxxP PROM 的設(shè)計修訂 (
    發(fā)表于 01-17 17:40 ?43次下載
    XAPP483 - <b class='flag-5'>利用</b> Platform Flash <b class='flag-5'>PROM</b> 實(shí)現(xiàn)多重啟動功能

    XAPP503-針對Xilinx器件SVF和XSVF文件格式

    as they apply to Xilinx devices. Some familiarity with IEEE STD 1149.1 (JTAG) isassumed. For information on using Serial Vector Format
    發(fā)表于 02-17 15:26 ?53次下載
    XAPP503-針對<b class='flag-5'>Xilinx</b><b class='flag-5'>器件</b>的<b class='flag-5'>SVF</b>和XSVF<b class='flag-5'>文件</b>格式

    利用compxlibgui工具編譯Xilinx

    當(dāng)ISE調(diào)用ModelSim進(jìn)行仿真的時候,如果在FPGA設(shè)計中使用了Xilinx提供的的IP core或者其他的原語語句,ModelSim不添加Xilinx相應(yīng)的文件的話,是無法仿
    發(fā)表于 02-11 15:22 ?1372次閱讀
    記<b class='flag-5'>利用</b>compxlibgui工具編譯<b class='flag-5'>Xilinx</b><b class='flag-5'>庫</b>

    基于MxTNI JTAGSVF文件編程Xilinx PROM器件的詳細(xì)分析與演示

    本應(yīng)用筆記闡述了如何利用MxTNI? JTAG以及串行向量格式(SVF)文件
    發(fā)表于 11-16 19:51 ?8064次閱讀

    Xilinx文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Xilinx文件免費(fèi)下載。
    發(fā)表于 10-09 08:00 ?0次下載

    digilent JTAG-HS2編程電線 介紹

    JTAG-HS2編程電線是一款專為Xilinx FPGA所設(shè)計的高速編程解決方案。該電線完全兼容所有Xilinx工具,能被iMPACT?,C
    的頭像 發(fā)表于 11-13 17:13 ?5195次閱讀
    digilent <b class='flag-5'>JTAG</b>-HS2<b class='flag-5'>編程</b>電線 介紹