DSP和JTAG接口的FPGA系統(tǒng)在線編程方法
引言
本文引用地址:http://www.ex-cimer.com/article/201610/308379.htmDSP+FPGA廣泛地應(yīng)用于各種數(shù)字信息處理系統(tǒng)中。在某些特殊的應(yīng)用場(chǎng)合中,往往需要系統(tǒng)在高溫的環(huán)境下工作,而系統(tǒng)功耗又不明顯增加。雖然一般基于SRAM工藝的FPGA的顯現(xiàn)配置方法已經(jīng)多種多樣,但使用的基于SRAM工藝的FPGA高溫性能較差,難以滿足高溫、低功耗系統(tǒng)的需要。Actel公司基于Flash工藝的FPGA是為軍工以及宇航設(shè)計(jì)的器件,完全能夠勝任高溫的需要。一般的FPGA都具有上電功耗、配置功耗、靜態(tài)功耗和動(dòng)態(tài)功耗4種,而Actel基于Flash的FPGA由于上電不需要一個(gè)很大的啟動(dòng)電流,并且掉電非易失,不需要配置過程,所以只有靜態(tài)功耗和動(dòng)態(tài)功耗,沒有上電功耗和配置功耗。FPGA在高溫下具有更低功耗的優(yōu)勢(shì)。
本文根據(jù)Actel公司的產(chǎn)品手冊(cè)及相關(guān)文件,設(shè)計(jì)了一種由DSP控制實(shí)現(xiàn)FPGA在線編程的方案,使Actel的FPGA能應(yīng)用于需要在線升級(jí)的應(yīng)用場(chǎng)合中,充分發(fā)揮其高溫高可靠性、低功耗的優(yōu)勢(shì)。當(dāng)FPGA需要在線編程時(shí),只需通過PC下傳FPGA配置命令給DSP,DSP即可把PC下傳的FPGA的配置數(shù)據(jù)通過JTAG寫入FPGA完成在線升級(jí)。該方法的優(yōu)點(diǎn)在于:無需額外配置芯片(DSP在不需要給FPGA進(jìn)行在線升級(jí)時(shí),可進(jìn)行其他工作),簡(jiǎn)單可靠,在低功耗和高溫的應(yīng)用中顯得更為重要。
1 方案設(shè)計(jì)
圖1所示為整體結(jié)構(gòu)設(shè)計(jì)方案,由PC、UART接口、DSP、RAM存儲(chǔ)器、FPGA以及相應(yīng)的外圍輔助電路構(gòu)成。其中TMS320F28335芯片是TI公司2000系列的DSP芯片,A3P250為Actel公司ProASIC3系列的FPGA芯片,RAM芯片為IS61LV51216。DSP的4個(gè)GPIO與FPGA的JTAG接口相連,而DSP通過串口轉(zhuǎn)USB與PC通信。這些芯片都能在125℃環(huán)境下正常穩(wěn)定地工作。其中A3P250一般的靜態(tài)待機(jī)電流僅幾mA。
系統(tǒng)基本實(shí)現(xiàn)步驟為:
①基于VC編寫文件轉(zhuǎn)換軟件,實(shí)現(xiàn)FPGA的程序代碼(.dat文件)轉(zhuǎn)換成2位十六進(jìn)制的數(shù)據(jù),并存儲(chǔ)在txt文檔中。
②PC發(fā)送下載代碼指令至DSP,通知DSP有代碼需要下傳。之后就可以把FPGA程序代碼(txt文檔)以十六進(jìn)制數(shù)據(jù)發(fā)送給DSP,DSP將收到2位十六進(jìn)制數(shù)據(jù)存至外部RAM中。每個(gè)地址存兩個(gè)2位十六進(jìn)制數(shù)據(jù),先存低位,再存高位(存入RAM是由于FPGA的程序代碼量比較大)。
③DSP對(duì)下載的代碼進(jìn)行CRC校驗(yàn),回傳調(diào)試信息。若代碼CRC校驗(yàn)成功,PC就可以發(fā)送編程指令通知DSP給FPGA編程。
④DSP控制FPGA JTAG實(shí)現(xiàn)讀取FPGA設(shè)備的ID,驗(yàn)證是否與配置數(shù)據(jù)中的ID一致。成功,則開始FPGA編程。DSP實(shí)時(shí)回傳編程的調(diào)試信息給PC,方便觀察調(diào)試。編程成功之后,F(xiàn)PGA即可正常運(yùn)行。
由于串口傳輸過程只需要兩根信號(hào)線,即傳輸線TX以及接收線RX,故傳輸協(xié)議簡(jiǎn)單,且較好地避免了JTAG距離的限制。同時(shí),系統(tǒng)在需要對(duì)DSP的配置控制功能進(jìn)行升級(jí)時(shí),也可以通過串口實(shí)現(xiàn)。
2 方案實(shí)現(xiàn)
2.1 系統(tǒng)硬件設(shè)計(jì)和實(shí)現(xiàn)
根據(jù)方案設(shè)計(jì),配置控制電路如圖2所示。在本系統(tǒng)中FPGA的JTAG口與DSP的GPIO相連,DSP的SCIA接口經(jīng)RS485收發(fā)器和串口轉(zhuǎn)USB芯片連接至PC,實(shí)現(xiàn)指令下傳至DSP和調(diào)試信息上傳至PC。DSP在外部接口(XINTF)的ZONE7區(qū)(共3個(gè)區(qū)域,另兩個(gè)為ZONE0、ZONE6)外部擴(kuò)展1片512 KB×16的外部RAM,用以存儲(chǔ)FPGA的配置碼流。F28335的XINTF區(qū)域可以通過編程來配置特定的等待狀態(tài)數(shù),選通信號(hào)的建立和保持時(shí)間,而且讀寫訪問可以獨(dú)立配置。當(dāng)片選信號(hào)被拉低時(shí),用戶可以訪問該區(qū)域。如當(dāng)程序訪問0x00300000時(shí),就會(huì)產(chǎn)生外部地址0x00000和ZONE7區(qū)片選信號(hào)(
)。另外,需特別注意的是,在編程電壓VPUMP和地之間需接0.01μF和0.33%20%20μF濾波電容。不接,可能會(huì)導(dǎo)致JTAG邊界掃描接入失敗等問題。通過PC下傳下載代碼指令,DSP接收FPGA的配置碼流并保存在外部RAM,之后PC就可以下傳指令,命令DSP給FPGA再編程。
2.2 系統(tǒng)軟件設(shè)計(jì)和實(shí)現(xiàn)
2.2.1 DerectC介紹和移植
Actel公司基于Flash的FPGA只能通過JTAG接口,而JTAG使用的距離較近,程序升級(jí)必須拆卸系統(tǒng)封裝,較為麻煩,且容易造成零部件損壞。Derectc3.0是Actel提供的一系列C源程序代碼,通過移植它到不同的微處理器,將微處理器通用I/O(需支持LVTTL電平)連接至FPGA的JTAG接口,實(shí)現(xiàn)FPGA的擦除或再編程。DerectC不包含任何與應(yīng)用或者設(shè)備相關(guān)的信息,它只負(fù)責(zé)解析配置文件中的內(nèi)容,在JTAG接口上產(chǎn)生用于配置的二進(jìn)制數(shù)據(jù)流并讀取反饋數(shù)據(jù),適用于IGL002、SmartFusion2、ProASIC3、IGLOO、Smart Fusion和Fusion系列。DerectC程序框圖如圖3所示,DerectC需使用Libero生成的.dat格式的FPGA配置文件,文件需要LiberoV8.5以上才能獲得。在Libero SoC v11.1中,只需點(diǎn)擊gene rate programming data選項(xiàng)即可獲得。在使用DerectC時(shí),只需對(duì)它作一些修改,增加一些必要的API函數(shù),然后添加至C工程中即可。
把DerectC移植到DSP中,主要經(jīng)過以下步驟:
①針對(duì)使用的FPGA系列,添加和去除預(yù)處理語句,去除不必要的代碼;
②將JTAG信號(hào)映射到具體的DSP硬件引腳;
③添加JTAG輸入輸出函數(shù)和配置文件數(shù)據(jù)塊讀取函數(shù)等必要的API函數(shù)。
對(duì)于IGLOO2、SmartFusion2、IGLOO、Smart Fusion和Fusion系列的FPGA,移植過程是完全一樣的。移植完成后,對(duì)于以上提到的所有Actel的FPGA芯片都可以實(shí)現(xiàn)在線編程,只是FPGA的配置電路中濾波電容的個(gè)數(shù)可能稍有差異。
另外,DerectC還支持FPGA的菊花鏈編程。在移植DerectC時(shí),只需設(shè)置好在邊界掃描鏈中IR和DR的長(zhǎng)度和額外支持菊花鏈的預(yù)編譯指令。此時(shí)只需一塊DSP就可以依次完成多塊FPGA的在線升級(jí),大大節(jié)省了硬件開支。
2.2.2 配置文件格式及轉(zhuǎn)換
A3P系列Libero產(chǎn)生的配置文件包含3個(gè)方面的內(nèi)容:
①頭塊:包含二進(jìn)制文件的識(shí)別信息(軟件版本號(hào)等)、數(shù)據(jù)塊的數(shù)目、總的字節(jié)長(zhǎng)度、目標(biāo)設(shè)備ID和DerectC識(shí)別所支持的塊所需的標(biāo)志位等,共69字節(jié)。
②數(shù)據(jù)查找表:在DerectC中使用到的各數(shù)據(jù)塊在文件的相對(duì)起始地址以及長(zhǎng)度,每個(gè)數(shù)據(jù)占5字節(jié)。
③數(shù)據(jù)塊:二進(jìn)制數(shù)據(jù)碼流,用于給FPGA在線編程的主要數(shù)據(jù),總長(zhǎng)度以字節(jié)為單位,最后包含總的data文件的CRC校驗(yàn)碼。
方便下傳數(shù)據(jù),基于VC把整個(gè)二進(jìn)制data文件轉(zhuǎn)換成2位十六進(jìn)制的數(shù)據(jù)流并存儲(chǔ)在TXT文檔中,同時(shí)在文件的頭部加入表明整個(gè)data文件長(zhǎng)度的4字節(jié),以方便PC指示DSP下傳的數(shù)據(jù)長(zhǎng)度。具體為VC以二進(jìn)制的形式打開配置文件,讀取其長(zhǎng)度寫入TXT文檔,并每次讀取8位二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為2位十六進(jìn)制數(shù)據(jù)。DSP把收到的數(shù)據(jù)依次存在DSP的外部RAM(每個(gè)地址存兩個(gè)字節(jié)),先存低位,再存高位。
2.2.3 配置程序數(shù)據(jù)的下載實(shí)現(xiàn)
本設(shè)計(jì)PC通過USB轉(zhuǎn)串口向DSP發(fā)送指令,以指示DSP需要進(jìn)行什么樣的操作。表1為常用的幾個(gè)串口指令,指令長(zhǎng)度都為2字節(jié)。
DSP的主程序流程圖如圖4所示。DSP串口中斷等待PC下傳FPGA在線編程指令,對(duì)收到的FPGA配置數(shù)據(jù)流進(jìn)行CRC校驗(yàn),保證程序的完整性。之后DSP接入FPGA邊界掃描鏈,在JTAG每個(gè)TCK上升沿讀取TDI的數(shù)據(jù)或向TD0輸出1位數(shù)據(jù),在DSP把IR操作數(shù)內(nèi)容寫入IR,F(xiàn)PGA會(huì)自動(dòng)把DR放入邊界掃描鏈,進(jìn)行FPGA的數(shù)據(jù)讀出與寫入,從而實(shí)現(xiàn)讀取FPGA設(shè)備ID與配置數(shù)據(jù)流中的設(shè)備ID匹配、FPGA的擦除、配置文件中的數(shù)據(jù)塊寫入FPGA等操作,完成在線升級(jí)。
3 試驗(yàn)結(jié)果分析
為了確保配置控制方法的可靠性,通過串口往DSP下傳經(jīng)過VC轉(zhuǎn)換的FPGA配置文件,DSP接收到全部配置文件后會(huì)進(jìn)行CRC校驗(yàn)。檢驗(yàn)的結(jié)果通過串口實(shí)時(shí)回傳至PC,保證了配置文件的完整性。之后DSP讀取FPGA的設(shè)備ID,與配置文件的ID進(jìn)行對(duì)比,確保目標(biāo)設(shè)備的正確性,結(jié)果同樣通過PC顯示出來。
在上述驗(yàn)證通過的情況下,DSP開始對(duì)FPGA進(jìn)行擦除操作,之后向FPGA中燒寫跑馬燈配置碼流數(shù)據(jù)。和Actel的FlashPRO3編程器一樣,燒寫完成之后會(huì)對(duì)編程結(jié)果進(jìn)行驗(yàn)證,確保燒寫的正確性。以上過程中,DSP串口會(huì)返回調(diào)試過程信息給PC,以表明程序燒寫進(jìn)程。整個(gè)過程完成后,LED燈按預(yù)期程序設(shè)計(jì)有規(guī)律地閃爍,無需重新啟動(dòng)。在實(shí)驗(yàn)系統(tǒng)環(huán)境中,一次配置的時(shí)間約為97 s,與使用Actel的FlashPRO3編程器的時(shí)間相差無幾,配置時(shí)間很短。
結(jié)語
本設(shè)計(jì)實(shí)現(xiàn)了一種基于DSP GPIO口驅(qū)動(dòng)FPGA的JTAG接口,以及串口對(duì)Actel FPGA進(jìn)行系統(tǒng)的在線編程。不僅適用于某一型號(hào)的Actel的FPGA,而且適用于IGLOO2、Smart Fus ion2、ProASIC3、IGLOO、Smart Fusion和Fusion系列,適用范圍很廣。另外,該設(shè)計(jì)簡(jiǎn)單,只需將DSP的GPIO與FPGA的JTAG中4個(gè)必要的引腳相連,串口下傳指令和FPGA配置數(shù)據(jù),無需額外的配置芯片,避免了JTAG距離的限制,且采用的芯片完全滿足高溫、低功耗的要求,具有高速高、可靠性等優(yōu)點(diǎn),方便多任務(wù)的切換。使用本系統(tǒng)無需重啟就可以動(dòng)態(tài)地更新FPGA應(yīng)用,使得Actel的FPGA應(yīng)用能不受在線升級(jí)的距離困擾。
評(píng)論