劉 劍,趙 赟
(中國船舶重工集團公司第七二三研究所,江蘇 揚州 225101)
現(xiàn)場可編程門陣列(FPGA)遠程調試由于不受調試線纜傳輸距離的限制,大量學者近年來對其在船舶、核實驗等工況環(huán)境下的應用展開了研究[1-4]。賽靈思虛擬電纜(XVC)[5]協(xié)議是一種基于TCP/IP的網絡通信協(xié)議,適用于FPGA遠程JTAG接口加載與調試,薛等[6]基于ARM單芯片實現(xiàn)了XVC協(xié)議的多目標FPGA菊花鏈式遠程網絡調試,但其JTAG加載性能較差。隨著可編程SoC和AXI總線標準的快速發(fā)展和應用,李[7]和薛[8]分別采用軟核和硬核可編程片上系統(tǒng)(SoPC)實現(xiàn)了AXI轉JTAG方式的XVC遠程調試,SoPC遠程調試系統(tǒng)相較于ARM進一步提升了遠程調試的加載性能。但目前XVC遠程調試方案在FPGA加載速度和效率方面普遍仍低于傳統(tǒng)JTAG線纜,這限制了XVC協(xié)議在大容量、多目標FPGA遠程調試和加載方面的進一步推廣和應用。
本文從基于SoPC的XVC協(xié)議性能優(yōu)化方面開展研究,提出一種改進型JTAG轉換器結構,引入AXI-DMA[9]和非阻塞IO傳輸機制,提高XVC協(xié)議的JTAG數(shù)據轉換速率,最終得到性能優(yōu)化的FPGA遠程調試系統(tǒng)。
基于ZYNQ硬核SoPC構建XVC遠程網絡調試系統(tǒng),系統(tǒng)結構如圖1所示。ZYNQ SoPC用于遠端目標FPGA的JTAG接口控制,其可編程邏輯(PL)部分用于構建XVC協(xié)議專用JTAG數(shù)據轉換器,具有邏輯加速的特性,并通過處理器系統(tǒng)(PS)的高性能(HP)從機AXI總線接口,JTAG-DMA轉換器主動地執(zhí)行高效率數(shù)據傳輸;在以ARM處理器為核心的PS部分,Linux內核模塊管理PL端JTAG轉換器的DMA讀寫驅動,XVC服務器軟件適用于操作JTAG-DMA設備進行多目標FPGA的JTAG信號同時傳輸;本地計算機與ZYNQ SoPC通過以太網-局域網互聯(lián),XVC客戶端以點對點或交換的方式連接遠端XVC服務器下特定端口,對指定的目標FPGA進行遠程加載與調試。
圖1 XVC遠程網絡調試系統(tǒng)結構
XVC遠程網絡調試系統(tǒng)適用于多目標FPGA、多設備節(jié)點場合下的多人協(xié)同遠程調試和開發(fā),可通過網絡長距離布線遠離調試設備環(huán)境。
提出的改進型JTAG轉換器結構如圖2所示,典型JTAG轉換器僅由JTAG移位器和控制邏輯組成,JTAG數(shù)據均由處理器通過AXI-Lite總線進行搬運。通過引入DMA引擎,提出的改進型JTAG轉換器將JTAG數(shù)據搬運事務轉由轉換器內部DMA邏輯進行控制。在JTAG數(shù)據傳輸效率方面,AXI總線位寬和突發(fā)傳輸長度可變,相比于AXI-Lite總線傳輸帶寬和傳輸效率更高;DMA引擎可以直接通過AXI總線讀寫共享內存,降低處理器在數(shù)據總線上的占用率,提高JTAG數(shù)據的傳輸速度,進而提高JTAG轉換器的轉換效率。
圖2 JTAG-DMA轉換器結構
改進型JTAG轉換器執(zhí)行1次JTAG數(shù)據轉換,其流程為控制字傳輸,JTAG數(shù)據傳輸和JTAG移位轉換,時序如圖3所示。改進型JTAG轉換器將控制字傳輸與JTAG數(shù)據傳輸分離,由控制字指定數(shù)據階段的目標/源地址、傳輸位長等參數(shù),并啟動JTAG轉換;在轉換過程中JTAG數(shù)據由DMA引擎進行AXI主動傳輸控制,JTAG移位器在啟動前將JTAGTMS和TDI數(shù)據由內存搬運至移位器中,完成JTAG移位后,回讀的JTAG TDO數(shù)據由DMA從移位器再搬運回指定內存地址。
圖3 JTAG轉換時序
AXI總線一次讀寫突發(fā)數(shù)不能超過256,同時其傳輸字節(jié)長度也不能超過4 kB尋址范圍,單次JTAG最大轉換比特數(shù)受限于AXI總線傳輸量??紤]到AXI總線讀寫時間會占用一部分單次轉換時間且該時間在高速JTAG下不可忽略,這影響到總JTAG轉化效率。在AXI-DMA與JTAG移位器之間加入讀寫緩沖區(qū),可將單次JTAG數(shù)據長傳輸微分為N個多次JTAG數(shù)據短傳輸,其讀寫時序如圖4所示。Rx表示AXI-DMA從指定內存地址取JTAG TMS和TDI數(shù)據,rx表示讀緩沖區(qū)內容更新,Sx表示第x次JTAG移位器移位,Wx表示JTAG回讀數(shù)據向寫緩沖區(qū)寫入,wx表示AXI-DMA將寫緩沖區(qū)的JTAG TDO數(shù)據寫入內存。讀寫緩沖區(qū)的引入使得單次JTAG長傳輸不受到AXI總線讀寫量的影響,可提高JTAG單次傳輸長度和JTAG數(shù)據轉換效率。
圖4 JTAG轉換器長傳輸讀寫時序
在第x次的JTAG短傳輸中,短傳輸開始時更新讀緩沖區(qū)rx,同時開始上一次短傳輸?shù)膶懭雡x-1和下一次短傳輸?shù)念A讀Rx+1,短傳輸過程中JTAG TDO的回讀數(shù)據直接寫入緩沖區(qū)Wx?;贏XI-DMA的改進型JTAG轉換器,單次轉換的JTAG比特轉換效率理論值為:
(1)
式中:Ns表示JTAG移位個數(shù);fTCK表示JTAG TCK頻率;ts為JTAG短傳輸轉換時間,ts=Ns/fTCK;tc表示AXI-Lite總線控制字傳輸時間;tR表示AXI總線讀時間;tw表示AXI總線寫時間。
當JTAG總移位數(shù)足夠大時,AXI總線讀寫時間在總轉換時間中僅為一次短傳輸讀寫時間,可忽略不計,理論JTAG效率接近100%;JTAG短傳輸移位時間必需大于AXI總線讀寫所需時間之和,以保證短傳輸過程中AXI總線數(shù)據正常傳輸。
在遠程網絡調試系統(tǒng)下,以太網傳輸可能產生網絡阻塞、丟包、并發(fā)等情況,XVC協(xié)議在傳輸包解析過程中會產生連續(xù)的IO請求。在內核模塊中JTAG轉換器設備驅動需實現(xiàn)非阻塞式讀寫,以用于應用層連續(xù)讀寫請求的及時響應,消除連續(xù)IO請求引起的外設讀寫阻塞行為。
考慮到JTAG-DMA轉換器的DMA傳輸機制,采用基于DMA環(huán)形緩沖區(qū)的非阻塞IO驅動模型,IO請求處理框架如圖5所示。DMA池是為JTAG-DMA轉換器分配的固定物理內存空間,由多個DMA塊(DMA Block,DB)組成,并為每一個DMA塊指定可讀、可寫和忙屬性,對應內核中狀態(tài)機跳轉和JTAG轉換器控制字管理。產生讀寫請求時,首先檢查DMA塊是否可讀可寫,寫操作時將JTAG數(shù)據拆分并重新打包拷貝至DMA塊,讀操作時將DMA塊數(shù)據拷貝出來組包為JTAG回讀數(shù)據,并更新DMA塊屬性,立即結束讀寫流程。
圖5 JTAG-DMA驅動IO請求處理框架
JTAG-DMA轉換器內核設備驅動的非阻塞傳輸機制適用于多目標JTAG設備、連續(xù)IO的應用條件,提高XVC協(xié)議JTAG數(shù)據包轉換效率和傳輸可靠性。
根據提出的XVC協(xié)議優(yōu)化方法,搭建FPGA遠程調試系統(tǒng),并采用課題組研制的預處理板[10]實施FPGA位流加載實驗。測試軟件平臺為Vivado 2019.1,圖6展示了預處理板ZYNQ SoPC硬件平臺下設計的JTAG-DMA IP核;測試目標FPGA芯片為Xilinx Virtx7 690 T,并使用JTAG線纜(Xilinx Platform Cable II和Digilent HS3)加載同一位流文件進行測試,測試結果如表1所示。實際JTAG比特效率為:
表1 位流文件加載測試結果
圖6 JTAG-DMA IP核
(2)
式中:SBF表示目標FPGA比特流文件大?。籺load表示實際加載時間,由Vivado控制臺日志信息得到。
本文提出了一種基于AXI-DMA的改進型JTAG轉換器結構,并引入基于DMA環(huán)形緩沖區(qū)的非阻塞IO驅動模型,用于優(yōu)化XVC協(xié)議JTAG轉換效率。實驗結果表明,優(yōu)化后XVC協(xié)議的加載性能相比于典型XVC遠程調試系統(tǒng)有巨大的提升,其JTAG比特效率超過或可達到JTAG線纜的性能。