本發(fā)明屬于fpga調(diào)試領(lǐng)域,尤其是涉及一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的方法及系統(tǒng)。
背景技術(shù):
1、fpga開發(fā)和使用過程中,在線調(diào)試、監(jiān)測和控制功能非常重要。開發(fā)過程中,在線調(diào)試功能方便定位問題。使用過程中,需要監(jiān)控fpga的工作狀態(tài)。
2、最常用的調(diào)試方式是使用jtag總線。使用jtag線和調(diào)試工具連接pc和fpga就可以進行調(diào)試??梢允褂胘tag線將多個fpga串聯(lián)起來進行調(diào)試。
3、也可以使用xilinx的xvc工具,該工具基于tcp,可以通過網(wǎng)絡(luò)調(diào)試fpga。
4、但是,jtag線不適合組網(wǎng),不適合動態(tài)增減設(shè)備。當需要調(diào)試整個機箱的fpga時,jtag就難以滿足需求。
5、xvc工具需要一個處理器配合才能工作。處理器運行tcp協(xié)議棧和xvc協(xié)議棧。該方案增加了成本。不適合沒有內(nèi)嵌處理器的fpga。
6、開源方案github?alexforencich?/?xfcp可以實現(xiàn)網(wǎng)絡(luò)調(diào)試fpga。該方案基于udp,報文長度可變。該方案只需要fpga就可以工作,不需要額外的處理器。但是該方案基于udp,沒有保證通信可靠的設(shè)計,方案消耗資源很多,對于調(diào)試功能,過多的占用fpga資源得不償失。
技術(shù)實現(xiàn)思路
1、本發(fā)明主要解決的問題是怎樣使用較少的資源可靠的對fpga進行調(diào)試,提供了一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的方法及系統(tǒng)。
2、為解決上述技術(shù)問題,所采用的技術(shù)方案是:
3、一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的方法,包括以下步驟:
4、步驟1:pc端與多個待調(diào)試的fpga基于udp/ip協(xié)議進行網(wǎng)絡(luò)組網(wǎng)通信,每個fpga端具有獨立的設(shè)備編號;
5、步驟2:在fpga端設(shè)置有接收同步編號和發(fā)送同步編號計數(shù)器,用于對通過網(wǎng)絡(luò)接收的調(diào)試命令報文或發(fā)送的調(diào)試結(jié)果報文進行計數(shù);
6、步驟3:在pc端與擬調(diào)試的fpga建立連接時,pc端發(fā)送報文查詢該fpga端的設(shè)備編號、接收同步編號和發(fā)送同步編號,當查詢到的設(shè)備編號與pc端保存的設(shè)備編號一致,則連接成功,將查詢到的接收同步編號和發(fā)送同步編號存儲在pc端;
7、步驟4:連接成功后,pc端發(fā)送調(diào)試命令,將調(diào)試命令與接收同步編號一起組包成網(wǎng)絡(luò)報文,基于網(wǎng)絡(luò)協(xié)議將網(wǎng)絡(luò)報文通過網(wǎng)絡(luò)傳遞給待調(diào)試的fpga;
8、步驟5:fpga在檢查網(wǎng)絡(luò)報文按照傳輸協(xié)議的校驗正確后,還需檢查網(wǎng)絡(luò)報文中的接收同步編號是否合法,當合法時,將網(wǎng)絡(luò)報文中的調(diào)試命令轉(zhuǎn)換為fpga內(nèi)部調(diào)試總線的調(diào)試命令對fpga進行調(diào)試;
9、步驟6:將fpga內(nèi)部調(diào)試總線返回的調(diào)試結(jié)果與發(fā)送同步編號一起組包成網(wǎng)絡(luò)報文,基于udp/ip協(xié)議將網(wǎng)絡(luò)報文通過網(wǎng)絡(luò)傳遞給pc端;
10、步驟7:pc端在檢查網(wǎng)絡(luò)報文按照傳輸協(xié)議的校驗正確后,還需檢查網(wǎng)絡(luò)報文中的發(fā)送同步編號的合法性,當合法時,則調(diào)試成功。
11、進一步地,fpga檢查網(wǎng)絡(luò)報文中的接收同步編號是否合法的方法是:
12、在pc端發(fā)送調(diào)試命令報文時,將pc端保存的接收同步編號加1后的值與調(diào)試命令一起組包成報文發(fā)送給fpga端,fpga端檢查報文中的接收同步編號是否與fpga內(nèi)部的接收同步編號加1后的值相同,如果相同,則為合法報文;對于合法報文,使fpga端的接收同步編號加1,同時使用報文中的調(diào)試命令對fpga進行調(diào)試。
13、進一步地,pc端檢查網(wǎng)絡(luò)報文中的發(fā)送同步編號與pc端的發(fā)送同步編號合法性的方法是:fpga端發(fā)送調(diào)試結(jié)果報文時,將fpga內(nèi)部發(fā)送同步編號加1,然后將fpga端的發(fā)送同步編號與調(diào)試結(jié)果一起組成報文發(fā)送給pc端,pc端根據(jù)報文中的發(fā)送同步編號的值是否與pc端發(fā)送同步編號加1后的值相同,如果相同,則為合法報文。
14、進一步地,所述網(wǎng)絡(luò)報文的類型包括:查詢節(jié)點信息報文、節(jié)點響應(yīng)信息報文、調(diào)試命令報文、調(diào)試結(jié)果報文、重發(fā)調(diào)試結(jié)果指令報文;
15、所述查詢節(jié)點信息報文包括報文類型字段;
16、所述節(jié)點響應(yīng)信息報文包括:報文類型字段、發(fā)送同步編號、接收同步編號、設(shè)備編號、udp檢驗和修正;
17、所述調(diào)試命令報文包括:報文類型字段、接收同步編號、調(diào)試命令數(shù)據(jù)、udp檢驗和修正;
18、所述調(diào)試結(jié)果報文包括:報文類型字段、發(fā)送同步編號、調(diào)試命令結(jié)果、udp檢驗和修正;
19、所述重發(fā)調(diào)試結(jié)果指令報文包括:報文類型字段、udp檢驗和修正。
20、進一步地,通過udp傳輸報文時將報文的長度設(shè)為固定值,各類型的報文中不足固定長度的報文以0補齊。
21、進一步地,pc端發(fā)送調(diào)試命令報文后,pc端進入等待狀態(tài),如果pc端沒有在規(guī)定的時間內(nèi)收到由fpga給出的調(diào)試結(jié)果報文時,pc端發(fā)出查詢節(jié)點信息報文,當收到fpga的節(jié)點響應(yīng)信息報文后,根據(jù)節(jié)點響應(yīng)信息報文中的接收同步編號和發(fā)送同步編號與pc端的接收同步編號和發(fā)送同步編號一致性來判斷出錯的地方。
22、進一步地,根據(jù)節(jié)點響應(yīng)信息報文中的接收同步編號和發(fā)送同步編號與pc端的接收同步編號和發(fā)送同步編號一致性來判斷出錯地方的方法是:
23、如果節(jié)點響應(yīng)信息報文中的接收同步編號與pc端的接收同步編號相同,則pc端發(fā)送到fpga端的調(diào)試命令報文丟失,由pc端重新發(fā)送調(diào)試命令報文;
24、如果節(jié)點響應(yīng)信息報文中的發(fā)送同步編號與pc端的發(fā)送同步編號相同,則fpga沒有發(fā)送調(diào)試結(jié)果報文,fpga工作異常;
25、如果節(jié)點響應(yīng)信息報文中的發(fā)送同步編號與pc端的發(fā)送同步編號加1后相同,則是fpga端到pc端的調(diào)試結(jié)果報文丟失,由pc端發(fā)送重發(fā)調(diào)試結(jié)果指令報文,fpga端將調(diào)試結(jié)果報文重新發(fā)送給pc端,pc端發(fā)送重發(fā)調(diào)試結(jié)果指令報文時,pc端和fpga端的接收同步編號不變化,fpga端在重新發(fā)送調(diào)試結(jié)果報文時其發(fā)送同步編號不變化。
26、進一步地,在pc端與fpga連接成功后,由pc端周期性發(fā)送查詢節(jié)點信息報文,并根據(jù)響應(yīng)的節(jié)點信息報文中設(shè)備編號是否一致確認連接情況;
27、當pc端發(fā)送查詢節(jié)點信息報文后,未接收到由fpga響應(yīng)的節(jié)點信息報文時,重復發(fā)送查詢節(jié)點信息報文并執(zhí)行上面的步驟,直到達到重復發(fā)送次數(shù)的上限時,發(fā)出網(wǎng)絡(luò)異常的通知信息。
28、進一步地,fpga在檢查網(wǎng)絡(luò)報文按照傳輸協(xié)議是否校驗正確的方法是:ip檢驗和正確,udp檢驗和正確,以太網(wǎng)crc校驗正確。
29、本發(fā)明還提供了一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的系統(tǒng),使用一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的方法各步驟實現(xiàn)。
30、采用上述技術(shù)方案,本發(fā)明具有如下有益效果:
31、本發(fā)明提供的一種基于udp/ip協(xié)議使pc對多fpga調(diào)試的方法及系統(tǒng),通過在fpga端分別設(shè)置接收和發(fā)送同步編號且pc端通過查詢得到同步編號并保存,在發(fā)送調(diào)試命令或調(diào)試結(jié)果時,將接收同步編號與調(diào)試命令或發(fā)送同步編號與調(diào)試結(jié)果組包成網(wǎng)絡(luò)報文,通過判斷兩端的接收和發(fā)送同步編號是否合法,來判斷報文是否丟失,在調(diào)試命令報文合法時,再將網(wǎng)絡(luò)報文中的調(diào)試命令報文轉(zhuǎn)換成調(diào)試命令,對fpga進行調(diào)試,確保了通信的可靠,由于udp/ip和上層協(xié)議完全在fpga上實現(xiàn),整個調(diào)試過程不需要其它處理器輔助,節(jié)約了調(diào)試資源。