劉 劍,趙 赟
(中國船舶重工集團公司第七二三研究所,江蘇 揚州 225101)
現場可編程門陣列(FPGA)遠程調試由于不受調試線纜傳輸距離的限制,大量學者近年來對其在船舶、核實驗等工況環境下的應用展開了研究[1-4]。賽靈思虛擬電纜(XVC)[5]協議是一種基于TCP/IP的網絡通信協議,適用于FPGA遠程JTAG接口加載與調試,薛等[6]基于ARM單芯片實現了XVC協議的多目標FPGA菊花鏈式遠程網絡調試,但其JTAG加載性能較差。隨著可編程SoC和AXI總線標準的快速發展和應用,李[7]和薛[8]分別采用軟核和硬核可編程片上系統(SoPC)實現了AXI轉JTAG方式的XVC遠程調試,SoPC遠程調試系統相較于ARM進一步提升了遠程調試的加載性能。但目前XVC遠程調試方案在FPGA加載速度和效率方面普遍仍低于傳統JTAG線纜,這限制了XVC協議在大容量、多目標FPGA遠程調試和加載方面的進一步推廣和應用。
本文從基于SoPC的XVC協議性能優化方面開展研究,提出一種改進型JTAG轉換器結構,引入AXI-DMA[9]和非阻塞IO傳輸機制,提高XVC協議的JTAG數據轉換速率,最終得到性能優化的FPGA遠程調試系統。
基于ZYNQ硬核SoPC構建XVC遠程網絡調試系統,系統結構如圖1所示。ZYNQ SoPC用于遠端目標FPGA的JTAG接口控制,其可編程邏輯(PL)部分用于構建XVC協議專用JTAG數據轉換器,具有邏輯加速的特性,并通過處理器系統(PS)的高性能(HP)從機AXI總線接口,JTAG-DMA轉換器主動地執行高效率數據傳輸;在以ARM處理器為核心的PS部分,Linux內核模塊管理PL端JTAG轉換器的DMA讀寫驅動,XVC服務器軟件適用于操作JTAG-DMA設備進行多目標FPGA的JTAG信號同時傳輸;本地計算機與ZYNQ SoPC通過以太網-局域網互聯,XVC客戶端以點對點或交換的方式連接遠端XVC服務器下特定端口,對指定的目標FPGA進行遠程加載與調試。

圖1 XVC遠程網絡調試系統結構
XVC遠程網絡調試系統適用于多目標FPGA、多設備節點場合下的多人協同遠程調試和開發,可通過網絡長距離布線遠離調試設備環境。
提出的改進型JTAG轉換器結構如圖2所示,典型JTAG轉換器僅由JTAG移位器和控制邏輯組成,JTAG數據均由處理器通過AXI-Lite總線進行搬運。通過引入DMA引擎,提出的改進型JTAG轉換器將JTAG數據搬運事務轉由轉換器內部DMA邏輯進行控制。在JTAG數據傳輸效率方面,AXI總線位寬和突發傳輸長度可變,相比于AXI-Lite總線傳輸帶寬和傳輸效率更高;DMA引擎可以直接通過AXI總線讀寫共享內存,降低處理器在數據總線上的占用率,提高JTAG數據的傳輸速度,進而提高JTAG轉換器的轉換效率。

圖2 JTAG-DMA轉換器結構
改進型JTAG轉換器執行1次JTAG數據轉換,其流程為控制字傳輸,JTAG數據傳輸和JTAG移位轉換,時序如圖3所示。改進型JTAG轉換器將控制字傳輸與JTAG數據傳輸分離,由控制字指定數據階段的目標/源地址、傳輸位長等參數,并啟動JTAG轉換;在轉換過程中JTAG數據由DMA引擎進行AXI主動傳輸控制,JTAG移位器在啟動前將JTAGTMS和TDI數據由內存搬運至移位器中,完成JTAG移位后,回讀的JTAG TDO數據由DMA從移位器再搬運回指定內存地址。

圖3 JTAG轉換時序
AXI總線一次讀寫突發數不能超過256,同時其傳輸字節長度也不能超過4 kB尋址范圍,單次JTAG最大轉換比特數受限于AXI總線傳輸量。考慮到AXI總線讀寫時間會占用一部分單次轉換時間且該時間在高速JTAG下不可忽略,這影響到總JTAG轉化效率。在AXI-DMA與JTAG移位器之間加入讀寫緩沖區,可將單次JTAG數據長傳輸微分為N個多次JTAG數據短傳輸,其讀寫時序如圖4所示。Rx表示AXI-DMA從指定內存地址取JTAG TMS和TDI數據,rx表示讀緩沖區內容更新,Sx表示第x次JTAG移位器移位,Wx表示JTAG回讀數據向寫緩沖區寫入,wx表示AXI-DMA將寫緩沖區的JTAG TDO數據寫入內存。讀寫緩沖區的引入使得單次JTAG長傳輸不受到AXI總線讀寫量的影響,可提高JTAG單次傳輸長度和JTAG數據轉換效率。

圖4 JTAG轉換器長傳輸讀寫時序
在第x次的JTAG短傳輸中,短傳輸開始時更新讀緩沖區rx,同時開始上一次短傳輸的寫入wx-1和下一次短傳輸的預讀Rx+1,短傳輸過程中JTAG TDO的回讀數據直接寫入緩沖區Wx。基于AXI-DMA的改進型JTAG轉換器,單次轉換的JTAG比特轉換效率理論值為:
(1)
式中:Ns表示JTAG移位個數;fTCK表示JTAG TCK頻率;ts為JTAG短傳輸轉換時間,ts=Ns/fTCK;tc表示AXI-Lite總線控制字傳輸時間;tR表示AXI總線讀時間;tw表示AXI總線寫時間。
當JTAG總移位數足夠大時,AXI總線讀寫時間在總轉換時間中僅為一次短傳輸讀寫時間,可忽略不計,理論JTAG效率接近100%;JTAG短傳輸移位時間必需大于AXI總線讀寫所需時間之和,以保證短傳輸過程中AXI總線數據正常傳輸。
在遠程網絡調試系統下,以太網傳輸可能產生網絡阻塞、丟包、并發等情況,XVC協議在傳輸包解析過程中會產生連續的IO請求。在內核模塊中JTAG轉換器設備驅動需實現非阻塞式讀寫,以用于應用層連續讀寫請求的及時響應,消除連續IO請求引起的外設讀寫阻塞行為。
考慮到JTAG-DMA轉換器的DMA傳輸機制,采用基于DMA環形緩沖區的非阻塞IO驅動模型,IO請求處理框架如圖5所示。DMA池是為JTAG-DMA轉換器分配的固定物理內存空間,由多個DMA塊(DMA Block,DB)組成,并為每一個DMA塊指定可讀、可寫和忙屬性,對應內核中狀態機跳轉和JTAG轉換器控制字管理。產生讀寫請求時,首先檢查DMA塊是否可讀可寫,寫操作時將JTAG數據拆分并重新打包拷貝至DMA塊,讀操作時將DMA塊數據拷貝出來組包為JTAG回讀數據,并更新DMA塊屬性,立即結束讀寫流程。

圖5 JTAG-DMA驅動IO請求處理框架
JTAG-DMA轉換器內核設備驅動的非阻塞傳輸機制適用于多目標JTAG設備、連續IO的應用條件,提高XVC協議JTAG數據包轉換效率和傳輸可靠性。
根據提出的XVC協議優化方法,搭建FPGA遠程調試系統,并采用課題組研制的預處理板[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比特流文件大小;tload表示實際加載時間,由Vivado控制臺日志信息得到。
本文提出了一種基于AXI-DMA的改進型JTAG轉換器結構,并引入基于DMA環形緩沖區的非阻塞IO驅動模型,用于優化XVC協議JTAG轉換效率。實驗結果表明,優化后XVC協議的加載性能相比于典型XVC遠程調試系統有巨大的提升,其JTAG比特效率超過或可達到JTAG線纜的性能。