薛 乾 曾 云 張 杰
基于XVC網(wǎng)絡(luò)協(xié)議的多FPGA遠(yuǎn)程更新與調(diào)試
薛 乾1,2曾 云1張 杰2
1(湖南大學(xué) 物理與微電子科學(xué)學(xué)院 長(zhǎng)沙 410082)
2(中國(guó)科學(xué)院高能物理研究所 核探測(cè)與核電子學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室 北京 100049)
同步輻射光源硅像素探測(cè)器是面向北京先進(jìn)光源對(duì)X射線探測(cè)的重大技術(shù)需求所研發(fā)的新型儀器。該探測(cè)器處于輻射環(huán)境中,且多個(gè)前端電子學(xué)讀出板被放置在密封的冷卻容器中。為在不打開(kāi)冷卻容器的情況下,脫離專用的USB-JTAG (Universal serial bus - joint test action group)下載電纜對(duì)現(xiàn)場(chǎng)可編程門陣列(Field programmable gate array, FPGA)進(jìn)行遠(yuǎn)端升級(jí),本文提出了一種基于XVC (Xilinx visual cable)協(xié)議,通過(guò)以太網(wǎng),利用ARM微控制器控制FPGA的JTAG接口對(duì)其進(jìn)行遠(yuǎn)程更新與調(diào)試的方法。該方案附加電路少,易于拓展,同時(shí)也提高了更新可靠性。
硅像素探測(cè)器,XVC協(xié)議,ARM,JTAG接口,TCP/IP,遠(yuǎn)程更新與調(diào)試
同步輻射光源因其能量連續(xù)、準(zhǔn)直性好、亮度高等優(yōu)異性能,成為人類在微觀領(lǐng)域認(rèn)知物質(zhì)結(jié)構(gòu)、開(kāi)展功能研究的重要工具和手段[1]。同步輻射裝置也成為當(dāng)前應(yīng)用最廣泛的大型多學(xué)科應(yīng)用平臺(tái)。為適應(yīng)同步輻射裝置的發(fā)展對(duì)探測(cè)器性能的高要求,并針對(duì)北京先進(jìn)光源的實(shí)際需求,中國(guó)科學(xué)院高能物理研究所設(shè)計(jì)研發(fā)了X射線硅像素陣列探測(cè)器。
前端探測(cè)器包含6個(gè)前端模塊,每個(gè)模塊對(duì)應(yīng)一個(gè)傳感器以及8個(gè)讀出ASIC芯片,芯片輸出信號(hào)通過(guò)電平轉(zhuǎn)換送到前端數(shù)據(jù)處理現(xiàn)場(chǎng)可編程門陣列(Field programmable gate array, FPGA)。FPGA對(duì)信號(hào)進(jìn)行緩沖驗(yàn)證,匯總處理后通過(guò)光纖傳輸?shù)胶蠖薉AQ (Data acquisition)系統(tǒng)。圖1為前端數(shù)據(jù)處理框圖。
圖1 前端數(shù)據(jù)處理框圖Fig.1 Flowchart of front-end data processing.
由于整個(gè)前端探測(cè)器模塊放置在密封的冷卻容器中,而且整個(gè)探測(cè)器處在輻射環(huán)境中,方便可靠的FPGA遠(yuǎn)程更新與調(diào)試方案成為電子學(xué)系統(tǒng)設(shè)計(jì)的重要方面。顯然傳統(tǒng)的基于USB-JTAG (Universal serial bus - joint test action group)更新FPGA的方式已不再適用。
目前國(guó)內(nèi)外出現(xiàn)的FPGA遠(yuǎn)程更新的方案基本分為兩大類[2]:一類是針對(duì)早期的內(nèi)部沒(méi)有專用遠(yuǎn)程升級(jí)電路的FPGA器件,采用單片機(jī)CPLD (Complex Programmable Logic Device)、DSP (Digital Signal Processor)、ARM (Acorn RISC Machine)等作為輔助配置器件[3],配合外部Flash和以太網(wǎng)芯片來(lái)實(shí)現(xiàn),這些方案靈活性高但設(shè)計(jì)復(fù)雜且提高了成本;另一類是針對(duì)最新推出的FPGA器件,其自帶了遠(yuǎn)程升級(jí)內(nèi)核或邏輯塊,只要結(jié)合外部數(shù)據(jù)配置通道,即可實(shí)現(xiàn)遠(yuǎn)程更新,該方案附加電路少,節(jié)省硬件資源,但卻占用了FPGA的內(nèi)部邏輯資源,而且只適用特定型號(hào)的FPGA。另外,上述兩類方案均無(wú)法實(shí)現(xiàn)對(duì)FPGA的遠(yuǎn)程調(diào)試,還需要在PC端開(kāi)發(fā)用于遠(yuǎn)程更新的TCP/IP軟件,增加了設(shè)計(jì)復(fù)雜度。
考慮到基于JTAG的下載方式在FPGA配置、Flash PROM配置、軟/硬件調(diào)試以及硬件測(cè)試方面的重要用途,本文設(shè)計(jì)了一種基于XVC (Xilinx visual cable)協(xié)議,通過(guò)以太網(wǎng),使用單芯片ARM微控制器控制FPGA的JTAG接口進(jìn)行遠(yuǎn)程更新調(diào)試的方案。該方案操作簡(jiǎn)單,無(wú)需額外開(kāi)發(fā)TCP/IP軟件,基于網(wǎng)絡(luò)的通信能夠保證足夠遠(yuǎn)距離的靈活的可靠數(shù)據(jù)傳輸。還能對(duì)FPGA進(jìn)行遠(yuǎn)程ChipScope調(diào)試。同時(shí),通過(guò)簡(jiǎn)單的JTAG鏈路連接,可以同時(shí)完成多片F(xiàn)PGA的升級(jí)與調(diào)試[4]。
在本設(shè)計(jì)中,ARM微控制器通過(guò)模擬JTAG接口的時(shí)序?qū)PGA進(jìn)行配置。針對(duì)多片F(xiàn)PGA進(jìn)行遠(yuǎn)程更新的系統(tǒng)框圖如圖2。
圖2 系統(tǒng)模塊框圖Fig.2 Block diagram of system structure.
系統(tǒng)硬件電路主要由ARM微控制器、JTAG鏈路模塊、LVDS (Low-voltage differential signaling)模塊組成。ARM選擇Wiznet公司的W7200開(kāi)發(fā)板作為配置控制器,一端通過(guò)網(wǎng)絡(luò)與PC建立連接,另一端通過(guò)外設(shè)的GPIO (General purpose input output)傳輸JTAG配置時(shí)序。LVDS模塊負(fù)責(zé)將JTAG單端信號(hào)轉(zhuǎn)換為低壓差分對(duì)信號(hào),一對(duì)一發(fā)送給待更新的FPGA。多片待更新FPGA的JTAG鏈通過(guò)另外一塊FPGA開(kāi)發(fā)板上的主控FPGA芯片XC6SLX45的內(nèi)部邏輯來(lái)實(shí)現(xiàn),板上用9個(gè)接插件引出FPGA的9組I/O,分別連接W7200和8個(gè)LVDS模塊。其中, LVDS模塊和主控FPGA開(kāi)發(fā)板以子母板的形式連接。
遠(yuǎn)程更新時(shí),PC端使用iMPACT將包含配置文件的指令通過(guò)網(wǎng)絡(luò)發(fā)送給W7200,W7200根據(jù)XVC協(xié)議接收指令并模擬產(chǎn)生JTAG時(shí)序,主控FPGA接收該時(shí)序并通過(guò)JTAG鏈路送入待配置FPGA,完成最終配置。
W7200是Wiznet公司推出的一款單芯片集成了硬件TCP/IP協(xié)議棧的ARM Cortex-M3微處理器[5]。內(nèi)有20 KB的SRAM和128 KB的Flash以及32 KB的以太網(wǎng)RX/TX緩存,具有最高72 MHz的工作頻率,有足夠的能力進(jìn)行數(shù)據(jù)處理。硬件TCP/IP協(xié)議支持 TCP、UDP、IPv4、ICMP、ARP、IGMP、PPPoE和以太網(wǎng),這些協(xié)議在各種應(yīng)用領(lǐng)域已經(jīng)得到多年的驗(yàn)證。其結(jié)構(gòu)如圖3所示。
圖3 W7200結(jié)構(gòu)框圖Fig.3 Schematic diagram of W7200 processor.
W7200的內(nèi)核采用32位的STM32F103CB,通過(guò)SPI與W5200連接,外部拓展40個(gè)引腳,負(fù)責(zé)提供該系統(tǒng)的GPIO、I2C、SPI、USB以及USART接口,集成度高卻具有很低的功耗。W5200為該公司推出的全硬件TCP/IP芯片,負(fù)責(zé)為該系統(tǒng)提供各類硬件TCP/IP協(xié)議、MAC以及PHY,支持8個(gè)獨(dú)立的socket同時(shí)工作。使用該芯片的優(yōu)勢(shì)是通過(guò)簡(jiǎn)單的socket編程,用戶便可以輕松實(shí)現(xiàn)所需的以太網(wǎng)通信,而不必要處理復(fù)雜TCP/IP協(xié)議棧控制。
2.1 JTAG工作方式
JTAG是符合IEEE 1149.1標(biāo)準(zhǔn)的國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議[6],主要用于各類芯片的內(nèi)部測(cè)試和配置?,F(xiàn)在大多數(shù)高級(jí)器件(包括FPGA、MCU、DSP以及CPU等)都支持JTAG協(xié)議。標(biāo)準(zhǔn)的JTAG接口是4線接口:模式選擇(TMS)、時(shí)鐘(TCK)、數(shù)據(jù)輸入(TDI)以及數(shù)據(jù)輸出(TDO)信號(hào)線。
JTAG工作原理是在器件內(nèi)部定義一個(gè)TAP (Test Access Port)測(cè)試訪問(wèn)端口,外部控制器通過(guò)TAP可以訪問(wèn)芯片提供的所有數(shù)據(jù)寄存器和指令寄存器。使用JTAG方式配置FPGA時(shí),通過(guò)TCK和TMS的值,選定一個(gè)需要訪問(wèn)的數(shù)據(jù)/指令寄存器,將其連接到TDI和TDO之間。然后由TCK驅(qū)動(dòng),通過(guò)TDI,把需要的數(shù)據(jù)/指令輸入到選定的數(shù)據(jù)/指令寄存器中,同時(shí)把對(duì)應(yīng)的寄存器中的值通過(guò)TDO讀出來(lái)。JTAG接口在線編程和調(diào)試的特征改變了傳統(tǒng)生產(chǎn)流程,配置效率高,是項(xiàng)目研發(fā)階段必不可少的配置模式。
2.2 XVC協(xié)議
XVC協(xié)議是Xilinx公司推出的一款基于TCP/IP的虛擬線纜協(xié)議[7],它可發(fā)揮類似于 JTAG線纜的作用,允許用戶無(wú)需使用USB線纜而是通過(guò)網(wǎng)絡(luò)訪問(wèn)Xilinx FPGA的JTAG接口并對(duì)其進(jìn)行高效率的遠(yuǎn)程更新與調(diào)試。該協(xié)議還具有擴(kuò)展性,可進(jìn)行安全連接,允許用戶通過(guò)編程將其實(shí)現(xiàn)于不同的平臺(tái)。
XVC協(xié)議內(nèi)容簡(jiǎn)單,使用方便,其基本內(nèi)容可總結(jié)為如下三條指令:
1) getinfo:
該指令用于獲取XVC服務(wù)的版本。當(dāng)接收到“getinfo:”指令時(shí),該服務(wù)將會(huì)返回如下的字符串:“xvcServer_v1.0;<xvc_vector_len> ”,其中,<xvc_vector_len>代表了該協(xié)議一次能移位發(fā)送的字節(jié)向量的最大長(zhǎng)度。
2) shift:[num bits][tms vector][tdi vector]
該指令表示分別以字節(jié)向量TMS vector和TDI vector的形式發(fā)送num_bits個(gè)二進(jìn)制數(shù)據(jù)。其中,num_bits是一個(gè)小端格式的整數(shù),TMS vector和 TDI vector代表所要發(fā)送的TMS和TDI的二進(jìn)制數(shù)據(jù)。發(fā)送過(guò)程中,0字節(jié)的0比特位首先被發(fā)送出去,字節(jié)向量的長(zhǎng)度會(huì)根據(jù)num_bits的值向上補(bǔ)齊成最接近的字節(jié)數(shù)。該指令最終應(yīng)該返回與TMS vector向量同樣長(zhǎng)度的字節(jié)向量TDO vector,代表從JTAG接口返回的所有的TDO。同樣也是0字節(jié)的0比特位首先被接收回來(lái)。
3) settck:[period in ns]
該指令表示將該協(xié)議通信的時(shí)鐘周期設(shè)置為period 納秒。period同樣是一個(gè)小端格式的整數(shù)值。使用該指令最終應(yīng)該返回實(shí)際的周期值。
iMPACT和ChipScope通過(guò)網(wǎng)絡(luò)訪問(wèn)FPGA的JTAG接口的基本原理就是基于XVC協(xié)議發(fā)送shift指令,實(shí)現(xiàn)JTAG-Client的功能[8]。因此只要ARM微控制器根據(jù)shift指令格式分析數(shù)據(jù),便能成功模擬JTAG時(shí)序,實(shí)現(xiàn)類似于JTAG-Server的功能。JTAG-Server與JTAG-Client的結(jié)構(gòu)如圖4。
圖4 JTAG服務(wù)器與客戶端Fig.4 JTAG-Server and JTAG-Client.
2.3 FPGA軟件設(shè)計(jì)
在本設(shè)計(jì)中,主控FPGA負(fù)責(zé)實(shí)現(xiàn)8片待更新FPGA的JTAG鏈路。一組I/O口用于接收W7200的配置時(shí)序,另外8組I/O口分別連接8個(gè)LVDS模塊的輸入。一個(gè)4位的撥碼開(kāi)關(guān)用來(lái)控制接入JTAG鏈的FPGA的個(gè)數(shù)。
2.4 ARM軟件設(shè)計(jì)
本方案使用基于JTAG的配置方式,W7200作為配置控制器,其通用I/O引腳PB12、PB13、PB14、PB15分別作為JTAG接口的TMS、TCK、TDO和TDI。W7200的工作流程如圖5所示。其應(yīng)用程序用C語(yǔ)言開(kāi)發(fā)生成,Keil MDK進(jìn)行編譯調(diào)試。主要包括W7200初始化和指令處理兩部分。
首先,W720初始化的內(nèi)容包括:設(shè)置系統(tǒng)工作時(shí)鐘、中斷、GPIO/SPI、接收與發(fā)送緩存大小以及網(wǎng)絡(luò)設(shè)置。由于iMPACT軟件每次發(fā)送shift指令的最大長(zhǎng)度為2256 byte,故設(shè)置接收緩存區(qū)RX_BUF大小為2256,而發(fā)送緩存區(qū)TX_BUF大小為1178。網(wǎng)絡(luò)設(shè)置包括選擇打開(kāi)socket0進(jìn)行網(wǎng)絡(luò)通信,并設(shè)置其通信協(xié)議為TCP,端口號(hào)為5000,并為其分配IP地址和MAC地址。初始化完成后,W7200會(huì)作為TCP server打開(kāi)socket0監(jiān)聽(tīng)網(wǎng)絡(luò)上的連接請(qǐng)求。
圖5 更新流程Fig.5 Update process.
W7200處理指令的過(guò)程為:從 socket0的接收數(shù)據(jù)緩沖區(qū)接收6個(gè)字節(jié),若與字符串shift:對(duì)比相同,則繼續(xù)讀取4字節(jié)的內(nèi)容作為num_bits,通過(guò)計(jì)算將其轉(zhuǎn)換為字節(jié)數(shù)nr_bytes。接著按該字節(jié)數(shù)分別讀取TMS vector和 TDI vector到接收緩存區(qū)RX_BUF,然后通過(guò)for循環(huán)分別將TMS vector和TDI vector的每一位賦值給TMS和TDI引腳,同時(shí)產(chǎn)生周期性的TCK信號(hào)。該for循環(huán)同時(shí)將TDO引腳上檢測(cè)到的輸入信號(hào)寫入發(fā)送緩沖區(qū)TX_BUF,循環(huán)結(jié)束后以TDO vector發(fā)送給PC。PC驗(yàn)證收到的TDO數(shù)據(jù)無(wú)誤,繼續(xù)通過(guò)shift指令發(fā)送下一個(gè)數(shù)據(jù)包。由此便實(shí)現(xiàn)了一個(gè)完整的JTAG數(shù)據(jù)鏈路,從而實(shí)現(xiàn)了通過(guò)網(wǎng)絡(luò)將配置數(shù)據(jù)經(jīng)由JTAG接口配置給FPGA的過(guò)程。
利用iMPACT進(jìn)行遠(yuǎn)程更新時(shí)的軟件設(shè)置如圖6所示。首先打開(kāi)iMPACT軟件,在邊界掃描模式下選擇菜單欄的output、Cable Setup,選擇打開(kāi)Xilinx_XVC插件,更改連接對(duì)象的IP地址與端口號(hào),發(fā)送連接請(qǐng)求給W7200。
待成功建立socket連接后,初始化JTAG鏈,選擇待配置FPGA和配置文件并雙擊Program,PC端便按照shift指令的格式發(fā)送配置指令和數(shù)據(jù)給W7200。配置結(jié)果如圖7所示。經(jīng)過(guò)驗(yàn)證,為一片F(xiàn)PGA成功配置大小為630KB的.bit文件所需時(shí)間為21 s,配置1.41MB的.bit文件所需時(shí)間為48 s,配置速率均為240KB·s?1。在相同環(huán)境下,配置不同大小的文件速率基本一致。該方案使電子學(xué)系統(tǒng)的遠(yuǎn)程更新和調(diào)試變得簡(jiǎn)單靈活。
圖6 iMPACT下載線設(shè)置Fig.6 iMPACT cable setup.
圖7 成功更新FPGAFig.7 Successfully update FPGA.
本方案中,基于Xilinx 的XVC協(xié)議,利用PC機(jī)與ARM通過(guò)以太網(wǎng)通信,成功實(shí)現(xiàn)了基于JTAG接口的FPGA的遠(yuǎn)程更新與調(diào)試。該方案實(shí)際只需要一個(gè)ARM單芯片,無(wú)需其它額外的附加電路。在其他系統(tǒng)中應(yīng)用時(shí),可直接將W7200芯片固化在電路板上,方便可靠。隨著互聯(lián)網(wǎng)的發(fā)展推進(jìn),通過(guò)網(wǎng)絡(luò)進(jìn)行硬件程序的更新將變得更加普遍。
1 李默, 江曉山, 胡俊, 等. 用于同步輻射硅像素探測(cè)器的高速數(shù)據(jù)傳輸模塊研究[J]. 核電子學(xué)與探測(cè)技術(shù), 2014, 34(4): 474-476. DOI: 10.3969/j.issn.0258-0934. 2014.04.013
LI Mo, JIANG Xiaoshan, HU Jun, et al. The design of high-speed data transmission module for the silicon pixel detector research[J]. Nuclear Electronics & Detection Technology, 2014, 34(4): 474-476. DOI: 10.3969/j.issn. 0258-0934.2014.04.013
2 文華武. 基于以太網(wǎng)的FPGA遠(yuǎn)程程序升級(jí)系統(tǒng)的設(shè)計(jì)與研究[D]. 重慶: 重慶大學(xué), 2012
WEN Huawu. The design and application of Ethernet based FPGA remote system update[D]. Chongqing: Chongqing University, 2012
3 王利軍, 張超. 基于CPU實(shí)現(xiàn)FPGA遠(yuǎn)程更新[J]. 信息通信, 2013, 20(6): 44-45. DOI: 10.3969/j.issn. 1673-1131.2013.06.028
WANG Lijun, ZHANG Chao. Remote FPGA update based on CPU[J]. Information & Communications, 2013, 20(6): 44-45. DOI: 10.3969/j.issn.1673-1131.2013.06. 028
4 薛俊東, 梁昊, 陳一新, 等. μ子鑒別器電子學(xué)讀出系統(tǒng)FPGA配置方法[J]. 核技術(shù), 2008, 31(10): 786-790. DOI: 10.3321/j.issn:0253-3219.2008.10.014
XUE Jundong, LIANG Hao, CHEN Yixin, et al. FPGA configuration of readout system for muon counter of BESIII[J]. Nuclear Techniques, 2008, 31(10): 786-790. DOI: 10.3321/j.issn: 0253-3219.2008.10.014
5 Internet embedded MCU W7200 datasheet[OL]. http://www.wiznet.co.kr, 2015
6 徐文波, 田耘. Xilinx FPGA 開(kāi)發(fā)實(shí)用教程[M]. 第二版.北京: 清華大學(xué)出版社, 2012: 80-82
XU Wenbo, TIAN Yun. Xilinx FPGA: development and application[M]. 2ndEd. Beijing: Tsinghua University Press, 2012: 80-82
7 Xilinx visual cable overview[OL]. http://www.xilinx.com/ products/intellectual-property/xvc.html, 2015
8 K?mmerling P, Akens A, Loevenich H, et al. FPGA configuration by TCP/IP and Ethernet[C]. Real-Time Conference, 15thIEEE-NPSS, 2007: 1-4
Remote updating and debugging multi-FPGA based on XVC internet protocol
XUE Qian1,2ZENG Yun1ZHANG Jie2
1(School of Physics and Electronics, Hunan University, Changsha 410082, China)
2(State Key Laboratory of Particle Detection and Electronics, Institute of High Energy Physics, Chinese Academy of Sciences, Beijing 100049, China)
Background:Silicon pixel detector for synchrotron radiation is a new device designed for the technical need of X-ray detection of Beijing advanced light source. The entire detector is placed in a radiation environment, and the multiple frontend readout boards are placed in sealed cooling containers, thus the traditional Universal serial bus -joint test action group (USB-JTAG) cables can no longer be used.Purpose:This study aims to design and implement remote updating and debugging multi-Field programmable gate array (multi-FPGA) for the detector without opening the cooling container.Methods:In this study, a network based ARM microcontroller was used to accept configuration files via network and generate JTAG sequence to FPGA by means of Xilinx visual cable (XVC) protocol.Results:The remote updating and debugging of multi-FPGA were realized.Conclusion:This method improves the reliability of remote updating and debugging of FPGAs and is easy to extend with less extra circuits.
Silicon pixel detector, XVC protocol, ARM, JTAG interface, TCP/IP, Remote update and debugging
XUE Qian, female, born in1992, graduated from Hunan University in 2013, master student of Hunan University now, engaged in the FPGA hardware design
ZHANG Jie, E-mail: zhj@ihep.ac.cn
TN919
10.11889/j.0253-3219.2015.hjs.38.120402
核探測(cè)與核電子學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室2015年自主研究課題及開(kāi)放課題資助
薛乾,女,1992年出生,2013年畢業(yè)于湖南大學(xué),現(xiàn)為湖南大學(xué)碩士研究生,從事FPGA硬件設(shè)計(jì)
張杰,E-mail: zhj@ihep.ac.cn
Supported by the Independent Study and Open Issue of State Key Laboratory of Particle Detection and Electronics in 2015
2015-08-27,
2015-10-20
CLCTN919