本發(fā)明屬于通信應用技術領域,涉及一種應用于反熔絲器件編程及測試系統(tǒng)的通信方法,主要是針對反熔絲FPGA、反熔絲PROM等反熔絲器件的編程及測試平臺的軟硬件通信方法。
背景技術:
隨著計算機應用技術和軟硬件通信技術的飛速發(fā)展,各種通信協(xié)議成為連接上位機軟件和下位機硬件的重要橋梁。通信協(xié)議種類繁多,有網(wǎng)絡通信協(xié)議、串口通信協(xié)議等。各應用領域都推出多種通用型的標準通信協(xié)議,網(wǎng)絡協(xié)議如TCP/IP網(wǎng)絡協(xié)議、GPRS無線傳輸協(xié)議;串口通信協(xié)議如RS232協(xié)議、RS485協(xié)議、I2C協(xié)議、SPI協(xié)議、CAN總線協(xié)議等等。上位機軟件和下位機硬件之間可以通過這些通信協(xié)議規(guī)則傳遞信息,準確的傳輸數(shù)據(jù)。然而這些協(xié)議只提供傳輸數(shù)據(jù)的基本方法,并沒有命令和數(shù)據(jù)解析的完整解決方案。
反熔絲器件編程及測試系統(tǒng)中上位機軟件和下位機硬件通信時,常常是一種流式的傳輸方式,如USB的傳輸,串口的傳輸。但是這些傳輸方式只提供一個傳輸?shù)耐ǖ?,并沒有提供設備間交互的功能,不能滿足我們對反熔絲器件編程及測試的需求。實際應用中,需要在傳輸層上構建應用層協(xié)議,實現(xiàn)反熔絲器件編程及測試系統(tǒng)的軟硬件通信。對低復雜度應用系統(tǒng)而言,若采用通用的常規(guī)復雜通信協(xié)議,往往設計復雜、成本高、效率低。針對以上問題,有必要提出一種面向低復雜度應用系統(tǒng)的新的應用層協(xié)議。
本發(fā)明提供一種半定制型應用層通信協(xié)議及軟硬件通信方法。該應用層協(xié)議簡潔、可擴展性強、不受物理層通信協(xié)議限制,采用該協(xié)議的軟硬件通信應用系統(tǒng)設計簡單、資源耗費少、成本低、效率高,能實現(xiàn)以反熔絲器件編程及測試系統(tǒng)為典型代表的低復雜度應用系統(tǒng)中上位機軟件和下位機硬件之間命令和數(shù)據(jù)的交互傳輸。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題在于提供一種反熔絲器件編程及測試系統(tǒng)的應用層通信協(xié)議及軟硬件通信方法,使得上位機軟件和下位機硬件實現(xiàn)功能交互,實現(xiàn)計算機對反熔絲器件的編程及測試。
本發(fā)明采用以下技術方案解決上述技術問題:
創(chuàng)建一種面向低復雜度應用系統(tǒng)的易于構建和解析、擴展性強的應用層通信協(xié)議結構。該協(xié)議結構被用于以反熔絲FPGA、反熔絲PROM為典型代表的反熔絲器件的編程及測試系統(tǒng)的軟硬件交互過程中。
本發(fā)明的反熔絲器件編程及測試系統(tǒng)包括:待編程及測試器件、協(xié)議處理模塊、上位機軟件、下位機硬件。
該系統(tǒng)主要是完成對反熔絲FPGA、反熔絲PROM等反熔絲器件的編程及測試,下位機硬件通??捎晌⒖刂破骰騀PGA實現(xiàn)。系統(tǒng)中上位機軟件向下位機硬件發(fā)送編程及測試命令,下位機硬件執(zhí)行對器件編程及測試的命令并返回編程及測試的結果。系統(tǒng)中上位機軟件和下位機硬件有各自的協(xié)議處理模塊,每幀通信協(xié)議在通信前應被定義,協(xié)議處理模塊完成對每幀協(xié)議的構建和解析。上位機通過協(xié)議處理模塊構建每一幀通信協(xié)議向下位機硬件發(fā)送編程及測試命令和數(shù)據(jù);下位機硬件通過協(xié)議處理模塊解析收到的信息,得到編程及測試命令、對象編碼及數(shù)據(jù),對器件進行編程及測試,并返回執(zhí)行結果。
本發(fā)明的應用層通信協(xié)議的傳輸幀構成有:協(xié)議頭、對象編碼、數(shù)據(jù)、協(xié)議尾。
協(xié)議頭意味著一幀的開頭,協(xié)議尾意味著一幀的結尾,協(xié)議頭和協(xié)議尾組合形成編程及測試命令、編程及測試的成功與否。協(xié)議頭和協(xié)議尾的組合具有多樣性,常規(guī)命令只需分析協(xié)議頭,自定義命令需同時分析協(xié)議頭和協(xié)議尾;對象編碼對應著編程及測試命令的不同對象和硬件參數(shù),使得命令既可以同時被多個器件執(zhí)行,也可以只被一個器件執(zhí)行;數(shù)據(jù)為一幀信息的可選項,若命令中用到數(shù)據(jù)則在信息中添加數(shù)據(jù)內(nèi)容及數(shù)據(jù)的校驗碼,只傳輸命令時無數(shù)據(jù)項。在編程及測試過程中反饋的數(shù)據(jù)長度不定,協(xié)議頭和協(xié)議尾確保通信過程中對數(shù)據(jù)區(qū)域的判斷,對象編碼確保正確的器件及硬件參數(shù)按照編程及測試命令執(zhí)行。
系統(tǒng)中上位軟件和下位機硬件按照本通信協(xié)議生成、傳輸并處理編程及測試命令、數(shù)據(jù)和執(zhí)行結果。包括如下步驟:
步驟一:統(tǒng)計不同的編程及測試命令,確定協(xié)議頭和協(xié)議尾位寬,為各種命令和編程及測試結果設置協(xié)議頭和協(xié)議尾;統(tǒng)計每種命令類型的器件執(zhí)行對象和硬件參數(shù)個數(shù),確定對象編碼位寬,為每個對象和其參數(shù)設置對象編碼;設計上位機軟件和下位機硬件的協(xié)議處理模塊,用來構建和解析每一幀通信協(xié)議;
步驟二:根據(jù)不同的編程及測試命令,確定數(shù)據(jù)位寬,上位機軟件的通信協(xié)議處理模塊構建一幀信息發(fā)送到下位機硬件;
步驟三:下位機硬件接收到信息,下位機的通信協(xié)議處理模塊解析一幀信息,提取信息中的對象編碼、命令、數(shù)據(jù);
步驟四:下位機硬件執(zhí)行編程及測試命令,對符合對象編碼的器件進行編程及測試。下位機的通信協(xié)議處理模塊根據(jù)編程及測試結果構建一幀信息發(fā)送到上位機;
步驟五:上位機軟件接收到信息,上位機軟件的通信協(xié)議處理模塊解析一幀信息,得到編程及測試結果;
步驟六:上位機軟件分析編程及測試結果,重復步驟二到步驟五。
本發(fā)明有以下特點:
結構簡單,易于自動構建和解析,實現(xiàn)了編程及測試系統(tǒng)設備間的命令交互,能夠針對正確的器件進行編程或測試,傳輸穩(wěn)定的數(shù)據(jù)。易于實現(xiàn),資源耗費少,成本低,滿足編程及測試系統(tǒng)的通信;
通用性強,對于新的命令不必修改協(xié)議格式,只需添加新命令(修改協(xié)議頭或協(xié)議尾);不依賴于特定的物理層傳輸協(xié)議,對于新的器件及新參數(shù)不必修改物理層通信協(xié)議及物理層通信模塊,只需增加對象編碼;
擴展性好,協(xié)議不限定協(xié)議頭、協(xié)議尾、對象編碼、數(shù)據(jù)的位寬。當命令、器件增加時,根據(jù)需求設置合適的位寬用來滿足協(xié)議的構建,數(shù)據(jù)的校驗碼確保了任意長度數(shù)據(jù)的穩(wěn)定傳輸。每種命令可以同時對多個器件對象編程及測試,也可以只針對一個器件對象。對已經(jīng)完成的協(xié)議處理模塊來說,只需增加命令定義,構建和解析流程不需要變化。
附圖說明
為了更清楚地說明本發(fā)明實例或本發(fā)明技術中的技術方案,下面將對實例或本發(fā)明技術中所需要使用的附圖作簡單地介紹。下面描述中的附圖是本發(fā)明的一些實例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的應用層通信協(xié)議的幀結構示意圖。
圖2為本發(fā)明的應用層通信協(xié)議的幀示例示意圖。
圖3為反熔絲PROM器件編程及測試系統(tǒng)應用實例的通信幀示意圖。
圖4為反熔絲FPGA器件編程及測試系統(tǒng)應用實例的通信幀示意圖。
圖5為本發(fā)明的反熔絲器件編程及測試系統(tǒng)的構成示意圖。
圖6為本發(fā)明的通信傳輸過程的示意圖。
圖7為反熔絲FPGA測試過程的示意圖。
圖8為反熔絲FPGA硬件編程過程的示意圖。
具體實施方式
為使本發(fā)明實例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實例中的附圖,對本發(fā)明實例中的技術方案進行清楚、完整地描述,顯然,所描述的實例是本發(fā)明一部分實例,而不是全部的實例。基于本發(fā)明中的實例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明的應用層通信協(xié)議的幀結構示意圖。
本應用層通信協(xié)議為面向低復雜度應用系統(tǒng)的應用層協(xié)議,實現(xiàn)上位機軟件對反熔絲FPGA、反熔絲PROM等反熔絲器件的編程及測試。本通信協(xié)議為半定制的通信協(xié)議,可添加自定義命令、器件。本通信協(xié)議的一幀有如下幾個部分:
協(xié)議頭,協(xié)議尾:每一幀通信協(xié)議從協(xié)議頭開始,到協(xié)議尾結束,協(xié)議頭和協(xié)議尾共同組合形成編程及測試所需命令。協(xié)議頭和協(xié)議尾的位寬根據(jù)命令總數(shù)決定,由具有特殊意義的字符串組成。命令分為常用命令和自定義命令,常用命令為器件通用的命令,自定義命令為特定器件的專用命令;
對象編碼:用對象編碼分配不同的待編程及測試對象及硬件參數(shù),使得下位機硬件可以正確的區(qū)分相同命令的不同硬件執(zhí)行對象及硬件參數(shù)。對象編碼的位寬根據(jù)硬件執(zhí)行對象和硬件參數(shù)個數(shù)決定,由多位十進制編碼組成。一幀協(xié)議中命令同時對多個器件編程及測試、同時修改多個硬件參數(shù)時,多個器件和參數(shù)共享同一對象編碼,這使得相同的硬件及硬件參數(shù)更容易的加入到編程及測試系統(tǒng)中;
數(shù)據(jù):數(shù)據(jù)內(nèi)容為編程及測試所需數(shù)據(jù)及編程及測試的反饋數(shù)據(jù),數(shù)據(jù)長度可變,結尾處為數(shù)據(jù)校驗碼,校驗的方式有常見的(CRC校驗、奇偶校驗等)和自定義校驗。若一幀協(xié)議只傳輸命令或只傳輸不包含數(shù)據(jù)的反饋結果時無數(shù)據(jù)內(nèi)容。
協(xié)議頭、協(xié)議尾、對象編碼需在編程及測試系統(tǒng)中協(xié)議模塊完成前確定,使得上位機軟件和下位機硬件可以通過協(xié)議處理模塊正確構建和解析每一幀通信協(xié)議,實現(xiàn)對器件的編程及測試。協(xié)議處理模塊根據(jù)編程及測試系統(tǒng)的傳輸過程中的需要自行添加數(shù)據(jù),在數(shù)據(jù)傳輸?shù)倪^程中由協(xié)議尾確定數(shù)據(jù)的結束位置,計算校驗碼進行對比確保數(shù)據(jù)的正確傳輸。
圖2為本發(fā)明的應用層通信協(xié)議的幀示例示意圖。
一幀協(xié)議中協(xié)議頭和協(xié)議尾的組合方式有如下幾種:
只有協(xié)議頭:這樣的一幀協(xié)議傳輸常用命令,多用來設置和檢查編程及測試系統(tǒng)的下位機硬件的狀態(tài),由上位機軟件發(fā)送到下位機硬件;
只有協(xié)議尾:這樣的一幀協(xié)議多用來傳輸編程及測試的反饋結果,由下位機硬件發(fā)送到上位機軟件;
同時由協(xié)議頭和協(xié)議尾:這樣的一幀協(xié)議傳輸自定義命令,多用來設置編程及測試對象的參數(shù)和實現(xiàn)對器件的編程、測試,由上位機軟件發(fā)送到下位機硬件。
在反熔絲器件編程及測試系統(tǒng)中幀的典型示例如下:
協(xié)議幀示例1:rb01;
協(xié)議功能:讀取對象編碼為‘01’的器件的多路編程電壓值;
協(xié)議分析:該協(xié)議只有協(xié)議頭,不包含數(shù)據(jù),‘rb’為協(xié)議頭,‘01’為對象編碼。該協(xié)議由上位機軟件發(fā)送到下位機硬件,檢查器件的編程電壓狀態(tài)?!畆b’為常用命令,命令功能是對編程及測試器件的狀態(tài)進行測試。
協(xié)議幀示例2:00012k,5C~;
協(xié)議功能:器件中對象編碼為‘0001’的反熔絲經(jīng)過5次測試,平均阻值為2K;
協(xié)議分析:該協(xié)議只有協(xié)議尾,包含數(shù)據(jù),‘~’為協(xié)議尾,‘0001’為對象編碼,‘2K,5’為數(shù)據(jù),‘C’為數(shù)據(jù)自定義校驗碼。該協(xié)議由下位機硬件發(fā)送到上位機軟件,反饋一個反熔絲的編程結果?!癁槌S妹?,命令功能是反饋編程成功。
協(xié)議:#0002*…*f;
協(xié)議功能:對器件中對象編碼為‘0002’的反熔絲編程,編程位流數(shù)據(jù)為(*…*),數(shù)據(jù)中包含CRC校驗碼;
協(xié)議分析:該協(xié)議包含協(xié)議頭和協(xié)議尾,包含數(shù)據(jù),‘#’為協(xié)議頭,‘0002’為對象編碼,‘*…*’為數(shù)據(jù)和校驗碼,‘f’為協(xié)議尾。該協(xié)議由上位機軟件發(fā)送到下位機硬件,實現(xiàn)對器件的編程?!?f’為自定義命令,命令功能是根據(jù)編程位流數(shù)據(jù)對編程及測試器件編程。
圖3為反熔絲PROM器件編程及測試系統(tǒng)應用實例的通信幀示意圖。
反熔絲PROM器件編程及測試系統(tǒng)中共5條常用命令(此處列出3條),9條自定義命令(此處列出5條),15種存儲內(nèi)存類型。協(xié)議頭的位寬為2個字節(jié),對象編碼的位寬為2個字節(jié),數(shù)據(jù)的位寬根據(jù)具體情況自行改變,協(xié)議尾的位寬為1個字節(jié)。
3條常用命令如圖中所示:
讀取編程電壓:由協(xié)議頭‘rb’、對象編碼組成,該命令讀取不同類型的PROM的編程電壓;
設置編程電壓:由協(xié)議頭‘st’、對象編碼、數(shù)據(jù)組成,數(shù)據(jù)為待設置的編程電壓值,該命令設置不同類型的PROM的編程電壓;
信息反饋:由對象編碼、數(shù)據(jù)、協(xié)議尾‘~’或‘^’組成,數(shù)據(jù)為編程及測試過程數(shù)據(jù),該命令反饋不同類型的PROM的編程及測試信息,當協(xié)議尾為‘~’時代表編程及測試成功,當協(xié)議尾為‘^’時代表編程及測試失敗。
5條自定義命令如圖中所示:
讀取芯片信息:由協(xié)議頭‘r’、對象編碼、協(xié)議尾‘x’組成,該命令讀取不同類型的PROM芯片信息;
PROM數(shù)據(jù)塊編程:由協(xié)議頭‘w’、對象編碼、數(shù)據(jù)、協(xié)議尾‘b’組成,數(shù)據(jù)為地址信息和待寫入數(shù)據(jù),該命令向不同類型的PROM芯片地址塊中寫入數(shù)據(jù);
PROM芯片查空:由協(xié)議頭‘c’、對象編碼、協(xié)議尾‘b’組成,該命令對不同類型的PROM芯片檢查是否未被寫入數(shù)據(jù);
PROM數(shù)據(jù)塊讀?。河蓞f(xié)議頭‘r’、對象編碼、數(shù)據(jù)、協(xié)議尾‘b’組成,數(shù)據(jù)為地址信息,該命令從不同類型的PROM芯片地址塊中讀出數(shù)據(jù);
PROM數(shù)據(jù)塊對比:由協(xié)議頭‘w’、對象編碼、數(shù)據(jù)、協(xié)議尾‘b’組成,數(shù)據(jù)為地址信息和待比較數(shù)據(jù),該命令對不同類型的PROM芯片檢查地址塊中數(shù)據(jù)是否正確。
此處描述的實例是一部分實例,而不是全部的實例。根據(jù)需求增加新的協(xié)議頭、對象編碼、協(xié)議尾擴展協(xié)議,實現(xiàn)對不同型號的PROM器件的編程和各種測試。
圖4為反熔絲FPGA器件編程及測試系統(tǒng)應用實例的通信幀示意圖。
反熔絲FPGA器件編程及測試系統(tǒng)中共7條常用命令(此處列出3條),20條自定義命令(此處列出9條),8999個待編程反熔絲。由于自定義命令的增多及反熔絲數(shù)量大,協(xié)議頭和對象編碼位寬增加。協(xié)議頭的位寬為4個字節(jié),對象編碼的位寬為4個字節(jié),數(shù)據(jù)的位寬根據(jù)具體情況自行改變,協(xié)議尾的位寬為1個字節(jié)。
反熔絲FPGA器件編程及測試系統(tǒng)中常用命令和PROM器件編程及測試系統(tǒng)中常用命令功能相同,對象變?yōu)榉慈劢zFPGA硬件。自定義命令如圖中所示,實現(xiàn)對反熔絲FPGA芯片的查空測試、編程、讀取芯片ID測試、binning測試、參數(shù)設置、數(shù)據(jù)回讀測試、數(shù)據(jù)按位對比測試、寄存器鏈測試、反熔絲狀態(tài)測試。
此處描述的實例是一部分實例,而不是全部的實例。根據(jù)需求增加新的協(xié)議頭、對象編碼、協(xié)議尾擴展協(xié)議,實現(xiàn)對不同型號的FPGA器件的編程和各種測試。
圖5為本發(fā)明的反熔絲器件編程及測試系統(tǒng)的構成示意圖。
本編程及測試系統(tǒng)中設備通過物理層通信協(xié)議接收和發(fā)送信息,上位機軟件和下位機硬件有各自協(xié)議處理模塊負責應用層通信協(xié)議的構建和解析。本應用層通信協(xié)議不依賴于物理層通信協(xié)議,系統(tǒng)中設備可通過串口協(xié)議、I2C協(xié)議、SPI協(xié)議、CAN總線協(xié)議、USB協(xié)議等物理層通信協(xié)議傳輸每一幀信息。
該系統(tǒng)主要是完成對反熔絲FPGA、反熔絲PROM等反熔絲器件的編程及測試,為低復雜度的應用系統(tǒng),有如下幾個部分組成:
待編程及測試器件:多為反熔絲FPGA、反熔絲PROM等反熔絲器件,用戶通過對其編程實現(xiàn)邏輯或存儲數(shù)據(jù),并對其進行編程前測試、編程測試、編程后測試;
上位機軟件:軟件界面是用戶與硬件系統(tǒng)進行數(shù)據(jù)交流的窗口。上位機軟件實現(xiàn)向下位機硬件發(fā)送編程及測試命令、數(shù)據(jù),編程及測試過程的控制和顯示;
下位機硬件:下位機硬件從上位機接收到編程及測試命令、數(shù)據(jù),并把它們轉換為相應的時序信號直接控制待編程及測試器件,實現(xiàn)對器件的編程及測試;
協(xié)議處理模塊:上位機軟件和下位機硬件的通信由各自的協(xié)議處理模塊實現(xiàn),協(xié)議處理模塊完成對每個通信幀的構建和解析。
圖6為本發(fā)明的通信傳輸過程的示意圖。
在本反熔絲器件編程及測試系統(tǒng)中,首先統(tǒng)計命令類型,為每種命令類型設置協(xié)議頭、協(xié)議尾及數(shù)據(jù);然后統(tǒng)計每種命令類型的器件執(zhí)行對象和硬件參數(shù),設置每一命令類型的對象編碼;最后編寫上位機軟件和下位機硬件的協(xié)議處理模塊,完成系統(tǒng)通信框架的搭建。
系統(tǒng)通信框架搭建完成后,開始設備之間的通信傳輸:
上位機軟件根據(jù)傳輸?shù)木幊碳皽y試命令、數(shù)據(jù)和對象編碼構建一幀信息,發(fā)送到下位機硬件;
下位機硬件從接收到的幀信息中解析得到編程及測試命令、數(shù)據(jù)和對象編碼,對符合對象編碼的器件進行編程或測試。下位機硬件根據(jù)編程及測試的反饋結果構建一幀信息發(fā)送到上位機軟件;
上位機軟件從接收到的幀信息中解析得到編程及測試結果,并顯示在軟件界面;
上位機軟件對編程及測試結果分析處理完成后,再進行后續(xù)的編程、測試過程。
圖7為反熔絲FPGA測試過程的示意圖。
執(zhí)行步驟一:上位機軟件的協(xié)議處理模塊構建一幀信息“rb0001”發(fā)送到下位機硬件;
執(zhí)行步驟二:下位機硬件接收到幀信息,經(jīng)協(xié)議處理模塊解析,得到讀取反熔絲FPGA的編程電壓的命令;
執(zhí)行步驟三:下位機硬件讀取反熔絲FPGA的編程電壓,經(jīng)通信協(xié)議處理模塊構建一幀信息“VPP:5~”發(fā)送到上位機軟件;
執(zhí)行步驟四:上位機軟件接收到信息,經(jīng)協(xié)議處理模塊解析,得到當前反熔絲的編程電壓VPP為5V。
圖8為反熔絲FPGA硬件編程過程的示意圖。
執(zhí)行步驟一:上位機軟件發(fā)送“#0001*…*f”到下位機硬件,‘*…*’為數(shù)據(jù)和校驗碼;
執(zhí)行步驟二:下位機硬件解析信息并檢查數(shù)據(jù)校驗正確,經(jīng)協(xié)議處理模塊解析,得到向反熔絲FPGA中‘0001’反熔絲編程的命令;
執(zhí)行步驟三:下位機硬件根據(jù)編程數(shù)據(jù)對反熔絲FPGA編程,若編程成功發(fā)送“00012k,5C~”到上位機軟件,若編程失敗發(fā)送“000110k,100X^”到上位機軟件;
執(zhí)行步驟四:上位機軟件解析信息,當編程成功時得到‘0001’反熔絲經(jīng)過5次測試平均阻值為2k,當編程失敗時得到‘0001’反熔絲經(jīng)過100次測試阻值為10k。
執(zhí)行步驟五:若編程失敗上位機軟件重新發(fā)送‘0001’反熔絲的編程命令,否則上位機軟件發(fā)送下一個反熔絲的編程命令。
最后應說明的是:以上實例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實例技術方案的精神和范圍。