本發(fā)明涉及現(xiàn)場可編程邏輯門陣列FPGA下載線的技術(shù)領(lǐng)域,具體涉及一種基于單片機(jī)的多功能USB-JTAG接口FPGA下載線。
背景技術(shù):
業(yè)內(nèi)主流的兩大FPGA生產(chǎn)廠商為xilinx和altera,兩家的FPGA均支持JTAG接口的下載線進(jìn)行燒寫,但兩家的下載線都只支持對(duì)自家的芯片進(jìn)行配置,而無法混用,這不但給用戶帶來了使用上的不便,而且增加的成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種基于單片機(jī)(本發(fā)明采用的單片機(jī)型號(hào)為CY7C68013A)的USB-JTAG下載線,可支持對(duì)Xilinx、Altera的FPGA以及其它支持JTAG接口燒寫的芯片進(jìn)行配置。
本發(fā)明采用的技術(shù)方案為:一種基于單片機(jī)的多功能USB-JTAG接口FPGA下載線,其核心功能均通過單片機(jī)實(shí)現(xiàn),首先上位機(jī)程序通過USB接口加載單片機(jī)固件,單片機(jī)執(zhí)行固件程序,通過JTAG接口讀取FPGA芯片的ID號(hào),并返回給上位機(jī)程序,上位機(jī)獲得IDCODE后,按需轉(zhuǎn)換燒寫文件,發(fā)送給單片機(jī),并燒寫到FPGA中。
所述基于單片機(jī)的多功能USB-JTAG接口FPGA下載線,首先通過單片機(jī)讀取IDCODE,使?fàn)顟B(tài)機(jī)恢復(fù)到TEST-LOGIC-RESET。控制TMS和clock,使?fàn)顟B(tài)機(jī)經(jīng)過Run-Test/Idle、Select-DR-Scan、Select-IR-Scan、Capture-IR跳轉(zhuǎn)到SHIFT-IR狀態(tài)。給狀態(tài)機(jī)發(fā)送讀IDCODE的指令。
然后控制TMS和clock,使?fàn)顟B(tài)機(jī)經(jīng)過Exit1-IR、Updata-IR、Select-DR-Scan、Capture-IR來到Shift-DR狀態(tài),讀取IDCODE,返回給上位機(jī)。上位機(jī)獲得IDCODE后,按需轉(zhuǎn)換燒寫文件,發(fā)送給單片機(jī)(CY7C68013A),單片機(jī)(CY7C68013A)控制JTAG TAG把數(shù)據(jù)燒寫進(jìn)FPGA中即可。
本發(fā)明的原理在于:
本發(fā)明解決思路就是使用單片機(jī)模擬JTAG協(xié)議,實(shí)現(xiàn)相應(yīng)下載線的功能,同時(shí)上位機(jī)需要根據(jù)通過單片機(jī)獲取的FPGA的型號(hào),轉(zhuǎn)換燒寫文件,通過USB發(fā)送給單片機(jī),再由單片機(jī)發(fā)送給FPGA開發(fā)板。單片機(jī)的固件程序,模擬JTAG TAP狀態(tài)機(jī),讀取IDCODE,得到FPGA的型號(hào),返回給上位機(jī),上位機(jī)查詢程序數(shù)據(jù),得到更多信息,并作出選擇,轉(zhuǎn)換燒寫文件,發(fā)送給單片機(jī),繼續(xù)模擬JTAG協(xié)議燒寫文件。
本發(fā)明優(yōu)點(diǎn)和積極效果為:
(1)本發(fā)明優(yōu)勢是通用性,實(shí)現(xiàn)了一根線一個(gè)程序適應(yīng)多家FPGA開發(fā)板。
(2)本發(fā)明優(yōu)勢是低成本,本發(fā)明所采用單片機(jī)價(jià)格遠(yuǎn)遠(yuǎn)低于專用下載線所采用的芯片價(jià)格,可以大大降低下載線的總體價(jià)格。
(3)本發(fā)明優(yōu)勢是擴(kuò)展性,固件存放在PC端,上位機(jī)軟件在啟動(dòng)時(shí)將固件加載到單片機(jī),因此只需更新PC端的固件文件便可以實(shí)現(xiàn)下載線功能的升級(jí)或擴(kuò)展。
附圖說明
圖1為現(xiàn)有技術(shù)中JTAG TAG狀態(tài)機(jī);
圖2為本發(fā)明下載線使用場景;
圖3為本發(fā)明工作流程;
圖4為本發(fā)明工作流程原理圖。
具體實(shí)施方式
下面結(jié)合附圖以及具體實(shí)施方式進(jìn)一步說明本發(fā)明。
如圖1所示,JTAG的核心為TAG狀態(tài)機(jī),在SHIFT-IR狀態(tài)寫入指令,然后再SHIFT-DR狀態(tài)讀取或者寫入數(shù)據(jù)。本發(fā)明中通過單片機(jī)控制JTAG接口時(shí)序,按照狀態(tài)跳轉(zhuǎn)圖,首先進(jìn)入SHIFT-IR狀態(tài),寫入控制指令(如讀取ID指令、寫入配置數(shù)據(jù)指令等),然后控制狀態(tài)機(jī)進(jìn)入SHIFT-DR狀態(tài),讀取或者寫入與控制指令對(duì)應(yīng)的數(shù)據(jù)(如芯片ID、配置數(shù)據(jù)等)。
如圖2所示,下載線一端通過USB接口連接到PC機(jī),另一端通過JTAG接口連接到FPGA的下載口,PC通過該下載線將配置文件燒寫到FPGA中。
如圖3與圖4所示,首先通過單片機(jī)讀取IDCODE,JTAG接口中的TMS信號(hào)置一,保持5個(gè)clock(實(shí)際操作為了確保復(fù)位,保持了10個(gè)clock),使?fàn)顟B(tài)機(jī)恢復(fù)到TEST-LOGIC-RESET。
控制TMS和clock,使?fàn)顟B(tài)機(jī)經(jīng)過Run-Test/Idle、Select-DR-Scan、Select-IR-Scan、Capture-IR跳轉(zhuǎn)到SHIFT-IR狀態(tài)。
設(shè)定TMS為0,控制TDI和clock,給狀態(tài)機(jī)發(fā)送讀IDCODE的指令,從最低位開始發(fā)送數(shù)據(jù)。
上述過程的最后一個(gè)周期讀入指令的最后一位0的同時(shí)跳轉(zhuǎn)狀態(tài)機(jī)狀態(tài),然后控制TMS和clock,使?fàn)顟B(tài)機(jī)經(jīng)過Exit1-IR、Updata-IR、Select-DR-Scan、Capture-IR來到Shift-DR狀態(tài)。
設(shè)定TMS為0,控制clock,從TDO中讀取32位數(shù)據(jù),返回給上位機(jī),得到IDCODE。
上位機(jī)獲得IDCODE后,按需轉(zhuǎn)換燒寫文件,發(fā)送給單片機(jī)控制JTAG TAG把數(shù)據(jù)燒寫進(jìn)FPGA中即可。