周興云,陸文斌,張秋明,金亭姝,黃凱旋
(上海航天電子技術(shù)研究所,上海 201109)
隨著可編程邏輯器件的迅速發(fā)展和廣泛應(yīng)用,F(xiàn)PGA實(shí)現(xiàn)的功能越來(lái)越強(qiáng)大,且單個(gè)系統(tǒng)中應(yīng)用的FPGA數(shù)量也越來(lái)越多,而對(duì)系統(tǒng)中眾多FPGA的調(diào)試與配置也變得格外重要。一般FPGA器件生產(chǎn)商會(huì)提供在線邏輯分析工具(如Altera的SignalTap[1]和Xilinx的ChipScope[2]),通過(guò)軟件方式為用戶提供成本低廉和操作簡(jiǎn)單的FPGA調(diào)試解決方案。
在某些特殊的應(yīng)用場(chǎng)景,比如系統(tǒng)中FPGA數(shù)量眾多且產(chǎn)品結(jié)構(gòu)復(fù)雜,現(xiàn)場(chǎng)調(diào)試時(shí)往往需要拆卸大量的結(jié)構(gòu)件并連接較多的臨時(shí)電纜,或者線纜長(zhǎng)度限制、產(chǎn)品的安裝位置等因素導(dǎo)致無(wú)法直接在現(xiàn)場(chǎng)搭建調(diào)試平臺(tái),為FPGA的調(diào)試與配置帶來(lái)了極大的困難。本文介紹了一種綜合利用CAN總線[3]和RS422總線[4]的優(yōu)勢(shì)實(shí)現(xiàn)復(fù)雜系統(tǒng)中眾多FPGA遠(yuǎn)程調(diào)試與配置的設(shè)計(jì)方法,極大降低了系統(tǒng)的調(diào)試成本,并縮短了研制周期。
FPGA的生產(chǎn)廠商有多家,調(diào)試與配置方法有多種,主要包括主串模式、從串模式、主并模式、主字節(jié)外圍接口模式(BPI)以及JTAG邊界掃描模式[5]等。在實(shí)際使用中,由于JTAG模式標(biāo)準(zhǔn)統(tǒng)一、設(shè)備簡(jiǎn)單,且可組建JTAG鏈路配置,使用最為廣泛。標(biāo)準(zhǔn)的JTAG接口[6]有4個(gè)引腳:TMS、TCK、TDI和TDO。JTAG模式接口引腳的功能定義如表1所示。
表1 JTAG模式接口引腳功能定義
引腳引腳功能描述TMS測(cè)試模式選擇,在TCK上升沿,根據(jù)TMS的值決定TAP狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換序列TCK測(cè)試時(shí)鐘,用來(lái)為JTAG電路提供時(shí)鐘TDI測(cè)試數(shù)據(jù)輸入,在TCK上升沿將數(shù)據(jù)或指令以串行方式移入TAP控制器中TDO測(cè)試數(shù)據(jù)輸出,在TCK下降沿移出響應(yīng)數(shù)據(jù)
由表1可以看出,JTAG模式是一種有相應(yīng)數(shù)據(jù)協(xié)議的同步通信方式。這里以Xilinx公司提供的在線邏輯分析工具(Chip Scope Pro Analyzer)為例,介紹JTAG模式下FPGA調(diào)試與配置的過(guò)程[7]。其典型的工作模式如圖1所示。
圖1 JTAG模式調(diào)試與配置FPGA示意
通過(guò)下載工具以JTAG模式將電腦與電路板上的FPGA芯片連接,設(shè)計(jì)人員通過(guò)ChipScope Pro Analyzer軟件,將相關(guān)的軟件核直接插入到設(shè)計(jì)的綜合網(wǎng)表中,再通過(guò)實(shí)現(xiàn)工具完成布局布線并生成的配置數(shù)據(jù),最后通過(guò)JTAG接口下載到FPGA中,同時(shí)監(jiān)控FPGA內(nèi)核邏輯并將信息通過(guò)JTAG接口輸出至ChipScope Pro Analyzer軟件上顯示和分析,從而實(shí)現(xiàn)FPGA的調(diào)試與配置等功能。
FPGA遠(yuǎn)程調(diào)試與配置一般是通過(guò)網(wǎng)絡(luò)或其他信道將配置數(shù)據(jù)發(fā)送給遠(yuǎn)端嵌入式系統(tǒng)[8],嵌入式系統(tǒng)再將這些數(shù)據(jù)加載到FPGA中[9],并從FPGA中采集需要信號(hào)后,通過(guò)網(wǎng)絡(luò)回傳給本地調(diào)試裝置[10]。這種方式往往要構(gòu)建復(fù)雜的硬件平臺(tái)并設(shè)計(jì)相應(yīng)與FPGA調(diào)試工具對(duì)接的軟件[11-13],實(shí)現(xiàn)復(fù)雜且成本昂貴,而且如果系統(tǒng)中FPGA數(shù)量眾多,則需要解決多個(gè)FPGA調(diào)試與配置的通信沖突問(wèn)題[14]。
復(fù)雜系統(tǒng)中眾多FPGA遠(yuǎn)程調(diào)試與配置需要解決的問(wèn)題是多點(diǎn)組網(wǎng)后的有序通信以及信息長(zhǎng)距離的可靠傳輸,同時(shí)應(yīng)盡量保證信號(hào)數(shù)據(jù)協(xié)議的一致性[15],以確保無(wú)需開(kāi)發(fā)其他配套軟件就可直接使用FPGA廠商提供的配置軟件和調(diào)試工具[16]。本文設(shè)計(jì)思想是搭建一個(gè)裝置,該裝置采用某種通信方式來(lái)傳輸JTAG模式下的調(diào)試與配置數(shù)據(jù),該通信方式具有傳輸距離遠(yuǎn)、可靠性高且可實(shí)現(xiàn)同步數(shù)據(jù)通信,同時(shí)該裝置還具有組網(wǎng)節(jié)點(diǎn)多的特點(diǎn),可解決多點(diǎn)組網(wǎng)后的通信沖突問(wèn)題。
RS422總線是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸總線[17]。它采用差分傳輸方式,抗干擾能力強(qiáng),傳輸距離遠(yuǎn),而且只規(guī)定了接收端和發(fā)送端的電氣特性,沒(méi)有規(guī)定或推薦任何數(shù)據(jù)協(xié)議[18],因此可用來(lái)實(shí)現(xiàn)指定數(shù)據(jù)協(xié)議的同步通信,滿足設(shè)計(jì)所需的高可靠和長(zhǎng)距離通信,且可實(shí)現(xiàn)同步數(shù)據(jù)傳輸?shù)囊?。在多?jié)點(diǎn)組網(wǎng)方面,由于接收器的輸入阻抗和發(fā)送器的驅(qū)動(dòng)能力有限,一般在相同傳輸線上最多可接十多個(gè)節(jié)點(diǎn),同時(shí),總線上存在多個(gè)接收器和發(fā)送器,若無(wú)有效的隔離和調(diào)度措施,這些接收器和發(fā)送器很容易發(fā)生通信沖突,因此在FPGA芯片過(guò)多的系統(tǒng)中,則無(wú)法進(jìn)行有序通信,需要考慮可組網(wǎng)節(jié)點(diǎn)多的總線形式。
CAN總線是一種支持分布式控制的串行通信網(wǎng)絡(luò),具有突出的可靠性和靈活性[19]。CAN總線采用非破壞性總線仲裁技術(shù),只需通過(guò)報(bào)文濾波即可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播的傳送數(shù)據(jù),組網(wǎng)節(jié)點(diǎn)數(shù)普遍可達(dá)110個(gè)[20],具有有效的隔離和調(diào)度措施,是一種非常適合組建多節(jié)點(diǎn)的總線網(wǎng)絡(luò)。但CAN總線具有特定的數(shù)據(jù)協(xié)議,無(wú)法實(shí)現(xiàn)指定數(shù)據(jù)協(xié)議的同步通信。
本文考慮綜合利用CAN總線通信可靠性高和組網(wǎng)節(jié)點(diǎn)多、RS422總線通信抗干擾能力強(qiáng)和可實(shí)現(xiàn)同步數(shù)據(jù)通信的特點(diǎn),來(lái)實(shí)現(xiàn)FPGA遠(yuǎn)程調(diào)試與配置。
為解決RS422總線的通信沖突問(wèn)題并增加其所能掛接的節(jié)點(diǎn)數(shù),選用一種具有使能控制的RS422總線接收器和發(fā)送器,該接收器和發(fā)送器在使能狀態(tài)時(shí)可正常參與通信,在關(guān)閉狀態(tài)時(shí),收發(fā)端口呈現(xiàn)高阻狀態(tài)。通過(guò)將連接所需調(diào)試FPGA芯片的接收器和發(fā)送器使能,將連接其他FPGA芯片的接收器和發(fā)送器關(guān)閉,實(shí)現(xiàn)FPGA調(diào)試與配置軟件與所需調(diào)試FPGA芯片之間點(diǎn)對(duì)點(diǎn)通信鏈路的導(dǎo)通,而且其他接收器和發(fā)送器都是關(guān)閉狀態(tài),其接收和發(fā)送端口都呈現(xiàn)高阻狀態(tài),解決總線上存在多個(gè)接收器和發(fā)送器造成的通信沖突問(wèn)題。同時(shí)由于大部分接收器端口呈現(xiàn)高阻狀態(tài),導(dǎo)致這些接收器所需的輸入電流變小,可提高總線可掛接的節(jié)點(diǎn)數(shù),解決總線上存在多個(gè)接收器造成驅(qū)動(dòng)能力不足的問(wèn)題。
對(duì)RS422總線接收器和發(fā)送器的使能控制則可通過(guò)微控制器進(jìn)行,而遠(yuǎn)程調(diào)試控制端與眾多微控制器的通信剛好可以利用CAN總線來(lái)完成。
設(shè)計(jì)的FPGA遠(yuǎn)程調(diào)試與配置的方案框圖如圖2所示。
圖2 FPGA遠(yuǎn)程調(diào)試與配置方案
整個(gè)設(shè)計(jì)由人機(jī)交互模塊、CAN總線模塊、RS422總線模塊和多個(gè)遠(yuǎn)程調(diào)試與配置模塊組成。
遠(yuǎn)程控制時(shí),在人機(jī)交互模塊中的遠(yuǎn)程調(diào)試控制軟件上選擇需要調(diào)試和配置的FPGA芯片,通過(guò)CAN總線將FPGA芯片的位置信息廣播到所有的遠(yuǎn)程調(diào)試與配置模塊,各個(gè)遠(yuǎn)程調(diào)試與配置模塊根據(jù)位置信息來(lái)判斷所需調(diào)試和配置FPGA芯片的具體位置,并控制相應(yīng)的通信模塊。選通所需調(diào)試與配置FPGA芯片與RS422總線模塊的通信鏈路,實(shí)現(xiàn)人機(jī)交互模塊的FPGA調(diào)試和配置軟件與所需調(diào)試和配置FPGA芯片之間點(diǎn)對(duì)點(diǎn)通信鏈路的導(dǎo)通;FPGA調(diào)試與配置時(shí),由人機(jī)交互模塊的FPGA調(diào)試與配置軟件通過(guò)FPGA下載器,以JTAG配置模式,通過(guò)RS422總線模塊將調(diào)試與配置數(shù)據(jù)傳輸?shù)剿枵{(diào)試與配置的FPGA芯片,同時(shí)監(jiān)控FPGA內(nèi)核邏輯,通過(guò)RS422總線模塊回傳FPGA內(nèi)核邏輯信息并在人機(jī)交互模塊的FPGA調(diào)試與配置軟件上顯示,實(shí)現(xiàn)FPGA遠(yuǎn)程調(diào)試與配置的功能。
整個(gè)設(shè)計(jì)的硬件構(gòu)成主要包括CAN總線模塊,RS422總線模塊和多個(gè)遠(yuǎn)程調(diào)試與配置模塊。
CAN總線模塊由CAN調(diào)試器和CAN總線網(wǎng)絡(luò)組成,負(fù)責(zé)將人機(jī)交互模塊傳送過(guò)來(lái)的所需調(diào)試FPGA芯片位置信息轉(zhuǎn)換為CAN總線形式,通過(guò)CAN總線網(wǎng)絡(luò)進(jìn)行廣播,傳送給所有的遠(yuǎn)程調(diào)試與配置模塊,同時(shí)接收遠(yuǎn)程調(diào)試與配置模塊的狀態(tài)信息,轉(zhuǎn)換為特定接口形式的信息回告給人機(jī)交互模塊。
RS422總線模塊由RS422調(diào)試器和RS422總線網(wǎng)絡(luò)組成,負(fù)責(zé)將人機(jī)交互模塊傳送過(guò)來(lái)的FPGA調(diào)試與配置數(shù)據(jù)轉(zhuǎn)換為RS422總線形式,通過(guò)RS422總線網(wǎng)絡(luò)進(jìn)行廣播,傳送給所有的遠(yuǎn)程調(diào)試與配置模塊,同時(shí)接收所需調(diào)試與配置FPGA芯片的內(nèi)核邏輯信息,轉(zhuǎn)換為T(mén)TL電平形式回傳給人機(jī)交互模塊并在FPGA調(diào)試與配置軟件上顯示。
2個(gè)總線網(wǎng)絡(luò)以特定的拓?fù)浣Y(jié)構(gòu)來(lái)組成一個(gè)多節(jié)點(diǎn)雙工通信控制網(wǎng)絡(luò),各個(gè)節(jié)點(diǎn)設(shè)備擺放位置合理布線,各分支線盡量短,減少信號(hào)發(fā)射,匹配電阻獨(dú)立連接在總線兩端。
遠(yuǎn)程調(diào)試與配置模塊由遠(yuǎn)程控制模塊、多個(gè)通信模塊以及多個(gè)FPGA組成。遠(yuǎn)程調(diào)試與配置模塊的電路框圖如圖3所示。
圖3 遠(yuǎn)程調(diào)試與配置模塊電路
遠(yuǎn)程控制模塊接收所需調(diào)試FPGA芯片的位置信息,并根據(jù)該信息判斷所需調(diào)試FPGA芯片是否屬于本遠(yuǎn)程調(diào)試與配置模塊,若屬于,則將與該FPGA芯片對(duì)應(yīng)的RS422接收器和RS422發(fā)送器使能,將其他RS422接收器和RS422發(fā)送器關(guān)閉,同時(shí)回告本遠(yuǎn)程調(diào)試與配置模塊的狀態(tài)信息;若不屬于,則將本模塊中所有的RS422接收器和RS422發(fā)送器全部關(guān)閉,從而實(shí)現(xiàn)FPGA調(diào)試與配置軟件與所需調(diào)試與配置FPGA芯片之間點(diǎn)對(duì)點(diǎn)通信鏈路的導(dǎo)通。
通信模塊由RS422接收器和RS422發(fā)送器組成,負(fù)責(zé)相關(guān)電平形式的轉(zhuǎn)換。FPGA芯片的JTAG配置管腳與對(duì)應(yīng)的RS422接收器和RS422發(fā)送器連接,接收FPGA調(diào)試與配置數(shù)據(jù),并將所需調(diào)試與配置FPGA芯片內(nèi)核邏輯信息傳送給RS422總線模塊。
人機(jī)交互模塊由遠(yuǎn)程調(diào)試控制軟件,F(xiàn)PGA調(diào)試與配置軟件和FPGA下載器組成。
FPGA調(diào)試與配置軟件和FPGA下載器是由FPGA器件廠商或者第三方商家提供的FPGA開(kāi)發(fā)配套軟件,該軟件與FPGA芯片廠家和型號(hào)有關(guān),這里采用的FPGA調(diào)試與配置軟件為Xilinx公司的ChipScope Pro Analyzer,采用的FPGA下載器為Platform Cable USB II。
遠(yuǎn)程調(diào)試控制軟件用于選擇需要調(diào)試和配置的FPGA芯片,并將FPGA芯片所處位置信息通過(guò)接口發(fā)送給CAN總線模塊,同時(shí)接收從CAN總線模塊回傳過(guò)來(lái)的遠(yuǎn)程調(diào)試與配置模塊的狀態(tài)信息。遠(yuǎn)程調(diào)試控制軟件在Visual Studio 2010環(huán)境下開(kāi)發(fā),軟件界面如圖4所示。
圖4 遠(yuǎn)程調(diào)試控制軟件界面
在某預(yù)研雷達(dá)項(xiàng)目中,按所設(shè)計(jì)的方案構(gòu)建包含16片F(xiàn)PGA芯片的遠(yuǎn)程調(diào)試與配置網(wǎng)絡(luò),并得到成功應(yīng)用。通過(guò)遠(yuǎn)程調(diào)試控制軟件對(duì)該雷達(dá)某單元的FPGA芯片進(jìn)行選擇,然后通過(guò)ChipScope Pro Analyzer軟件對(duì)該FPGA芯片進(jìn)行遠(yuǎn)程調(diào)試與配置,具體調(diào)試結(jié)果如圖5所示。
圖5 ChipScope軟件調(diào)試結(jié)果
從調(diào)試結(jié)果可以看出,采用所設(shè)計(jì)的方案,在無(wú)需設(shè)計(jì)與FPGA調(diào)試工具對(duì)接的軟件情況下,即可直接利用FPGA廠商提供的軟件對(duì)設(shè)備中多個(gè)FPGA進(jìn)行遠(yuǎn)程調(diào)試與配置,解決了系統(tǒng)中FPGA數(shù)量眾多和特殊結(jié)構(gòu)等因素導(dǎo)致FPGA調(diào)試?yán)щy的問(wèn)題。經(jīng)過(guò)近半年聯(lián)調(diào)與試驗(yàn),該系統(tǒng)運(yùn)行穩(wěn)定,功能可靠,為調(diào)試工作帶來(lái)了極大的方便。
本文針對(duì)特殊場(chǎng)景中FPGA調(diào)試不便的情況并結(jié)合工程研制的實(shí)際需求,給出了一種基于CAN和RS422總線實(shí)現(xiàn)FPGA遠(yuǎn)程調(diào)試與配置方案,并詳述了方案的構(gòu)建和電路的設(shè)計(jì)與實(shí)現(xiàn)。該方案具有可組網(wǎng)的FPGA芯片個(gè)數(shù)多、硬件組成簡(jiǎn)單,且無(wú)需設(shè)計(jì)與FPGA調(diào)試工具對(duì)接的軟件,具有易于集成、通用性和移植性強(qiáng)等特點(diǎn),并在研制項(xiàng)目中得到有效應(yīng)用,運(yùn)行穩(wěn)定可靠。鑒于所研制項(xiàng)目擴(kuò)展需要,系統(tǒng)包含的FPGA芯片將達(dá)到上百片,下一步擬將構(gòu)建節(jié)點(diǎn)數(shù)更多的遠(yuǎn)程調(diào)試與配置網(wǎng)絡(luò),以滿足后續(xù)需求。
[1] 陳欣波.Altera FPGA工程師成長(zhǎng)手冊(cè)[M].北京:清華出版社,2012.
[2] 田耘,徐文波.Xilinx FPGA開(kāi)發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[3] 王書(shū)舉.車(chē)輛控制系統(tǒng)局域網(wǎng)絡(luò)(CAN)調(diào)度策略研究[D].沈陽(yáng):東北大學(xué),2011.
[4] 段曉超,段玲琳,李化雷.星型拓?fù)銻S422信號(hào)傳輸特性研究[J].雷達(dá)科學(xué)與技術(shù),2016,14(1):91-94.
[5] 胡啟道,張洪福,戴紹港.基于MCU的FPGA在線配置[J].電子器件,2007,30(3):1049-1051.
[6] 王鏖淯.基于JTAG標(biāo)準(zhǔn)的邊界掃描測(cè)試技術(shù)的分析與研究[D].西安:西安電子科技大學(xué),2014.
[7] 李輝,岳田.在FPGA設(shè)計(jì)中ChipScope與MATLAB的應(yīng)用[J].無(wú)線電工程,2010,40(1):62-64.
[8] 李冬芳.數(shù)字陣列收發(fā)組件FPGA遠(yuǎn)程配置的研究與實(shí)現(xiàn)[J].雷達(dá)科學(xué)與技術(shù),2011,9(3):272-276.
[9] 劉永恩,王俊芳.FPGA遠(yuǎn)程升級(jí)技術(shù)的分析與實(shí)現(xiàn)[J].無(wú)線電工程,2012,42(9):48-50.
[10] 王利軍,張超.基于CPU實(shí)現(xiàn)FPGA遠(yuǎn)程更新[J].信息通信,2013(6):44-46.
[11] 馮建文,王春.FPGA遠(yuǎn)程配置在遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2016,35(19):95-97.
[12] 李進(jìn),李國(guó)寧,金龍旭,等.FPGA配置過(guò)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].液晶與顯示,2010,25(6):851-857.
[13] 朱保全.FPGA遠(yuǎn)程以太網(wǎng)JTAG設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2015.
[14] 楊明健.基于ARM的FPGA遠(yuǎn)程重配置設(shè)計(jì)[D].大連:大連理工大學(xué),2013.
[15] 趙蕙,肖鐵軍.FPGA的邊界掃描配置算法及嵌入式實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2007(8):19-21.
[16] 王夢(mèng)杰.FPGA固件遠(yuǎn)程更新方法的研究[D].武漢:華中師范大學(xué),2012.
[17] 宋波.基于以太網(wǎng)絡(luò)的虛擬串行通訊軟件開(kāi)發(fā)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.
[18] 應(yīng)建華,黃萌,趙江平.一種基于RS485/RS422的多速收發(fā)器的設(shè)計(jì)[J].半導(dǎo)體技術(shù),2007,32(12):1069-1072.
[19] 杜洪亮.基于CAN總線的大型遠(yuǎn)程監(jiān)控網(wǎng)絡(luò)設(shè)計(jì)[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2009.
[20] 許杭,白瑞林,嚴(yán)惠.CAN總線上層協(xié)議的設(shè)計(jì)[J].計(jì)算機(jī)工程,2007,33(24):258-260.