PCI9656型64位PCI總線接口電路及其應(yīng)用
引言
PCI總線是目前應(yīng)用最廣泛、最流行的一種高速同步總線,具有32bit總線寬度,總線時(shí)鐘頻率為0~33MHz,最大傳輸速率可達(dá)132Mbyte/s,且可擴(kuò)展為64位、66MHz主頻。該總線的最大數(shù)據(jù)傳輸速率達(dá)528Mb/s,遠(yuǎn)遠(yuǎn)大于ISA總線5Mbyte/s的速度。PCI總線與CPU無(wú)關(guān),與時(shí)鐘頻率也無(wú)關(guān),因此可以應(yīng)用于各種平臺(tái),支持多處理器和并發(fā)操作。
PCI總線協(xié)議比較復(fù)雜,因此它的接口電路實(shí)現(xiàn)起來(lái)也比較困難。它不但有嚴(yán)格的同步時(shí)序要求,而且這了實(shí)現(xiàn)即插用和自動(dòng)配置,PCI接口還要有許多的配置寄存器。對(duì)于一般的設(shè)計(jì)者來(lái)說(shuō),為了縮短開(kāi)發(fā)周期,沒(méi)有必要設(shè)計(jì)所有的接口邏輯,只要利用通用PCI接口電路就能很好的進(jìn)行開(kāi)發(fā)設(shè)計(jì),從而大大減輕了工作難度。
目前,業(yè)界基于32位PCI總線使用較多的接口芯片是AMCC公司的S59xx系列和PLX公司的PLX系列。而現(xiàn)有普通計(jì)算機(jī)公司均已采用32位架構(gòu),系統(tǒng)的內(nèi)存尋址能力已達(dá)到4GB,因此,32位PCI總線已經(jīng)不能滿足日益龐大的數(shù)據(jù)處理需要。鑒于英特爾公司推出的Itanium處理器直接從32位躍升到64位,因此,開(kāi)發(fā)基于64位PCI總線的接口設(shè)備顯得尤為重要。下面介紹一款PLX公司的基于64位PCI總線的PCI9656型接口電路。
1 PCI9656概述
PCI9656是PLX公司為擴(kuò)展適配板卡推出的能提供混合高性能PCI總線目標(biāo)模式的接口電路,該接口電路可提供用于適配卡的小型高性能64位PCI總線目標(biāo)接口。PCI9656的內(nèi)部結(jié)構(gòu)框圖如圖1所示。它的主要特點(diǎn)如下:
●符合PCI V 2.2協(xié)議,支持64位、66MHz時(shí)鐘PCI總線,特別適用于PCI總線外設(shè)產(chǎn)品開(kāi)發(fā)。
●采用PLX數(shù)據(jù)流水線架構(gòu)(Data Pipe Architecture)技術(shù),配有DMA引擎、可編程直接主控或者直接從屬數(shù)據(jù)傳輸模式以及PCI信息傳輸功能。
●具有PCI優(yōu)先判決器,可以支持7個(gè)外部主控器。
●可以由2個(gè)局部總線中斷信號(hào)LINTi和LINTo生成一個(gè)PCI中斷信號(hào)INTA。
●局部時(shí)鐘與PCI時(shí)鐘異步工作,允許局部總線獨(dú)立于PCI時(shí)鐘工作。
●支持多路復(fù)用和非多路復(fù)用的8位、16位和32位66MHz時(shí)鐘局部總線。
●可直接生成所有的控制、地址和數(shù)據(jù)信號(hào)以驅(qū)動(dòng)PCI總線,不需要額外驅(qū)動(dòng)電路。
●可通過(guò)消息管理系統(tǒng)I/O,并提供2種方式選擇,一是通過(guò)郵箱寄存器和門(mén)鈴寄存器,二是通過(guò)所提供的I2O接口。
●寄存器PCI9054寄存器兼容,可容易地進(jìn)行基于32位PCI總線與基于64位PCI總線的軟件移植。
2 PCI9656的功能
PCI9656可用來(lái)為非PCI設(shè)備和PCI總線提供數(shù)據(jù)通道。下面介紹具體操作功能。
2.1 初始化
在上電時(shí),PCI總線的RST信號(hào)將PCI9656的內(nèi)部寄存器設(shè)置為缺省值,同時(shí),PCI9656輸出局部復(fù)位信號(hào)(LRESET)并檢查EEPROM是否存在。如果系統(tǒng)上裝有EEPROM且該EEPROM的第一個(gè)16字節(jié)非空,則PCI9656將根據(jù)EEPROM內(nèi)容設(shè)置內(nèi)部寄存器,否則設(shè)為缺省值。
2.2 復(fù)位
PCI總線的RST信號(hào)有效時(shí),整個(gè)PCI9656將復(fù)位,同時(shí),輸出LRESET局部復(fù)位信號(hào)。另外PCI總線上的主控設(shè)備也可以通過(guò)設(shè)置寄存器中的軟件復(fù)位比特來(lái)對(duì)PCI9656進(jìn)行復(fù)位,但是主控設(shè)備只能訪問(wèn)配置寄存器而不能訪問(wèn)局部總線。所以,PCI9656公一直保持這種復(fù)位狀態(tài)直到PCI主控設(shè)備清除軟件復(fù)位比特。
2.3 串行存儲(chǔ)器接口(EEPROM)
復(fù)位后,PCI9656將開(kāi)始讀串行EEPROM,START為0表示EEPROM存在。此時(shí)若該EEPROM的第一個(gè)字(16bit)既不為“全1”(EEPROM為空)也不為“全0”(EEPROM不存在),PCI9656將用它進(jìn)行配置。如START為1,表示EEPROM不存在或EEPROM為空,PCI9656采用缺省值配置。
PCI9656總線上的主機(jī)可以對(duì)串行EEPROM進(jìn)行讀寫(xiě),寄存器位[31,27-24]控制著PCI9656對(duì)EEPROM位的讀寫(xiě)。將重載配置寄存器位CNTRL[28]置1可以用串行EEPROM重新配置PCI9656。EEPROM的時(shí)鐘可由PCI總線時(shí)鐘分頻獲得。
2.4 內(nèi)部寄存器
PCI9656提供的一系列內(nèi)部寄存器可為總線接口設(shè)計(jì)提供最大的靈活性。這些寄存器主要有PCI配置寄存器、局部配置寄存器、DMA寄存器、運(yùn)行時(shí)間寄存器和消息隊(duì)列寄存器。
對(duì)PCI9656寄存器進(jìn)行讀寫(xiě)操作的單位可以是字節(jié)、字、長(zhǎng)字。PCI9656的存儲(chǔ)器訪問(wèn)可以是突發(fā)的,也可以是非突發(fā)的。
2.5 直接數(shù)據(jù)傳輸模式
PCI9656支持PCI總線上的主處理器對(duì)局部總線上的設(shè)備進(jìn)行直接訪問(wèn)。PCI9656的配置寄存器將訪問(wèn)映射到局部地址空間。其片內(nèi)讀寫(xiě)FIFO存儲(chǔ)器可使PCI9656支持PCI總線與局部總線之間的高性能突發(fā)傳送。PCI總線主控訪問(wèn)局部總線示意圖如圖2所示。
3 基于PCI9656的PCI接口設(shè)計(jì)
PCI9656是一種功能非常強(qiáng)大的64位PCI接口電路,用它來(lái)設(shè)計(jì)PCI適配卡將使接口變得非常方便。圖3是PCI主處理機(jī)讀寫(xiě)一片RAM的接口示意圖,其主要功能是實(shí)現(xiàn)對(duì)RAM的單次或突發(fā)的讀、寫(xiě)操作。
3.1 硬件設(shè)計(jì)
該P(yáng)CI接口的硬件電路分為3部分。第一部分是PCI9656和PCI插槽間的連接信號(hào)線。這些信號(hào)包括地址數(shù)據(jù)復(fù)用信號(hào)AD[31:0],總線命令信號(hào)C/BE[3:0],PCI協(xié)議控制信號(hào)PAR、FRAME、IRDY、TRDY、STOP、IDSEL、DEVSEL、PERR、SERR以及64位PCI總線擴(kuò)展信號(hào)AD[63:32]、C/BE[7:4]、PAR64、REQ64、ACK。第二部分是與串行EEPROM的連線。這部分有4根信號(hào)線:EESK、EEDO、EEDI、EECS,串行EEPROM的數(shù)據(jù)可以提前燒好,也可以在線燒寫(xiě)。第三部分是PCI9656與FPGA的連接。對(duì)于FPGA的選擇及其內(nèi)部設(shè)計(jì)有必要作以下說(shuō)明:ACEX1K50QC208-3是Altera公司推出的一款低成本FPGA,選擇該電路作為該設(shè)計(jì)的控制器,利用其內(nèi)部邏輯單元設(shè)計(jì)局部總線控制器,可用于實(shí)現(xiàn)局部總線的狀態(tài)控制。雙端口RAM可選用ALTERA公司提供的庫(kù)函數(shù)LPM_RAM_DP來(lái)設(shè)計(jì)實(shí)現(xiàn),其存儲(chǔ)容量為1.24x32bit,占用8個(gè)EAB,其余的邏輯單元和EAB用作內(nèi)部的其他控制。RAM的讀寫(xiě)使能信號(hào)由局部總線狀態(tài)機(jī)產(chǎn)生,地址計(jì)數(shù)器的輸出可作為它的讀寫(xiě)地址。
3.2 軟件設(shè)計(jì)
該P(yáng)CI接口軟件的設(shè)計(jì)主要分為2部分。一部分用于該P(yáng)CI9656各個(gè)配置寄存器賦值并初始化,另一部分為主程序,用來(lái)完成PCI9656與主機(jī)CPU之間的數(shù)據(jù)交互。
4 使用PCI9656時(shí)應(yīng)該注意的問(wèn)題
PCI9656內(nèi)部的寄存器是通過(guò)外部串行EEPROM上電加載的,因此,PCI9656會(huì)自動(dòng)根據(jù)該EEPROM的狀態(tài)來(lái)決定其內(nèi)部寄存器的值。如果EEPROM內(nèi)部沒(méi)有燒寫(xiě)為有效值,應(yīng)保證其開(kāi)始的48位為全“1”,否則,系統(tǒng)上電時(shí)將會(huì)出錯(cuò)。
PCI9656有3個(gè)PCI-LOCAL總線地址空間(S0、S1和擴(kuò)展ROM)和2個(gè)具有獨(dú)立FIFO的DMA通道,用戶(hù)可根據(jù)實(shí)際需要來(lái)進(jìn)行配置,并不是要用到所有的。若將本地空間配置成I/O,該空間的讀寫(xiě)只能單次進(jìn)行。而若將其配置成存儲(chǔ)器模式,則可大大提高讀寫(xiě)速度。
突發(fā)模式是為了提高本地總線操作速度而設(shè)計(jì)的。在該模式下,PCI9656只提供一次傳輸開(kāi)始和終止信號(hào)。設(shè)計(jì)時(shí),可以利用BTERM引腳是否有效來(lái)中止突發(fā)操作。
還有一點(diǎn)需要說(shuō)明,當(dāng)執(zhí)行64bit PCI數(shù)據(jù)傳輸時(shí),低32bit PCI數(shù)據(jù)(AD[31:0])總是首先被局部總線傳輸?;?2位、16位、8位局部總線操作的數(shù)據(jù)傳輸順序可由局部總線“字節(jié)通道”決定。局部總線“字節(jié)通道”分為“低字節(jié)通道”與“高字節(jié)通道”,字節(jié)通道由配置寄存器Big/Little Endian描述寄存器中的Byte Lane Mode位所決定。若該位為0(BIGEND[4]=0)時(shí),則為“低字節(jié)通道”模式,反之為“高字節(jié)通道”模式。
5 結(jié)束語(yǔ)
選用第三方EDA工具并采用VHDL硬件描述語(yǔ)言可對(duì)該狀態(tài)機(jī)進(jìn)行行為級(jí)描述和邏輯綜合,同時(shí)可將生成的網(wǎng)表文件送入Quartus軟件進(jìn)行再綜合、功能仿真和定時(shí)仿真。實(shí)驗(yàn)結(jié)果表明,該狀態(tài)機(jī)的最高工作頻率可達(dá)101MHz,完全能夠滿足PCI9656局部總線的性能要求。
PCI9656以其強(qiáng)大的功能和簡(jiǎn)單的用戶(hù)接口為基于64位PCI總線接口的開(kāi)發(fā)提供了一種簡(jiǎn)潔的方法,設(shè)計(jì)者只需設(shè)計(jì)局部總線接口控制電路即可實(shí)現(xiàn)與PCI總線的高速數(shù)據(jù)傳輸。