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