黎德文 胡小文
[摘要]介紹在FPGA上實現(xiàn)PCI總線接口的設(shè)計方案,在主控與用戶功能模塊之間的進行數(shù)據(jù)交換,以突發(fā)寫方式進行大量數(shù)據(jù)的高速傳輸。重點描述用戶邏輯接口模塊的程序設(shè)計,滿足PCI總線時序要求,提高系統(tǒng)效率和性能。
[關(guān)鍵詞]PCI總線 接口 FPGA
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0420031-01
一、PCI總線及其接口概述
PCI(Peripheral Component Interconnect)總線即外圍部件互連總線,是由Intel公司1991年首先提出的,工作頻率是33Mhz,具有32bit總線寬度,理論上最大傳輸率為132MByte/s,比傳統(tǒng)的ISA總線5MByte/s速率高得多。而且使用PCI總線一個突出的特點就是CPU占用率極低。在需要的高數(shù)據(jù)率和低功耗的場合,PCI總線頗受青睞。尤其是PCI SIG在1995年公布了PCI總線規(guī)范2.1版本后,PCI總線更加受到業(yè)界的重視并被越來越多的高檔微機和服務(wù)器所采用。
PCI接口設(shè)計一般有兩種實現(xiàn)方案:第一種是采用專用的PCI接口芯片實現(xiàn),可以避免復(fù)雜的PCI協(xié)議,縮短開發(fā)周期,降低開發(fā)難度。但系統(tǒng)結(jié)構(gòu)受接口芯片的限制,不能靈活地設(shè)計目標系統(tǒng),且成本較高。第二種是使用可編程邏輯器件FPGA實現(xiàn)。這種方案可以根據(jù)整個系統(tǒng)的實際需要僅選擇實現(xiàn)PCI協(xié)議的某些子集,同時將另外的一些重要的功能集成到同一個器件上,這樣就使得所設(shè)計的PCI接口具有很強的針對性和靈活性,與此同時又可以極大地降低這個系統(tǒng)的成本。
PCI的外部設(shè)備既可以作為PCI總線從設(shè)備(Target),實現(xiàn)基本的傳送要求,也可以作為PCI總線的主設(shè)備(Master),訪問其他PCI總線設(shè)備及系統(tǒng)的其他的資源。ALTERA公司提供了多種不同功能的PCI MegaCore。例如:pci_mt64(支持64位的Master/Target接口),pci_t64(支持64位的Target接口),pci_mt32(32位的Master/Target接口),pci_t32(32
位的Target接口)等。因為突發(fā)讀寫過程,PCI總線寫效率要比讀效率高得多,故我們選用pci_mt32,既作為PCI總線從設(shè)備接收寫數(shù)據(jù),也可以作PCI主設(shè)備向主控寫數(shù)據(jù)。
二、PCI總線在FPGA中的實現(xiàn)
PCI總線在FPGA中的實現(xiàn)框圖如圖2所示,PCI總線在系統(tǒng)中主要完成主控與FPGA用戶功能模塊之間的數(shù)據(jù)傳輸。要實現(xiàn)PCI接口設(shè)計,我們需要做的工作是與pci_mt32相連的用戶邏輯接口設(shè)計,以滿足PCI總線嚴格的同步時序要求,實現(xiàn)數(shù)據(jù)的快速、有效傳輸。
三、用戶邏輯接口設(shè)計
當(dāng)主控向FPGA寫數(shù)據(jù)時,用戶邏輯接口模塊在lt_dxfrn='0'時將接收到的數(shù)據(jù)l_dato存在FIFO里面,并在接收完數(shù)據(jù)時向用戶功能模塊發(fā)送transrdy脈沖信號,用戶功能模塊開始讀取FIFO中的數(shù)據(jù)。
而當(dāng)用戶功能模塊處理完數(shù)據(jù)后,即向用戶邏輯接口模塊中RAM寫入數(shù)據(jù),寫完所有數(shù)據(jù)后向用戶接口模塊發(fā)送recvrdy脈沖信號。用戶邏輯接口模塊接收到recvrdy脈沖信號后向pci_mt32發(fā)送lm_req32信號,pci_mt32隨后向PCI總線仲裁器發(fā)送reqn信號,并接收到有效的gntn信號后變?yōu)镻CI主設(shè)備,將RAM中的數(shù)據(jù)寫到主控內(nèi)存。
PCI狀態(tài)機如圖2所示,而PCI作主設(shè)備時的狀態(tài)機如圖3所示。
四、傳輸波形
主控向FPGA寫數(shù)據(jù)時,pci_mt32作從設(shè)備時的波形如圖4所示。
FPGA向主控寫數(shù)據(jù)時,pci_mt32作主設(shè)備時的波形如圖5所示:
五、結(jié)束語
本文介紹了在FPGA上實現(xiàn)PCI總線接口的設(shè)計方案,在主控與用戶功能模塊之間的進行數(shù)據(jù)交換,以突發(fā)寫方式進行大量數(shù)據(jù)的高速傳輸。在時鐘頻率33MHz下,平均數(shù)據(jù)率可達400Mb/s以上,數(shù)據(jù)傳輸效果很好,完全符合pci總線的要求,這種設(shè)計提供了靈活的接口控制,實現(xiàn)快速、可靠的數(shù)據(jù)傳輸。
參考文獻:
[1]PCI MegaCore Function User Guide,Version 4.2December 2006.
[2]PCI Local Bus Specification,Revision 2.3,October 31,2001.