《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于EP2SGX系列FPGA的PCI接口設(shè)計(jì)
基于EP2SGX系列FPGA的PCI接口設(shè)計(jì)
國(guó)外電子測(cè)量技術(shù) 中國(guó)電子科技集團(tuán) 孫高俊 劉志英
摘要: 在現(xiàn)代雷達(dá)數(shù)據(jù)處理系統(tǒng)和其他應(yīng)用系統(tǒng)中,,傳統(tǒng)的ISA,、EISA等總線(xiàn)已逐漸無(wú)法適應(yīng)高速數(shù)據(jù)傳輸?shù)囊蟆6鳳CI局部總線(xiàn)以其高性能,、低成本、使用方便和適應(yīng)性等優(yōu)點(diǎn)成為大多數(shù)系統(tǒng)的主流總線(xiàn)。其中常用的33 MHz,、32位的PCI總線(xiàn)尖峰傳輸速率為132 MB/s,。PCI總線(xiàn)接口相對(duì)其他總線(xiàn)接口來(lái)說(shuō)是比較復(fù)雜的,它有著嚴(yán)格的同步時(shí)序要求,,且為了實(shí)現(xiàn)即插即用和自動(dòng)配置,,PCI總線(xiàn)的配置空間有許多配置寄存器需要設(shè)置。本文在簡(jiǎn)要介紹PCI總線(xiàn)及其特點(diǎn)的基礎(chǔ)上,,介紹了如何利用FPGA設(shè)計(jì)PCI總線(xiàn)的接口電路,,并給出了設(shè)計(jì)PCI總線(xiàn)接口時(shí)應(yīng)注意的一些問(wèn)題。
Abstract:
Key words :

         在現(xiàn)代雷達(dá)數(shù)據(jù)處理系統(tǒng)和其他應(yīng)用系統(tǒng)中,,傳統(tǒng)的ISA,、EISA等總線(xiàn)已逐漸無(wú)法適應(yīng)高速數(shù)據(jù)傳輸?shù)囊蟆6鳳CI局部總線(xiàn)以其高性能,、低成本,、使用方便和適應(yīng)性等優(yōu)點(diǎn)成為大多數(shù)系統(tǒng)的主流總線(xiàn)。其中常用的33 MHz,、32位的PCI總線(xiàn)尖峰傳輸速率為132 MB/s,。PCI總線(xiàn)接口相對(duì)其他總線(xiàn)接口來(lái)說(shuō)是比較復(fù)雜的,它有著嚴(yán)格的同步時(shí)序要求,,且為了實(shí)現(xiàn)即插即用和自動(dòng)配置,,PCI總線(xiàn)的配置空間有許多配置寄存器需要設(shè)置。本文在簡(jiǎn)要介紹PCI總線(xiàn)及其特點(diǎn)的基礎(chǔ)上,,介紹了如何利用FPGA設(shè)計(jì)PCI總線(xiàn)的接口電路,,并給出了設(shè)計(jì)PCI總線(xiàn)接口時(shí)應(yīng)注意的一些問(wèn)題。

  1 PCI總線(xiàn)與數(shù)據(jù)傳輸規(guī)范

  PCI總線(xiàn)信號(hào)可劃分為如圖1所示的幾種類(lèi)型,。其中64位總線(xiàn)擴(kuò)展信號(hào),、資源鎖存信號(hào)和邊界掃描信號(hào)是可選的。

  PCI總線(xiàn)上的數(shù)據(jù)傳送是基于猝發(fā)傳送的機(jī)制,,一個(gè)猝發(fā)傳送包括一個(gè)地址相和一個(gè)或多個(gè)數(shù)據(jù)相,。基本的PCI傳輸由FRAME#,、IRDY#和TRDY#信號(hào)控制,。當(dāng)數(shù)據(jù)有效時(shí),數(shù)據(jù)資源需要無(wú)條件設(shè)置xRDY#信號(hào)(寫(xiě)操作為IRDY#,,讀操作為T(mén)RDY#),。接收方可在適當(dāng)時(shí)間發(fā)出它的xRDY#信號(hào)。FRAME#信號(hào)有效后的第一個(gè)時(shí)鐘上升沿是地址周期的開(kāi)始,,此時(shí)傳送地址信息和總線(xiàn)命令,。下一個(gè)時(shí)鐘上升沿開(kāi)始一個(gè)(或多個(gè))數(shù)據(jù)周期,當(dāng)IRDY#和TRDY#同時(shí)有效時(shí),數(shù)據(jù)在主,、從設(shè)備之間傳送,。在此期間,可由主設(shè)備或從設(shè)備分別利用IRDY#和TRDY#的無(wú)效而插入等待周期,。PCI總線(xiàn)傳輸包含讀,、寫(xiě)和中止3個(gè)內(nèi)容,圖2和圖3所示的時(shí)序圖顯示了PCI總線(xiàn)讀,、寫(xiě)操作的傳輸過(guò)程,。

  2 設(shè)計(jì)考慮及芯片選擇

  目前PCI接口主要有2種實(shí)現(xiàn)方式:使用專(zhuān)用接口芯片和采用可編程器件。專(zhuān)用芯片如PLX公司的9050等,,專(zhuān)用芯片可以實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊接口功能,,將復(fù)雜的PCI總線(xiàn)接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的用戶(hù)接口。缺點(diǎn)是缺少靈活性,,用戶(hù)可能只用到了部分的PCI接口功能,,造成了一定的邏輯資源浪費(fèi)。采用FPGA的優(yōu)點(diǎn)在于其靈活的可編程性,,首先PCI接口可以依據(jù)插卡功能進(jìn)行最優(yōu)化設(shè)計(jì),,而不必實(shí)現(xiàn)所有的PCI功能,可以節(jié)約系統(tǒng)的邏輯資源,。其次可以將PCI插卡上的其他用戶(hù)邏輯與PCI接口邏輯集成在一個(gè)芯片上,,實(shí)現(xiàn)緊湊設(shè)計(jì)。再者當(dāng)系統(tǒng)升級(jí)時(shí),,只需對(duì)可編程器件重新進(jìn)行邏輯設(shè)計(jì),,而無(wú)需更新PCB版圖。

  PCI總線(xiàn)是同步總線(xiàn),,時(shí)序要求比較嚴(yán)格,比如:Tval最大為11 ns,,Tprop最大為10 ns,,Tsu最小為7 ns,Th為0 ns,,此外,,PCI總線(xiàn)接口還需要一定數(shù)量的宏單元和I/0引腳。在本設(shè)計(jì)中,,為了同時(shí)實(shí)現(xiàn)光纖數(shù)據(jù)傳輸?shù)绕渌倪壿嫻δ?,選用了ALTERA公司StratixIIGX系列中型號(hào)為EP2SGX90EF1152的一款FPGA芯片。該芯片主要性能如下:片內(nèi)90 960個(gè)邏輯單元,;4.5 Mb的RAM資源,;支持12路高速串行收發(fā)器通道,每路傳輸速率高達(dá)6.375 Gb/s;接口電平支持:LVTTL,、LVDS,、LVPECL。3.3-V PCI等眾多I/O標(biāo)準(zhǔn),。EP2SGX系列芯片內(nèi)部有專(zhuān)門(mén)支持PCI電氣特性的區(qū)域(Bank),,非常適合于PCI接口的開(kāi)發(fā)。

  3 PCI接口設(shè)計(jì)實(shí)現(xiàn)

  本設(shè)計(jì)利用ALTERA公司的QuartusIl7.2軟件和硬件描述語(yǔ)言,,采用自頂向下的設(shè)計(jì)方法進(jìn)行PCI接口的邏輯設(shè)計(jì),,并利用QuartusII軟件對(duì)設(shè)計(jì)進(jìn)行了功能和時(shí)序仿真。

  設(shè)計(jì)的具體流程如下:首先從總體上考慮:PCI接口作為一個(gè)功能模塊,,嵌入在FPGA內(nèi)部,,內(nèi)側(cè)面向用戶(hù)邏輯,外側(cè)通過(guò)芯片的I/O管腳與PCI總線(xiàn)相連,。在用戶(hù)端,,需要把復(fù)雜的PCI總線(xiàn)命令轉(zhuǎn)換為便于用戶(hù)使用的類(lèi)似ISA總線(xiàn)的命令格式,把地址線(xiàn)與數(shù)據(jù)線(xiàn)分離,,并產(chǎn)生單獨(dú)的讀寫(xiě)控制信號(hào),。其次,根據(jù)總體要求,,進(jìn)行頂層設(shè)計(jì)和內(nèi)部模塊劃分,。最后,對(duì)具體的功能模塊用軟件編程實(shí)現(xiàn)并進(jìn)行功能仿真,。

  本設(shè)計(jì)中PCI接口的總體框圖如圖4所示,。由圖4可知,PCI接口主要由地址/命令鎖存和譯碼,、內(nèi)部通信,、外部通信和總線(xiàn)狀態(tài)機(jī)、中斷處理等模塊組成,。

 

 3.1 地址/命令鎖存和譯碼
  由于PCI總線(xiàn)為地址和數(shù)據(jù)復(fù)用型總線(xiàn),,在使用中需將地址和數(shù)據(jù)進(jìn)行分離,首先要對(duì)PCI總線(xiàn)上的32位地址/數(shù)據(jù)總線(xiàn)鎖存,。譯碼是對(duì)來(lái)自主機(jī)的PCI總線(xiàn)命令信號(hào)CBE[3..0]和IDSEL信號(hào)進(jìn)行識(shí)別,,并相應(yīng)地向內(nèi)部邏輯發(fā)出配置空間讀寫(xiě)操作、I/O讀寫(xiě)操作,、存儲(chǔ)器讀寫(xiě)操作等信號(hào),。
 
  3.2 外部通信
  外部通信接口主要完成對(duì)PCI總線(xiàn)的應(yīng)答,并發(fā)出相應(yīng)的信號(hào),。對(duì)于瀆寫(xiě)操作,,接口發(fā)出DEVSEL#信號(hào)響應(yīng)PCI的FRAME#信號(hào),完成握手。PCI協(xié)議規(guī)定了在交易期間對(duì)地址/數(shù)據(jù)總線(xiàn)和命令/字節(jié)使能總線(xiàn)進(jìn)行奇偶校驗(yàn),。讀交易期間,,接口被要求驅(qū)動(dòng)PAR信號(hào)線(xiàn);寫(xiě)交易期間,,目標(biāo)將計(jì)算AD[31..0]和CBE[3..0]上的奇偶性,,并把PERR信號(hào)送給PCI。
 
  3.3 內(nèi)部通信
  內(nèi)部通信接口主要產(chǎn),,豐面向用戶(hù)端,,便于用戶(hù)使用的一信號(hào),包括復(fù)位信號(hào),、分離的讀和寫(xiě)信號(hào),、地址總線(xiàn)、32位的數(shù)據(jù)讀寫(xiě)總線(xiàn),。
 
  3.4 總線(xiàn)狀態(tài)機(jī)
  該模塊足本設(shè)計(jì)的關(guān)鍵部分,,其主要功能是根據(jù)PCI協(xié)議產(chǎn)生總時(shí)序來(lái)控制總線(xiàn)交易??偩€(xiàn)狀態(tài)機(jī)包含的狀態(tài)主要有總線(xiàn)空閑狀態(tài),、總線(xiàn)停靠狀態(tài),、主設(shè)備數(shù)據(jù)傳輸狀態(tài),、從設(shè)備數(shù)據(jù)傳輸狀態(tài)、配置空間讀寫(xiě)狀態(tài),、目標(biāo)I/O空間讀寫(xiě)狀態(tài),、主設(shè)備讀寫(xiě)狀態(tài)、總線(xiàn)翻轉(zhuǎn)狀態(tài),、數(shù)據(jù)傳輸終止?fàn)顟B(tài)等,。以上各狀態(tài)主要依據(jù)輸入的PCIRST、FRAME#,、IDSEL,、CBE [3..0 ]、GNT#,、IRDY#、TRDY#,、STOP#等信號(hào)變化進(jìn)行狀態(tài)轉(zhuǎn)換,。
 
  3.5 中斷處理
 
  本模塊主要實(shí)現(xiàn)各種外部中斷源的輸入處理、中斷允許寄存器和中斷狀態(tài)寄存器的控制和管理,、INTA#信號(hào)的輸出處理等,。
 
  4 工具軟件在PCI總線(xiàn)調(diào)試中的使用
  在板卡的調(diào)試過(guò)程中使用了WinDriver軟件,該軟件是美國(guó)Jungo公司出品用于編寫(xiě)驅(qū)動(dòng)程序的一種工具,是主要針對(duì)PCI,、ISA,、USB的一種開(kāi)發(fā)工具。該軟件對(duì)于調(diào)試PCI板卡很方便,。用戶(hù)不需要復(fù)雜的編程就能控制PCI沒(méi)備進(jìn)行讀寫(xiě)操作,,從而在硬件剛設(shè)計(jì)調(diào)試時(shí),就能測(cè)試板卡性能的好壞,,可測(cè)試的功能具體包括VenderID,、Device ID的識(shí)別、基地址的分配,、中斷的分配,、I/O端口的讀寫(xiě)測(cè)試等。
 
  另外,,在調(diào)試過(guò)程中還利用了Quartus軟件自帶的SignalTap嵌入式邏輯分析儀軟件,。該工具軟件只需要通過(guò)編程電纜將JTAG口與調(diào)試計(jì)算機(jī)連接后,便可在線(xiàn)采集各種信號(hào)波形,,驗(yàn)證邏輯設(shè)計(jì)是否正確,。
 
  5 PCI接口板卡設(shè)計(jì)體會(huì)
  設(shè)計(jì)的CPCI板卡經(jīng)過(guò)多次試驗(yàn)和測(cè)試,驗(yàn)證了配置空間訪(fǎng)問(wèn),、I/O空間訪(fǎng)問(wèn),、外部中斷等功能均正確。目前已經(jīng)成功應(yīng)用于產(chǎn)品中,,下面簡(jiǎn)要介紹設(shè)計(jì)開(kāi)發(fā)過(guò)程中的一些體會(huì),。
 
  (1)PCI接口在板卡設(shè)計(jì)中需注意的問(wèn)題
 
  ①板卡上的一些信號(hào)都必須在靠近連接器J1的地方串行放置阻值為10 Ω的終端電阻,。必須端接電阻的信號(hào)有:AD[31:0],、C/BE[3:0]、PAR,、FRAME#,、IRDY#、TRDY#,、STOP#,、LOCK#、IDSEL#,、DEVSEL#,、PERR#、SERR#,、RST#,、INTA#,。電阻應(yīng)放置在距PCI信號(hào)連接器引腳15.2 mm以?xún)?nèi),以減少信號(hào)經(jīng)過(guò)板卡端接后對(duì)背板的影響,。不需要使用終端電阻的信號(hào)有:CLK,,REQ#和GNT#。在實(shí)際設(shè)計(jì)中,,必須按以上要求將信號(hào)進(jìn)行端接處理,,否則PCI總線(xiàn)會(huì)工作不正常。
 
 ?、趶倪B接器J1到端接電阻的信號(hào)線(xiàn)的長(zhǎng)度不應(yīng)超過(guò)15.2 mm,。
 
  ③從連接器兒經(jīng)端接電阻到FPGA的信號(hào)線(xiàn)的長(zhǎng)度不應(yīng)超過(guò)38.1 mm,。
 
  (2)配置空間的簡(jiǎn)化設(shè)計(jì)
  PCI總線(xiàn)的配置空間為2,56個(gè)字節(jié),。在設(shè)計(jì)中,只需對(duì)用到的參數(shù)進(jìn)行配置,。一般對(duì)VenderID,、DeviceID、CommandStatus,、RevisicmID,、ClassCode、HeaderType,、InterruptLine及InterruptPin等寄存器進(jìn)行配置即可滿(mǎn)足大多場(chǎng)合下的使用要求,。
 
     (3)總線(xiàn)命令的簡(jiǎn)化設(shè)計(jì)
  PCI規(guī)范中規(guī)定了16種總線(xiàn)命令,設(shè)計(jì)者只需塒其中有用的命令進(jìn)行響應(yīng)即可,??偩€(xiàn)命令的簡(jiǎn)化可減少總線(xiàn)對(duì)話(huà)的種類(lèi),從而可減少硬件沒(méi)計(jì)的復(fù)雜性,。一般來(lái)說(shuō),,只要有配置空間讀寫(xiě)、I/O空間讀寫(xiě)及存儲(chǔ)器的讀寫(xiě),,便可滿(mǎn)足一般的使用,。
 
  6 結(jié)束語(yǔ)
  本文介紹了在StratixⅡGX系列FPGA上實(shí)現(xiàn)PCI接口的設(shè)計(jì)技術(shù),具有較強(qiáng)的靈活性,,可以方便地移植到其他可編程器件上,,有一定的通用性。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,,計(jì)算機(jī)總線(xiàn)在PCI總線(xiàn)基礎(chǔ)上逐漸發(fā)展為更高帶寬和頻率的PCI-X總線(xiàn)和擁有2.5G傳輸速率的PCI-Express總線(xiàn),。從當(dāng)前發(fā)展趨勢(shì)來(lái)看,PCI-Express總線(xiàn)正得到越來(lái)越廣泛的應(yīng)用,,必將成為下一代的總線(xiàn)標(biāo)準(zhǔn),。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。