PCI局部總線不僅是目前最新的計算機總線,而且是一種兼容性最強、功能最全的計算機總線。它可同時支持多組外圍設備,而且不受制于處理器,為CPU及高速外圍設備提供高性能、高吞吐量、低延遲的數據通路。圖形用戶界面(GUI)、高清晰度電視(HDTV)、三維視頻多媒體顯示等新技術的發展以及高速通訊系統的廣泛需求使PCI具有良好的應用前景。針對這種趨勢,國外許多芯片廠家設計生產了各種各樣的PCI專用集成電路。 目前國內系統廠家的PCI總線接口一般采用國外的PCI專用芯片,如TUNDRA公司的Qspan、PLX公司9050、INTEL公司的21554等,但是這些專用芯片價格昂貴、功能繁雜、不能靈活配置、不利于系統的升級優化,難于應用。為此,各大FPGA廠商紛紛推出基于各自可編程邏輯器件結構與工藝的PCI IP模塊(軟核、固核或硬核)。 Xilinx,Altera,Actel及QuickLogic等公司的PCI核在國內都有廣泛應用,它們各有特色,總體而言,Xilinx的PCI Core是含有布局布線信息的HDL門級網表格式,便于VHDL方法設計及第三方EDA軟件環境下的仿真驗證;Altera的PCI Core為AHDL格式,通過ACF文件提供布局布線時的約束,其用戶側的信號數量較少,功能簡單,便于實現;Actel及QuickLogic公司的反熔絲結構,使其可編程芯片在速度與性能上有一定的優勢,但PCI核的功能則相對較弱。 根據VoIP、CDMA等先進的通訊系統對PCI總線接口的實際需求,我們通過評估比較,決定采用Altera公司的64位66MHz PCI Core,在VERIBEST及MAXPLUSII NT設計平臺上,針對目標器件FLEX10K 100E,利用VHDL硬件描述語言,設計了PCI總線到摩托羅拉CPU的FPGA橋接芯片。該芯片介于PCI總線與摩托羅拉CPU之間,提供兩種總線間的地址轉換,命令譯碼,數據緩沖與傳輸,即插即用的配置,為系統的高速數據傳輸提供無縫的接口。 1. 設計輸入 設計輸入包括VHDL代碼設計及功能仿真。在進行設計之前,先對系統劃分功能模塊,最頂層例化兩個模塊:Altera的PCI Core和用戶側邏輯。用戶側邏輯根據功能再進一步細化。VHDL的結構化特點非常便于層次化設計,每個工程師負責完成功能相對獨立的各子模塊設計仿真,最后進行整體的功能仿真。進行整體功能仿真前,先要提取PCI Core的功能仿真模型,在MAXPLUSⅡ環境下,按照系統要求配置PCI Core的相關參數,然后對其進行編譯及布局布線,此時不必產生ACF文件。為能輸出用于VERIBEST環境下仿真的VHDL網表,編譯時需要選擇INTERFACE菜單下VHDL NETLIST WRITER。考慮到綜合后可能要作帶門級延時的仿真,編譯時最好產生SDF標準延時文件,在INTERFACE菜單下VHDL OUTPUT FILE[.VHO](WRITE DELAY CONSTRUCTS TO一欄中)。完成以上關鍵設置后,通過編譯即可得到PCI Core帶延時的VHDL網表文件。通過相同的操作可得到用戶側邏輯模塊中例化的其他Altera的MegaCore子模塊。 用戶側邏輯模塊與PCI Core互連時,需要注意一些關鍵問題。PCI Core支持PCI主/從工作模式,其用戶側主/從模式信號是分開的,在PCI Core處于一種工作模式時,另一種模式的信號必需處于確定的無效態,不能處于懸浮態或高阻態。用戶側邏輯模塊內部應避免使用三態信號,為便于控制與調試,應采用狀態機設計。對于PCI 時鐘與CPU時鐘間的交互使用,應采用握手信號實現。 功能仿真在VERIBEST99 FPGA DESIGNVIEW環境下進行。仿真時首先要對PCI Core進行配置訪問,配置PCI Core內部配置寄存器的相應位。 2. 設計實現 設計實現包括邏輯綜合及布局布線。功能仿真完成后,下一步為用戶邏輯的綜合。VERIBEST 支持兩種 FPGA 綜合器;FPGA EXPRESS 和 SYNPLIFY。FPGA EXPRESS操作簡單,界面清晰,綜合效率好,但其SCHEMATIC VIEW功能較差,所生成的原理圖晦澀難懂,不利于深入的時序分析。SYNPLIFY提供了RTL VIEW和TECHNOLOGY VIEW兩種原理圖,有利于關鍵路徑的尋找和分析,它還提供了許多功能強大的屬性參數,但同時也增加了軟件使用的復雜性。 VHDL語言中例化的FPGA IP模塊(PCI核,雙端口RAM等)應該不參與邏輯綜合,可以在VHDL源碼中加入FPGA EXPRESS的綜合開關-RPAGMA SYNTHESIS_OFF或SYPLIFY的綜合開關-SYNTHESIS TRANSLATE_OFF實現,也可以將FPGA IP模塊的VHDL網表文件從綜合文件列表中刪除。 邏輯綜合時應該分模塊進行,找出各子模塊內部的關鍵路徑,通過修改設計,優化數據通路,最后進行頂層的綜合。頂層綜合時最好保留設計層次。對于各模塊間的關聯信號,由于它們一般經過多級查找表,造成延時較大,應利用流水線技術在這些關鍵路徑上加入適當數量的觸發器,減小 時延。軟件上的一些設置也有利于提高綜合后電路的頻率,如狀態機采用ONE HOT編碼,減小FANOUT數量,屏蔽操作數共享功能等。通過上述方法,我們的設計綜合后電路的頻率從38MHz提升到63MHz。 綜合完成后可生成用于MAXPLUSⅡ環境下布局布線的EDIF文件,如要作門級仿真,也可同時生成帶延時的VHDL網表文件。在MAX-PLUSⅡ中調入EDIF文件后,設置ASSIGN菜單下相關參數并指明PCI Core的庫路徑。編譯EDIF文件時要設置EDIF NETLIST READER為SYNOPSYS或SYNPLIFY。第一次布局布線,最好不要加入ACF文件。完成后,按要求生成PCI Core的ACF文件并放在工作目錄下,加入自己的約束條件,然后進行第二次布局布線,此時應設置產生用于VERIBEST進行功能驗證的VHDL網表文件。布局布線后,進行時間參數分析。我們的設計結果PCI時鐘為30MHz,CPU時鐘為57MHz。 3. 設計驗證 設計驗證包括靜態時序分析,功能驗證及板級驗證。靜態時序分析用于分析建立/保持時間,時鐘到輸出時間等時間參數是否滿足PCI規范。33MHz、32位的PCI規范要求建立時間小于7ns,保持時間為0ns,時鐘到輸出時間小于11ns,分析時必需考慮觸發器的影響,對關鍵路徑加以細致入微的計算。MAXPLUSⅡ提供了比較好的靜態時序分析功能,設計工程師負責設置并分配時間參數,軟件計算后給出分析結果,如果不滿足要求,可在重新布局布線時加上相關約束條件。時序分析結束后,還需進行功能驗證,在VERIBEST環境下對布局布線后生成的VHDL網表仿真,此時應選擇OPEN POST_LAYOUT SIMULATOR進入仿真器。VERIBEST會自動生成VHDL格式的端口映射文件,并自動關聯SDF文件,用戶無需額外設置。此時的功能仿真,調試相對較難,信號間關聯關系可通過VHDL網表文件查詢。 基于PCI Core的FPGA設計的板級驗證可考慮采用Altera公司提供的PCI通用開發板,該板支持Altera所有的PCI MegaCore模塊,用戶可通過板上的SDRAM,PMC插槽,RS232端口實現用戶邏輯與PCI Core的接口,也可以利用板上PROTOTYPE區實現用戶邏輯的功能。PCI開發板演示軟件可以顯示數據傳輸速率,也可用于調試,配置PCI Core。 基于IP模塊的PCI設計為用戶在FPGA目標器件上實現PCI接口提供了一種有效的途徑,設計工程師可以將主要精力集中于非PCI部分,通過將FPGA廠商提供的IP模塊與原理圖、狀態機及HDL語言等設計方法有機的結合,采用層次化結構,在功能強大的EDA軟件環境下,于較短的時間內完成復雜電子系統的設計。 |