一種在fpga平臺上進行數據報文采集的方法
【技術領域】
[0001]本發明涉及計算機芯片技術領域,具體地說是一種實用性強、在FPGA平臺上進行數據報文采集的方法。
【背景技術】
[0002]隨著國家對信息安全的越來越重視,打破國外廠商在小型機服務器上的壟斷迫在眉睫。而小型機服務器的研發在于需要網絡控制類芯片控制多路處理器系統,這個系統使得多個處理器之間能夠進行高速有效、可靠安全地進行報文交換處理。對應這個系統的前期驗證調試過程肯定是要在FPGA平臺上進行的。為了在FPGA平臺上很好地驗證,使用一些調試手段是必需的。采集抓取各種報文來分析的方法是經常用到的方法之一。而由于各個處理器之間傳輸報文數據量巨大且報文之間不是連續的,各個報文之間會有較長時間的空閑。因為FPGA調試軟件的存儲空間是有限的,在這種情況下對報文的抓取采集就會帶來很大的麻煩,通常只能采集到一段時間內很少量的報文。
[0003]針對這種問題,本專利提出了一種在FPGA平臺上進行數據報文采集的方法,有效解決了在FPGA平臺進行多處理器之間報文傳輸的時候,由于FPGA軟件存儲資源較小的原因無法較多地抓取所需報文的困難。
【發明內容】
[0004]本發明的技術任務是針對以上不足之處,提供一種實用性強、在FPGA平臺上進行數據報文采集的方法。
[0005]一種在FPGA平臺上進行數據報文采集的方法,其具體實現過程為:
首先構建一個異步FIFO用于報文采集輸出,該異步FIFO的主體為一個報文存儲RAM,且輸入和輸出地址由外部信號可控,該報文存儲RAM還連接可輸入并控制時能信號的使能控制模塊、可輸入地址的輸入地址控制模塊、可輸出地址的輸出地址控制模塊,其中異步FIFO輸出使能信號是根據輸入輸出地址的關系得到的;
設置所需采集抓取的報文類型,并進行報文傳輸;
當傳輸過程中出現所對應的報文時,RAM的輸入使能信號有效,相關報文輸入RAM中; 完成輸入后,輸入數據地址位加一,完成了輸入報文的存儲;
使能控制模塊檢測到輸入地址有變化,并與輸出地址進行比較,得出當前RAM中已經采集存有所需報文,使輸出的使能信號有效。
[0006]在異步FIFO的報文輸入端設置計數模塊,當報文存入異步FIFO中時,同時連同計數模塊數值作為時間戳一起存入到該異步FIFO中。
[0007]所述異步FIFO的輸入端對輸入的報文進行過濾,且當處理器傳輸過來的為所需求分析報文時存入FIFO中,其他傳輸來的分析報文不存儲入異步FIFO中。
[0008]所述輸入地址與輸出地址的比較即為比較輸入地址和輸出地址是否在同一個時鐘域里,當兩者不在同一時鐘域中,且在輸出地址的時鐘域里使用輸入地址時,通過格雷碼轉換對輸入地址進行轉換后使兩者處于同一時鐘域內。
[0009]本發明的一種在FPGA平臺上進行數據報文采集的方法,具有以下優點:
本發明提出的一種在FPGA平臺上進行數據報文采集的方法,利用一個可控地址的
RAM,去掉了報文之間的間隔時隙,最大可能地存儲有效報文數據,達到采集輸出報文目的;解決了在FPGA平臺進行多處理器之間報文傳輸的時候,由于FPGA軟件存儲資源較小的原因無法較多地抓取所需報文的困難;本發明構建一個可控地址的FIFO,過濾掉了報文傳輸過程中的空閑無效時間,以及暫時不需要采集分析的報文;該方法最大程度節約了 FPGA內部有限的資源,提高了效率,更好使用了 FPGA相關軟件進行代碼項目調試,實用性強,易于推廣。
【附圖說明】
[0010]附圖1為本發明的實現系統結構示意圖。
【具體實施方式】
[0011]下面結合附圖和具體實施例對本發明作進一步說明。
[0012]在FPGA平臺驗證調試過程中,經常遇到各個處理器所發送報文無法提取采集輸出的問題。這是因為各個報文輸出為非連續的,報文之間的間隔不固定,無法在FPGA軟件有限的緩存中存儲大量的數據報文。
[0013]針對上述問題,現提供一種在FPGA平臺上進行數據報文采集的方法,其具體實現過程為:
首先構建一個異步FIFO用于報文采集輸出,該異步FIFO的主體為一個報文存儲RAM,且輸入和輸出地址由外部信號可控,該報文存儲RAM還連接可輸入并控制時能信號的使能控制模塊、可輸入地址的輸入地址控制模塊、可輸出地址的輸出地址控制模塊,其中異步FIFO輸出使能信號是根據輸入輸出地址的關系得到的;
設置所需采集抓取的報文類型,并進行報文傳輸;
當傳輸過程中出現所對應的報文時,RAM的輸入使能信號有效,相關報文輸入RAM中; 完成輸入后,輸入數據地址位加一,完成了輸入報文的存儲;
使能控制模塊檢測到輸入地址有變化,并與輸出地址進行比較,根據輸入輸出地址的比較,就可以得出當前RAM中已經采集存有所需報文,輸出使能信號可以有效。隨著輸出地址的變化,RAM的報文在輸出時鐘域下輸出提供給FPGA軟件分析。一般情況下輸出時鐘域為高頻時鐘,可以快速地輸出報文,進而RAM中很快變空用來存儲下一個報文,RAM也不需要太大的空間,不會占用FPGA有限的資源。
[0014]在異步FIFO的報文輸入端設置計數模塊,當報文存入異步FIFO中時,同時連同計數模塊數值作為時間戳一起存入到該異步FIFO中,這樣有利于對報文傳輸在時間上進行分析。
[0015]所述異步FIFO的輸入端對輸入的報文進行過濾,且當處理器傳輸過來的為所需求分析報文時存入FIFO中,其他傳輸來的分析報文不存儲入異步FIFO中,這樣更加提高了采集抓取效率。
[0016]所述輸入地址與輸出地址的比較即為比較輸入地址和輸出地址是否在同一個時鐘域里,當兩者不在同一時鐘域中,且在輸出地址的時鐘域里使用輸入地址時,通過格雷碼轉換對輸入地址進行轉換后使兩者處于同一時鐘域內。
[0017]如附圖1所示,其具體實施過程為:
從圖1中可以看出本專利設計的主體為一個單口輸