AMCCS5933 在PCI板卡設計中的應用
PCI總線是計算機主機中最常見的總線。它是一種高性能的32/64位地址數據復用總線,支持猝發傳輸,傳輸峰值速率可達528MB/s,而且還支持自動配置。由于PCI總線協議的復雜性,其接口電路實現起來并不容易。但采用通用PCI接口芯片卻能達到事半功倍的效果。PCI通用接口芯片對于PCI協議的良好支持及其提供給板卡設計者的良好接口都大大減小了PCI板卡設計者的工作量。現有的PCI接口芯片主要有AMCC公司的 AMCCS59XX系列和PLXTECH公司的PLX系列。本文將對AMCC公司的AMCCS5933芯片的原理及其在PCI板卡設計中的應用進行介紹。
1 工作原理
AMCCS5933的原理框圖如圖1所示。由圖1可知AMCCS5933起到的是一個橋路的作用,即它是PCI總線與本地總線之間的一個橋路。
AMCCS5933既可以作PCI從設備,又可以作PCI主控設備。PCI配置空間可以通過一EEPROM來配置。AMCCS5933為設計者提供了三種數據傳輸方式:PASS THRU方式、FIFO方式和MAILBOX方式。通過驅動程序對總線控制寄存器設置來控制總線操作和數據的傳輸。總線控制寄存器有兩組:PCI總線控制寄存器和本地總線控制寄存器,分別用來控制PCI總線和本地總線的操作。
2 AMCCS5933 引腳
AMCCS5933引腳圖如圖2所示。
3 AMCCS5933在PCI板卡設計中的應用
3.1 配置空間
每一個PCI設備都要有相應的配置空間,AMCCS5933通過EEPROM來設置配置空間,AMCC公司提供一個NVBUILDER的軟件,可以通過AMCCS5933對EEPROM進行讀寫。EEPROM可以為串行,也可以為8位并行。設計者只需使用NVBUILD就可以完成PCI配置空間的設置。
3.2 總線控制寄存器的訪問
PCI總線控制寄存器只有主機才能訪問,主機通過PCI總線進行I/O讀寫操作來訪問這些寄存器。
本地總線控制寄存器只有本地邏輯才能訪問,與其有關的引腳有ADR[6..2]、BE[3..0]#、SELECT#、WR#、RD#和數據地址總線DQ[31..0]。
讀時序如圖3所示,寫時序將圖中RD#替換為WR#即可。
ADR[6..2]提供被訪問寄存器的地址,BE[3..0]#制定訪問是雙字中的哪些字節,WR#為寫使能,RD#為讀使能,SELECT#為操作使能,都為低電平有效。
3.3 MAILBOX方式的使用
AMCCS5933內部有8個MAILBOX:4個輸出MAILBOX,四個輸入MAILBOX。PCI方的輸入MAILBOX對應于本地的輸出MAILBOX,輸出MAILBOX則對應于輸入MAILBOX。
MAILBOX主要用于主機方與本地邏輯之間的通信,例如傳輸一些自定義的控制字、狀態信息等。
主機對MAILBOX的訪問通過I/O讀寫來完成,本地邏輯對MAILBOX的訪問則通過訪問本地控制寄存器的方式來完成。
MIALBOX的空滿狀態由控制寄存器MBEF(PCI)和AMBEF(本地)來表征。
3.4 FIFO方式下的數據傳輸
3.4.1基本數據傳輸
AMCCS5933內部有兩個單向FIFO:輸出FIFO和輸入FIFO,主機和本地邏輯可以以訪問控制寄存器的方式來訪問FIFO,也可以通過WRFIFO#、RDFIFO#、WFULL、RDEMPTY、BPCLK這幾個引腳來直接讀寫FIFO。在設計當中一般采用后一種方法。直接讀寫FIFO有兩種工作方式:同步方式和異步方式。在同步方式下,WRFIFO#、RDFIFO#為FIFO讀寫使能信號,在BPCLK的上跳沿寫入和讀出數據,輸出引腳BPCLK輸出33MHz信號。在異步方式下,WRFIFO#、RDFIFO#為FIFO讀寫信號。WRFULL為輸出FIFO滿信號,RDEMPTY為輸入FIFO空信號。
3.4.2 DMA的實現
在FIFO方式下可以實現DMA傳輸。
DMA傳輸的實現步驟:
(1)通過NVBUILD軟件設置DMA傳輸的控制方為主機或本地邏輯,以下假設為主機控制。
(2)設置有關的PCI總線控制寄存器。
???? MWAR? DMA寫地址寄存器?? 填入接收數據存放的起始地址
???? MWTC? DMA寫計數器?????? 填入接收數據的字節數
???? MRAR? DMA 讀地址寄存器? 填入發送數據起始地址
???? MRTC? DMA? 讀計數器???? 填入發送數據的字節數
(3) 啟動DMA傳輸
通過設置MCSR寄存器啟動DMA傳輸。
由本地邏輯控制的DMA傳輸步驟,只需將控制方式改為本地邏輯控制,然后由本地邏輯來設置相應的寄存器。
3.5 PASS THRU方式下的數據傳輸
配置空間中的基址寄存器為PCI系統資源分配(內存和I/O空間的分配)提供了一種機制,PCI設備在基址寄存器中填入所需資源的類型和大小,基址寄存器的0位為1表示為內存空間,為0則表示為I/O空間,1、2位則指定內存或I/O空間是分配在1M地址以下,還是分配在任意地址空間,3位表示能否預取,4~31位表示所需分配的內存或I/O空間的大小。PCI BIOS啟動后讀取各個PCI設備配置空間中的基址寄存器,獲取每個PCI設備分配所需的資源類型和大小等信息,并且為這些PCI設備分配好所設定的資源,然后再將分配的內存空間或地址空間的基地址回寫到PCI設備的各個基址寄存器中。
配置空間中有6個基址寄存器,與PASS THRU方式有關的是基址寄存器1~4,基址寄存器0被指定為AMCCS5933分配I/O資源,基址寄存器6保留不用。
PASS THRU 方式下的數據傳輸的有關引腳:PTATN#、PTRDY#、PTNUM[1:0]、PTBE[3:0]#、BE[3..0]#、PTADR#、 PTWR、PTBURST#、DQ[31..0]
PTNUM[1:0]表示由哪個基址寄存器所分配的內存空間或I/O空間。
PASS THRU方式下的數據傳輸主要由AMCCS5933芯片與本地邏輯電路通過上述引腳信號的交互、握手來完成,時序如圖4所示。
PASS THRU的握手時序可以通過可編程邏輯以同步狀態機的方式實現,用ALTERA的AHDL硬件編程語言可以很容易地實現它。
3.6 中斷的設置與產生
AMCCS5933有兩個中斷引腳:INTA#和IRQ#。INTA#為PCI總線信號用于產生系統PCI中斷,IRQ#是本地總線信號用于產生本地邏輯的中斷。??
MAILBOX的空滿變化、DMA讀寫傳送的完成都可以產生中斷,中斷的使用方法如下:
A PCI設備中斷INTA#
(1)在配置空間中斷引腳寄存器填入中斷引腳,單功能設備選INTA#。
(2)從配置空間矢量寄存器中獲取中斷矢量。
(3)在PCI總線控制寄存器中,設置產生的條件,如MAILBOX變滿產生中斷、DMA寫完成產生中斷等。
(4)在中斷處理程序中,讀取PCI總線控制寄存器INTCSR和MBEF當前值,確定中斷源并做相應中斷處理。
(5)清中斷及退出中斷處理程序,清中斷通過往INTCSR相應的中斷標志位寫“1”來完成。B 本地設備中斷 IRQ#
(1)在本地總線控制寄存器AINT中,設置產生的條件,如MAILBOX變滿產生中斷 、DMA寫完成產生中斷等。
(2)在本地中斷處理程序中,讀取本地總線控制寄存器AINT和AMBEF當前值,確定中斷源并做相應中斷處理。
(3)清中斷并退出中斷處理程序,清中斷通過往AINT相應的中斷標志位寫“1”來完成。
4 PCB 板繪制要點
(1)推薦采用四層板。
(3)AMCCS5933 PCI數據線與插口距離小于1.5英寸。
(4)AMCCS5933 PCI時鐘線與插口距離等于(2.5+或-0.1)英寸,且只能在PCB的同一層。
(5)AMCCS5933 其他PCI引腳與插口距離小于2英寸。
評論
查看更多