專利名稱:一種FPGA用基于PCIe的集成化邏輯分析模塊的制作方法
技術領域:
本發明涉及FPGA開發領域,尤其是基于PCIe鏈路的高效鏈式DMA控制采集數據的設計與實現,具體地說是一種FPGA用基于PCIe的集成化邏輯分析模塊。
背景技術:
目前,隨著現代處理器技術的發展,在互連領域中,使用高速差分總線替代并行總線是大勢所趨。與單端并行信號相比,高速差分信號可以使用更高的時鐘頻率,從而使用更少的信號線,完成之前需要許多單端并行數據信號才能達到的總線帶寬。PCI總線使用并行總線結構,在同一條總線上的所有外部設備共享總線帶寬,而 PCIe總線使用了高速差分總線,并采用端到端的連接方式,因此在每一條PCIe鏈路中只能連接兩個設備。這使得PCIe與PCI總線采用的拓撲結構有所不同。PCIe總線除了在連接方式上與PCI總線不同之外,還使用了一些在網絡通信中使用的技術,如支持多種數據路由方式,基于多通路的數據傳遞方式,和基于報文的數據傳送方式,并充分考慮了在數據傳送中出現服務質量QoS (Quality of Service)問題。PCIe總線采用了串行連接方式,并使用數據包(Packet)進行數據傳輸,采用這種結構有效去除了在PCI總線中存在的一些邊帶信號,如INTx和PME#等信號。在PCIe總線中,數據報文在接收和發送過程中,需要通過多個層次,包括事務層、數據鏈路層和物理層。 PCIe總線的層次結構如圖所示。PCIe總線的層次組成結構與網絡中的層次結構有類似之處,但是PCIe總線的各個層次都是使用硬件邏輯實現的。在PCIe體系結構中,數據報文首先在設備的核心層 (Device Core)中產生,然后再經過該設備的事務層(Transaction Layer)、數據鏈路層 (Data Link Layer)和物理層(Physical Layer),最終發送出去。而接收端的數據也需要通過物理層、數據鏈路和事務層,并最終到達Device Core0在FPGA (現場可編程門陣列)芯片設計工作中,由于設計存在錯誤或缺陷,設計人員需要通過設計實體中邏輯信號變化情況來分析系統中錯誤源頭。這時,設計人員可以利用邏輯分析儀來分析系統,也可以利用Altera公司的SignalTap工具或Xilinx公司的 ChipScope工具抓取波形來分析系統。然而利用邏輯分析儀設計的話需要把信號拉到空閑引腳上,這樣非常不方便。如果利用SignalTap或Chipkope的話,雖然能很方便地采集所需信號,但是這個二者又局限于芯片內部的BlockRAM的剩余量限制,往往大型設計中 BlockRAM沒有足夠的余量來供SignalTap或Chipkope使用,這樣就使得工具采集的信號量非常少,在很多情況下不能滿足需要。
發明內容
本發明的目的是針對上述FPGA (現場可編程門陣列)芯片設計中存在的問題,提出一種FPGA用基于PCIe的集成化邏輯分析模塊。
本發明的技術方案是
一種FPGA用基于PCIe的集成化邏輯分析模塊,其特征是它包括觸發控制器、DMA控制器、報文發送引擎、報文接收引擎和PCIe收發控制器,所述的PCIe收發控制器作為邏輯分析模塊的控制信號輸入端連接邏輯分析模塊所在產品系統的CPU,PCIe收發控制器的控制信號輸出端連接報文接收引擎的控制信號輸入端,報文接收引擎的一控制信號輸出端連接 DMA控制器的一對應控制信號輸入端,另一控制信號輸出端連接觸發控制器的控制信號輸入端,觸發控制器作為邏輯分析模塊的邏輯數據輸入端采集設計實體模塊的觸發條件的邏輯數據,觸發控制器的控制信號輸出端連接DMA控制器的對應控制信號輸入端,DMA控制器的控制信號端與報文發送引擎雙向連接,報文發送引擎的邏輯數據輸入端連接設計實體模塊的對應邏輯數據輸出端,報文發送引擎的邏輯數據輸出通過PCIe收發控制器輸出至邏輯分析模塊所在產品系統的CPU。本發明的設計實體模塊指燒結到FPGA芯片里的邏輯代碼,能實現產品所要求的功能,所述的集成化邏輯分析模塊實現的功能是采集設計實體模塊中相應的信號以實現的。根復合體是PCIe鏈路的交換開關,用于掛載PCIe設備即用于掛載具有PCIe收發控制器的FPGA,交換PCIe鏈路報文,是PCIe鏈路的重要組成部分。本發明的觸發控制器用于判斷報文接收引擎發送過來的觸發條件,直到它從設計實體模塊采集的邏輯信號滿足判斷條件,輸出控制信號至DMA控制器進行數據采集操作, DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎,在報文發送引擎完成一次DMA傳輸后,將結束信息送給DMA控制器。本發明的DMA控制器包括RAM,通過PCIe初始化配置將這塊RAM映射到CPU的內存空間里,CPU通過對這片空間寫配置命令字,即可實現CPU對本系統實施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收發控制器,分配總線號,將DMA控制器里的RAM 映射到系統存儲器空間里,從而使FPGA成為CPU的PCIe總線上可以訪問的掛接設備。本發明的報文接收引擎用于接收CPU下發的指令報文,對指令報文解析并將相應命令控制字輸入到DMA控制器中。本發明的PCIe收發控制器用于接收來自CPU的命令報文,將事務層報文轉發給報文接收引擎;同時,將來自報文發送引擎的事務層報文,發送到CPU。本發明的分析模塊包括以下工作步驟首先,PCIe收發控制器接收來自根復合體的PCIe鏈路報文,轉發該PCIe鏈路報文到報文接收引擎;報文接收引擎解開報文,提取 PCIe鏈路報文里的觸發開關、觸發條件、觸發值和觸發無關項,以及采集數據存儲的起始地址和存儲深度信息;將上述信息送到DMA控制器;報文接收引擎將觸發開關,觸發條件,觸發值和觸發無關項信息送到觸發控制器;根據實體模塊中采集的數據來判斷,當觸發點到來時,觸發控制器發出采集使能信號至DMA控制器;DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎;在報文發送引擎中,根據采集的實體中的數據產生PCIe鏈路報文,并送給PCIe收發控制器;PCIe收發控制器通過根復合體將大量采集數據傳送至邏輯分析模塊所在產品系統的內存中。一種FPGA,包括FPGA用基于PCIe的集成化邏輯分析模塊和設計實體模塊,設計實體模塊的邏輯數據輸出端與邏輯分析模塊的數據信號輸入端相連,邏輯分析模塊的數據信號輸出端與根復合體的數據信號輸入端相連,邏輯分析模塊的控制信號輸入端通過PCIe控制鏈路與根復合體的控制信號輸出端相連,根復合體與CPU的控制信號端雙向連接。本發明的根復合體是PCIe鏈路的交換開關,用于掛載PCIe設備即用于掛載具有 PCIe收發控制器的FPGA,交換PCIe鏈路報文,輸出邏輯數據至內存中存儲。本發明的有益效果
本發明不僅可以實現SignalTap或Chipkope的所有功能,而且還可以解決大型設計中BlockRAM余量不夠用的情況,因為此時數據不是存在芯片內部而是導出到CPU側的內存中,只要內存允許便可以采集足夠量的數據。另外,由于觸發模塊是寄存器級代碼,那么可以通過修改這里的代碼來實現更為復雜的觸發設置,遠比SignalTap或Chipkope靈活得多。在一般大型設計中,CPU、FPGA共存于一個系統是很常見的,而PCIe鏈路又是很多高速系統常用通信通道,所以本方案的適用場合廣泛。本模塊能根據設定好的觸發條件對邏輯信號進行采集,再將采集的數據通過PCIe 鏈路上傳給CPU,CPU再進行下一步工作。這些觸發條件的設置方式是測試人員利用CPU通過PCIe鏈路將命令下達本模塊,完成觸發條件設置。本發明的邏輯分析模塊支持觸發采數,支持不同時鐘域數據總線采集,支持任意寬度的總線數據采集、但是采集數據帶寬不能超過線路帶寬,支持采集期間數據丟失及線路阻塞告警,支持觸發時間點之前一小段數據采集,通過配置命令,決定輸入端口的部分比特位作為采集對象,滿足PCIe傳輸協議要求。
圖1是本發明的結構示意圖。圖2是本發明的使用示意圖。圖3是本發明的工作流程圖。
具體實施例方式下面結合附圖和實施例對本發明作進一步的說明。如圖1所示,一種FPGA用基于PCIe的集成化邏輯分析模塊,它包括觸發控制器、 DMA控制器、報文發送引擎、報文接收引擎和PCIe收發控制器,所述的PCIe收發控制器作為邏輯分析模塊的控制信號輸入端連接邏輯分析模塊所在產品系統的CPU,PCIe收發控制器的控制信號輸出端連接報文接收引擎的控制信號輸入端,報文接收引擎的一控制信號輸出端連接DMA控制器的一對應控制信號輸入端,另一控制信號輸出端連接觸發控制器的控制信號輸入端,觸發控制器作為邏輯分析模塊的邏輯數據輸入端采集設計實體模塊的觸發條件的邏輯數據,觸發控制器的控制信號輸出端連接DMA控制器的對應控制信號輸入端,DMA 控制器的控制信號端與報文發送引擎雙向連接,報文發送引擎的邏輯數據輸入端連接設計實體模塊的對應邏輯數據輸出端,報文發送引擎的邏輯數據輸出通過PCIe收發控制器輸出至邏輯分析模塊所在產品系統的CPU。本發明的設計實體模塊指燒結到FPGA芯片里的邏輯代碼,能實現產品所要求的功能,所述的集成化邏輯分析模塊實現的功能是采集設計實體模塊中相應的信號以實現的。根復合體是PCIe鏈路的交換開關,用于掛載PCIe設備即用于掛載具有PCIe收發控制器的FPGA,交換PCIe鏈路報文,是PCIe鏈路的重要組成部分。本發明的觸發控制器用于判斷報文接收引擎發送過來的觸發條件,直到它從設計實體模塊采集的邏輯信號滿足判斷條件,輸出控制信號至DMA控制器進行數據采集操作, DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎,在報文發送引擎完成一次DMA傳輸后,將結束信息送給DMA控制器。本發明的DMA控制器包括RAM,通過PCIe初始化配置將這塊RAM映射到CPU的內存空間里,CPU通過對這片空間寫配置命令字,即可實現CPU對本系統實施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收發控制器,分配總線號,將DMA控制器里的RAM 映射到系統存儲器空間里,從而使FPGA成為CPU的PCIe總線上可以訪問的掛接設備。本發明的報文接收引擎用于接收CPU下發的指令報文,對指令報文解析并將相應命令控制字輸入到DMA控制器中。 本發明的PCIe收發控制器用于接收來自CPU的命令報文,將事務層報文轉發給報文接收引擎;同時,將來自報文發送引擎的事務層報文,發送到CPU。本發明的分析模塊包括以下工作步驟首先,PCIe收發控制器接收來自根復合體的PCIe鏈路報文,轉發該PCIe鏈路報文到報文接收引擎;報文接收引擎解開報文,提取 PCIe鏈路報文里的觸發開關、觸發條件、觸發值和觸發無關項,以及采集數據存儲的起始地址和存儲深度信息;將上述信息送到DMA控制器;報文接收引擎將觸發開關,觸發條件,觸發值和觸發無關項信息送到觸發控制器;當觸發點到來時,觸發控制器發出采集使能信號至DMA控制器;DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎;在報文發送引擎中,根據采集的實體中的數據產生PCIe鏈路報文,并送給PCIe收發控制器;PCIe收發控制器通過根復合體將大量采集數據傳送至CPU。一種FPGA,包括FPGA用基于PCIe的集成化邏輯分析模塊和設計實體模塊,設計實體模塊的邏輯數據輸出端與邏輯分析模塊的數據信號輸入端相連,邏輯分析模塊的數據信號輸出端與根復合體的數據信號輸入端相連,邏輯分析模塊的控制信號輸入端通過PCIe 控制鏈路與根復合體的控制信號輸出端相連,根復合體與CPU的控制信號端雙向連接。本發明的根復合體是PCIe鏈路的交換開關,用于掛載具有PCIe收發控制器的 FPGA,交換PCIe鏈路報文,輸出邏輯數據至內存中存儲。具體實施時
1、觸發控制器詳細設計
功能介紹根據用戶設定的觸發條件,在滿足觸發的條件下指示數據采集。配置命令決定輸入端口部分比特最為采集對象。具體實現觸發控制器功能就是判斷觸發條件,直到采集信號滿足判斷條件后輸出結果通知DMA控制器進行數據采集操作。觸發控制器下有這么幾個寄存器R_collect_start,R_compare_on_off,R_ compare_condition , R_compare_value, R_value_irrelvant。R_collect_start用來控制采集操作的開始和停止。R_compare_on_off用來控制是否進行觸發操作,即有效時進行觸發判斷,否則就不需要觸發判斷直接通知下級模塊進行采集數據。R_compare_condition、R_compare_value用來表示進行何種觸發判斷的條件及相應的值,比如要進行一次判斷采集信號等于某個值時觸發采集,那么前者表達相等條件,后者表達相等的值。R_value_irrelvant表示無關項,就是對R_compare_value中某些比特位不關心, 不參與判斷過程。邏輯過程當 R_collect_start 及 R_compare_on_off 有效后,根據 R_compare_ condition的值決定采用哪種邏輯判斷方式(等于、不等于、小于、大于之類),并根據R_ value_irrelvant的值濾除無關比特位,然后將采樣信號的值和R_compare_value做比較, 當滿足邏輯判斷條件時,則觸發下級模塊采集信號。R_c0mpare_0n_0fT無效時,則表示不需要觸發操作,只要R_C0lleCt_Start有效后即可進行采集工作。2、DMA控制器模塊詳細設計
功能介紹負責寄存數據傳輸中各種狀態控制字。具體實現這里是一塊片內RAM,通過PCIe配置將這塊RAM映射到CPU的內存空間里,CPU通過對這片空間寫配置命令字,即可實現CPU對本系統實施命令控制。這塊RAM中命令控制字格式如下表所示
:--:,-14 I fI- ·- I 、'
fe-^iiViii”"
|i. "Λ, -、.. Χ:
I~...................................................................................................................................ilil'i.................................................................................................................................................
包含了啟停控制寄存器,觸發開關寄存器,觸發條件,觸發的值和觸發無關項寄存器, 以及采集數據存儲的起始地址寄存器和存儲深度寄存器。存儲起始地址寄存器保存內存地址,即DMA傳輸的目標地址。當地址寄存器完成寫操作,DMA狀態機將被啟動。存儲深度寄存器其初始值為一次DMA傳輸數據的大小,PCIe每傳送一個數據,字節寄存器的值就減1,減到O則DMA停止傳輸。上述這種方式為非鏈式DMA的主模式寫操作,一次DMA傳輸只有一組控制字表。 CPU首先寫控制狀態寄存器、中斷屏蔽寄存器、字節寄存器、地址寄存器,而后狀態機啟動; 當外部FIFO數據準備好,數據先傳到數據通道RAM,再以DMA方式寫到目標地址;判斷DMA 是否完成或出錯,寫中斷狀態寄存器,發出中斷信號;主機收到中斷后,讀中斷狀態寄存器確定中斷類型,如果發現DMA完成,則處理數據,如果發現DMA出錯,則丟棄數據。3、報文發送引擎模塊詳細設計
功能介紹應答CPU端的配置寄存器讀請求;DMA方式傳輸采集數據和發送中斷消息喚醒CPU,處理采集數據。具體實現根據PCIe協議中事務層報文結構進行封包工作。4、報文接收引擎模塊詳細設計
功能介紹負責接收CPU下發的指令報文、負責對指令報文解析并將相應命令控制字寫到DMA控制器模塊中。具體實現根據PCIe協議中事務層報文結構進行解包工作。5、PCIe收發控制器詳細設計
功能介紹可采用Xilinx提供的PCIe硬核;用戶接口的本地鏈路成幀接口 ;包化接口,有幀起始(sof)和幀結束(eof)的包標記信號;傳輸和接收方向可進行節制或中止事務傳輸;幀錯誤檢測與支持;多通道配置支持xl、x2、X4和x8 ;每通道2. 5Gbps帶寬;自動初始化、恢復與通道維護,對用戶應用是透明的;利用Xilinx Core Generator配置相關信息后自動生成。詳細設計XiIinx提供的Endpoint Block Plus for PCIe解決方案適用于 Virtex-5、Virtex6及Virtex7 FPGA架構,是一種可靠的帶寬可縮放串行互聯架構模塊。其頂層功能模塊包括系統(SYS)接口、PCI-ExpresS(PCI-EXP)接口、配置(CFG)接口以及事務(TRN)接口。核使用數據包在各模塊之間交換信息。數據包在事務層和數據鏈路層形成,用來承載從發送元件到接收元件的信息。傳輸的數據包中包括在各層處理數據包所需的必要信息。在接收端,各層接收模塊處理輸入的數據包,剝離相關信息,然后將數據包傳遞到下一層。于是,接收到的數據包從物理層表現為轉換為數據鏈路層表現形式和事務層表現形式。Endpoint Block Plus for PCIe包括頂層信號接口,這些接口按接收方向、發送方向和雙向共用信號分組。下面主要對各個接口進行分別介紹。系統(SYS)接口
系統(SY 接口信號由系統復位信號sys_reset_n和系統時鐘信號sys_Clk組成, 如下表所示,__ _
權利要求
1.一種FPGA用基于PCIe的集成化邏輯分析模塊,其特征是它包括觸發控制器、DMA控制器、報文發送引擎、報文接收引擎和PCIe收發控制器,所述的PCIe收發控制器作為邏輯分析模塊的控制信號輸入端連接邏輯分析模塊所在產品系統的CPU,PCIe收發控制器的控制信號輸出端連接報文接收引擎的控制信號輸入端,報文接收引擎的一控制信號輸出端連接DMA控制器的一對應控制信號輸入端,另一控制信號輸出端連接觸發控制器的控制信號輸入端,觸發控制器作為邏輯分析模塊的邏輯數據輸入端采集設計實體模塊的觸發條件的邏輯數據,觸發控制器的控制信號輸出端連接DMA控制器的對應控制信號輸入端,DMA控制器的控制信號端與報文發送引擎雙向連接,報文發送引擎的邏輯數據輸入端連接設計實體模塊的對應邏輯數據輸出端,報文發送引擎的邏輯數據輸出通過PCIe收發控制器輸出至邏輯分析模塊所在產品系統的CPU。
2.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是所述的設計實體模塊指燒結到FPGA芯片里的邏輯代碼,能實現產品所要求的功能,所述的集成化邏輯分析模塊實現的功能是采集設計實體模塊中相應的信號以實現的。
3.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是所述的觸發控制器用于判斷報文接收引擎發送過來的觸發條件,直到它從設計實體模塊采集的邏輯信號滿足判斷條件,輸出控制信號至DMA控制器進行數據采集操作,DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎,在報文發送引擎完成一次DMA 傳輸后,將結束信息送給DMA控制器。
4.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是所述的 DMA控制器包括RAM,通過PCIe初始化配置將這塊RAM映射到CPU的內存空間里,CPU通過對這片空間寫配置命令字,即可實現CPU對本系統實施命令控制;所述的PCIe初始化配置是指CPU初始化PCIe收發控制器,分配總線號,將DMA控制器里的RAM映射到系統存儲器空間里,從而使FPGA成為CPU的PCIe總線上可以訪問的掛接設備。
5.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是所述的報文接收引擎用于接收CPU下發的指令報文,對指令報文解析并將相應命令控制字輸入到 DMA控制器中。
6.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是所述的 PCIe收發控制器用于接收來自CPU的命令報文,將事務層報文轉發給報文接收引擎;同時, 將來自報文發送引擎的事務層報文,發送到CPU。
7.根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊,其特征是該分析模塊包括以下工作步驟首先,PCIe收發控制器接收來自根復合體的PCIe鏈路報文,轉發該PCIe鏈路報文到報文接收引擎;報文接收引擎解開報文,提取PCIe鏈路報文里的觸發開關、觸發條件、觸發值和觸發無關項,以及采集數據存儲的起始地址和存儲深度信息;將上述信息送到DMA控制器;報文接收引擎將觸發開關,觸發條件,觸發值和觸發無關項信息送到觸發控制器;根據實體模塊中采集的數據來判斷,當觸發點到來時,觸發控制器發出采集使能信號至DMA控制器;DMA控制器產生當前發送報文所需的目的地址和報文長度字段,給報文發送引擎;在報文發送引擎中,根據采集的實體中的數據產生PCIe鏈路報文,并送給 PCIe收發控制器;PCIe收發控制器通過根復合體將大量采集數據傳送至邏輯分析模塊所在產品系統的內存中。
8.—種FPGA,包括根據權利要求1所述的FPGA用基于PCIe的集成化邏輯分析模塊和設計實體模塊,設計實體模塊的邏輯數據輸出端與邏輯分析模塊的數據信號輸入端相連, 邏輯分析模塊的數據信號輸出端與根復合體的數據信號輸入端相連,邏輯分析模塊的控制信號輸入端通過PCIe控制鏈路與根復合體的控制信號輸出端相連,根復合體與CPU的控制信號端雙向連接。
9.根據權利要求8所述的FPGA,其特征是所述的根復合體是PCIe鏈路的交換開關,用于掛載PCIe設備,交換PCIe鏈路報文,輸出邏輯數據至內存中存儲。
全文摘要
一種FPGA用基于PCIe的集成化邏輯分析模塊,它包括觸發控制器、DMA控制器、報文發送引擎、報文接收引擎和PCIe收發控制器。本發明不僅可以實現SignalTap或ChipScope的所有功能,還可以解決大型設計中BlockRAM余量不夠用的情況,因為此時數據不是存在芯片內部而是導出到CPU側的內存中,只要內存允許便可以采集足夠量的數據。另外,由于觸發模塊是寄存器級代碼,那么可以通過修改這里的代碼來實現更為復雜的觸發設置,遠比SignalTap或ChipScope靈活得多。在大型設計中,CPU、FPGA共存于一個系統很常見,而PCIe鏈路又是很多高速系統常用通道,因此本方案的適用場合廣泛。
文檔編號G06F17/50GK102495920SQ20111037155
公開日2012年6月13日 申請日期2011年11月21日 優先權日2011年11月21日
發明者陳庚 申請人:南京中興特種軟件有限責任公司