基于一種EP2SGX系列FPGA的PCI接口設計
在現代雷達數據處理系統和其他應用系統中,傳統的ISA、EISA等總線(xiàn)已逐漸無(wú)法適應高速數據傳輸的要求。而PCI局部總線(xiàn)以其高性能、低成本、使用方便和適應性等優(yōu)點(diǎn)成為大多數系統的主流總線(xiàn)。其中常用的33 MHz、32位的PCI總線(xiàn)尖峰傳輸速率為132 MB/s。PCI總線(xiàn)接口相對其他總線(xiàn)接口來(lái)說(shuō)是比較復雜的,它有著(zhù)嚴格的同步時(shí)序要求,且為了實(shí)現即插即用和自動(dòng)配置,PCI總線(xiàn)的配置空間有許多配置寄存器需要設置。本文在簡(jiǎn)要介紹PCI總線(xiàn)及其特點(diǎn)的基礎上,介紹了如何利用FPGA設計PCI總線(xiàn)的接口電路,并給出了設計PCI總線(xiàn)接口時(shí)應注意的一些問(wèn)題。
1 PCI總線(xiàn)與數據傳輸規范
PCI總線(xiàn)信號可劃分為如圖1所示的幾種類(lèi)型。其中64位總線(xiàn)擴展信號、資源鎖存信號和邊界掃描信號是可選的。
PCI總線(xiàn)上的數據傳送是基于猝發(fā)傳送的機制,一個(gè)猝發(fā)傳送包括一個(gè)地址相和一個(gè)或多個(gè)數據相?;镜腜CI傳輸由FRAME#、IRDY#和TRDY#信號控制。當數據有效時(shí),數據資源需要無(wú)條件設置xRDY#信號(寫(xiě)操作為IRDY#,讀操作為T(mén)RDY#)。接收方可在適當時(shí)間發(fā)出它的xRDY#信號。FRAME#信號有效后的第一個(gè)時(shí)鐘上升沿是地址周期的開(kāi)始,此時(shí)傳送地址信息和總線(xiàn)命令。下一個(gè)時(shí)鐘上升沿開(kāi)始一個(gè)(或多個(gè))數據周期,當IRDY#和TRDY#同時(shí)有效時(shí),數據在主、從設備之間傳送。在此期間,可由主設備或從設備分別利用IRDY#和TRDY#的無(wú)效而插入等待周期。PCI總線(xiàn)傳輸包含讀、寫(xiě)和中止3個(gè)內容,圖2和圖3所示的時(shí)序圖顯示了PCI總線(xiàn)讀、寫(xiě)操作的傳輸過(guò)程。
2 設計考慮及芯片選擇
目前PCI接口主要有2種實(shí)現方式:使用專(zhuān)用接口芯片和采用可編程器件。專(zhuān)用芯片如PLX公司的9050等,專(zhuān)用芯片可以實(shí)現完整的PCI主控模塊和目標模塊接口功能,將復雜的PCI總線(xiàn)接口轉換為相對簡(jiǎn)單的用戶(hù)接口。缺點(diǎn)是缺少靈活性,用戶(hù)可能只用到了部分的PCI接口功能,造成了一定的邏輯資源浪費。采用FPGA的優(yōu)點(diǎn)在于其靈活的可編程性,首先PCI接口可以依據插卡功能進(jìn)行最優(yōu)化設計,而不必實(shí)現所有的PCI功能,可以節約系統的邏輯資源。其次可以將PCI插卡上的其他用戶(hù)邏輯與PCI接口邏輯集成在一個(gè)芯片上,實(shí)現緊湊設計。再者當系統升級時(shí),只需對可編程器件重新進(jìn)行邏輯設計,而無(wú)需更新PCB版圖。
PCI總線(xiàn)是同步總線(xiàn),時(shí)序要求比較嚴格,比如:Tval最大為11 ns,Tprop最大為10 ns,Tsu最小為7 ns,Th為0 ns,此外,PCI總線(xiàn)接口還需要一定數量的宏單元和I/0引腳。在本設計中,為了同時(shí)實(shí)現光纖數據傳輸等其他的邏輯功能,選用了ALTERA公司StratixIIGX系列中型號為EP2SGX90EF1152的一款FPGA芯片。該芯片主要性能如下:片內90 960個(gè)邏輯單元;4.5 Mb的RAM資源;支持12路高速串行收發(fā)器通道,每路傳輸速率高達6.375 Gb/s;接口電平支持:LVTTL、LVDS、LVPECL。3.3-V PCI等眾多I/O標準。EP2SGX系列芯片內部有專(zhuān)門(mén)支持PCI電氣特性的區域(Bank),非常適合于PCI接口的開(kāi)發(fā)。
3 PCI接口設計實(shí)現
本設計利用ALTERA公司的QuartusIl7.2軟件和硬件描述語(yǔ)言,采用自頂向下的設計方法進(jìn)行PCI接口的邏輯設計,并利用QuartusII軟件對設計進(jìn)行了功能和時(shí)序仿真。
設計的具體流程如下:首先從總體上考慮:PCI接口作為一個(gè)功能模塊,嵌入在FPGA內部,內側面向用戶(hù)邏輯,外側通過(guò)芯片的I/O管腳與PCI總線(xiàn)相連。在用戶(hù)端,需要把復雜的PCI總線(xiàn)命令轉換為便于用戶(hù)使用的類(lèi)似ISA總線(xiàn)的命令格式,把地址線(xiàn)與數據線(xiàn)分離,并產(chǎn)生單獨的讀寫(xiě)控制信號。其次,根據總體要求,進(jìn)行頂層設計和內部模塊劃分。最后,對具體的功能模塊用軟件編程實(shí)現并進(jìn)行功能仿真。
本設計中PCI接口的總體框圖如圖4所示。由圖4可知,PCI接口主要由地址/命令鎖存和譯碼、內部通信、外部通信和總線(xiàn)狀態(tài)機、中斷處理等模塊組成。
3.1 地址/命令鎖存和譯碼
由于PCI總線(xiàn)為地址和數據復用型總線(xiàn),在使用中需將地址和數據進(jìn)行分離,首先要對PCI總線(xiàn)上的32位地址/數據總線(xiàn)鎖存。譯碼是對來(lái)自主機的PCI總線(xiàn)命令信號CBE[3..0]和IDSEL信號進(jìn)行識別,并相應地向內部邏輯發(fā)出配置空間讀寫(xiě)操作、I/O讀寫(xiě)操作、存儲器讀寫(xiě)操作等信號。
3.2 外部通信
外部通信接口主要完成對PCI總線(xiàn)的應答,并發(fā)出相應的信號。對于瀆寫(xiě)操作,接口發(fā)出DEVSEL#信號響應PCI的FRAME#信號,完成握手。PCI協(xié)議規定了在交易期間對地址/數據總線(xiàn)和命令/字節使能總線(xiàn)進(jìn)行奇偶校驗。讀交易期間,接口被要求驅動(dòng)PAR信號線(xiàn);寫(xiě)交易期間,目標將計算AD[31..0]和CBE[3..0]上的奇偶性,并把PERR信號送給PCI。
3.3 內部通信
內部通信接口主要產(chǎn),豐面向用戶(hù)端,便于用戶(hù)使用的一信號,包括復位信號、分離的讀和寫(xiě)信號、地址總線(xiàn)、32位的數據讀寫(xiě)總線(xiàn)。
3.4 總線(xiàn)狀態(tài)機
該模塊足本設計的關(guān)鍵部分,其主要功能是根據PCI協(xié)議產(chǎn)生總時(shí)序來(lái)控制總線(xiàn)交易??偩€(xiàn)狀態(tài)機包含的狀態(tài)主要有總線(xiàn)空閑狀態(tài)、總線(xiàn)??繝顟B(tài)、主設備數據傳輸狀態(tài)、從設備數據傳輸狀態(tài)、配置空間讀寫(xiě)狀態(tài)、目標I/O空間讀寫(xiě)狀態(tài)、主設備讀寫(xiě)狀態(tài)、總線(xiàn)翻轉狀態(tài)、數據傳輸終止狀態(tài)等。以上各狀態(tài)主要依據輸入的PCIRST、FRAME#、IDSEL、CBE [3..0 ]、GNT#、IRDY#、TRDY#、STOP#等信號變化進(jìn)行狀態(tài)轉換。
3.5 中斷處理
本模塊主要實(shí)現各種外部中斷源的輸入處理、中斷允許寄存器和中斷狀態(tài)寄存器的控制和管理、INTA#信號的輸出處理等。
4 工具軟件在PCI總線(xiàn)調試中的使用
在板卡的調試過(guò)程中使用了WinDriver軟件,該軟件是美國Jungo公司出品用于編寫(xiě)驅動(dòng)程序的一種工具,是主要針對PCI、ISA、USB的一種開(kāi)發(fā)工具。該軟件對于調試PCI板卡很方便。用戶(hù)不需要復雜的編程就能控制PCI沒(méi)備進(jìn)行讀寫(xiě)操作,從而在硬件剛設計調試時(shí),就能測試板卡性能的好壞,可測試的功能具體包括VenderID、Device ID的識別、基地址的分配、中斷的分配、I/O端口的讀寫(xiě)測試等。
另外,在調試過(guò)程中還利用了Quartus軟件自帶的SignalTap嵌入式邏輯分析儀軟件。該工具軟件只需要通過(guò)編程電纜將JTAG口與調試計算機連接后,便可在線(xiàn)采集各種信號波形,驗證邏輯設計是否正確。
5 PCI接口板卡設計體會(huì )
設計的CPCI板卡經(jīng)過(guò)多次試驗和測試,驗證了配置空間訪(fǎng)問(wèn)、I/O空間訪(fǎng)問(wèn)、外部中斷等功能均正確。目前已經(jīng)成功應用于產(chǎn)品中,下面簡(jiǎn)要介紹設計開(kāi)發(fā)過(guò)程中的一些體會(huì )。
(1)PCI接口在板卡設計中需注意的問(wèn)題
?、侔蹇ㄉ系囊恍┬盘柖急仨氃诳拷B接器J1的地方串行放置阻值為10 Ω的終端電阻。必須端接電阻的信號有:AD[31:0]、C/BE[3:0]、PAR、FRAME#、IRDY#、TRDY#、STOP#、LOCK#、IDSEL#、DEVSEL#、PERR#、SERR#、RST#、INTA#。電阻應放置在距PCI信號連接器引腳15.2 mm以?xún)?,以減少信號經(jīng)過(guò)板卡端接后對背板的影響。不需要使用終端電阻的信號有:CLK,REQ#和GNT#。在實(shí)際設計中,必須按以上要求將信號進(jìn)行端接處理,否則PCI總線(xiàn)會(huì )工作不正常。
?、趶倪B接器J1到端接電阻的信號線(xiàn)的長(cháng)度不應超過(guò)15.2 mm。
?、蹚倪B接器兒經(jīng)端接電阻到FPGA的信號線(xiàn)的長(cháng)度不應超過(guò)38.1 mm。
(2)配置空間的簡(jiǎn)化設計
PCI總線(xiàn)的配置空間為2,56個(gè)字節。在設計中,只需對用到的參數進(jìn)行配置。一般對VenderID、DeviceID、CommandStatus、RevisicmID、ClassCode、HeaderType、InterruptLine及InterruptPin等寄存器進(jìn)行配置即可滿(mǎn)足大多場(chǎng)合下的使用要求。
(3)總線(xiàn)命令的簡(jiǎn)化設計
PCI規范中規定了16種總線(xiàn)命令,設計者只需塒其中有用的命令進(jìn)行響應即可??偩€(xiàn)命令的簡(jiǎn)化可減少總線(xiàn)對話(huà)的種類(lèi),從而可減少硬件沒(méi)計的復雜性。一般來(lái)說(shuō),只要有配置空間讀寫(xiě)、I/O空間讀寫(xiě)及存儲器的讀寫(xiě),便可滿(mǎn)足一般的使用。
6 結束語(yǔ)
本文介紹了在StratixⅡGX系列FPGA上實(shí)現PCI接口的設計技術(shù),具有較強的靈活性,可以方便地移植到其他可編程器件上,有一定的通用性。隨著(zhù)計算機技術(shù)的不斷發(fā)展,計算機總線(xiàn)在PCI總線(xiàn)基礎上逐漸發(fā)展為更高帶寬和頻率的PCI-X總線(xiàn)和擁有2.5G傳輸速率的PCI-Express總線(xiàn)。從當前發(fā)展趨勢來(lái)看,PCI-Express總線(xiàn)正得到越來(lái)越廣泛的應用,必將成為下一代的總線(xiàn)標準。
評論