1 引 言 ISA(Industry Standard Architecture,工業標準結構)總線是上世紀八十年代中期出現的工業現場控制總線。ISA總線數據傳輸速率較低,又不能動態地分配系統資源,且對CPU占用率高,相應的插卡數量有限,并且如果幾個設備同時調用共享的系統資源,很容易出現沖突現象。所以ISA總線被PCI總線為代表的新一代計算機總線替代成為必然。與ISA總線相比,32位的PCI總線速度更快(數據傳輸率為133 Mb/s)、實時性更好、可控性更佳,更易于實現高速實時的I/O口控制卡、通信接口卡、數據采集卡等。但PCI總線也因其32位地址與數據復用、控制總線及時序較復雜等原因導致以FPGA實現比較困難。本文所述通過CH365芯片可以快速實現PCI接口電路的設計,支持ISA總線接口向PCI總線接口的升級,并且由CH365芯片的本地硬件地址功能可以實現原系統軟件無需修改就可使用,大大降低了板卡升級的時間周期和開發難度,具有較高的實用價值和推廣價值。 2 PCI總線的特點 PCI是先進的高性能局部總線,可同時支持多組外圍設備。其特點是:總線操作與處理器一存儲器子系統操作并行;線性突發傳輸;極小的存取延誤;不受處理器限制;基于PCI卡設備信息,全自動配置與資源分配,實現即插即用。 PCI的地址空間有3類:存儲器、I/O和配置地址空間。存儲器空間和I/O空間同以前的ISA總線規范相同,而配置空間是PCI所特有的。配置空間使系統處理器能夠枚舉PCI總線上的各種設備,并根據設備要求自動配置存儲器和I/O的地址空間。操作系統在自檢的過程中檢測所有PCI設備,讀取設備的配置信息,并給每一設備分配系統資源,如中斷、I/O空間、存儲器空間等。在PCI系統結構中,為每個PCI都提供了256個字節(至少是前64個字節)的配置空間,這256個字節的配置空間中前64個字節稱為頭區域,是每一個PCI設備都應該實現的,他的主要功能是識別PCI接口設備,以及PC訪問板卡的方式等。其余的192個字節根據不同的PCI設備有所不同。 3 PCI接口芯片的選擇 PCI接口電路至少實現如下功能: (1) 高速的地址產生單元; (2) 地址譯碼及命令譯碼單元; (3) 標準配置寄存器(64個字節)、PCI總線邏輯接口單元、用戶設備邏輯接口、數據緩沖區等。 所以若用FPGA芯片直接設計PCI接口則難度大且開發周期長,而專用的PCI接口芯片可以實現完整的PCI主控模塊和目標模塊接口功能,將復雜的PCI總線接口轉換為相對簡單的接口。 目前常用的PCI專用接口芯片有PLX公司PCI90XX系列,AMCC公司S59XX系列,南京沁恒公司的CH365通用PCI接口芯片。其中南京沁恒公司的CH365是國內自主開發的PCI總線接口芯片,CH365將32位高速PCI總線轉換為簡便易用的類似于ISA總線的8位主動并行接口,并提供獨有的本地硬件地址請求功能,適合制作低成本的基于PCI總線的計算機板卡,以及將原先基于ISA總線的板卡升級到PCI總線上。另外CH365價格便宜、使用方法簡單,非常適合用于短周期、低成本PCI接口卡的制作。其一般應用框圖如圖1所示。 CH365是一個連接PCI總線的通用接口芯片,可將32位高速PCI總線轉換為主動8位并行接口并提供16位地址,可以進行I/O及存儲器的讀和寫,可以設定PCI板卡的設備標識。 CH365非突發存取的實測速度可達7 MB/s,寫脈沖的寬度從30~240 ns可選;自動分配I/O基址,I/O空間占用256個,其中偏移00~EFH共240 B的標準的本地I/O端口,而F0~FF為CH365內部使用的寄存器,對I/O端口操作只須I/O基址加上偏移量;通過該接口直接升級ISA的I/O板卡到PCI總線,完全不需要修改原ISA卡的相關軟件;直接映射支持容量為32 kB的存儲器SRAM或者擴展ROM(BootROM),偏移地址0000~7FFFH;提供兩線串行主機接口,可以掛接類似24C0X的兩線串口E2PROM器件;支持Windows 98/ME/2000/XP,通過DLL提供應用層API。 CH365的地址引腳A15~A0用于提供相對于基址的偏移地址,引腳D7~D0為雙向數據引腳,與設備相連。IOP_RD用于提供I/O讀選通信號,IOP_WR用于提供I/O寫選通信號,MEM_RD用于提供存儲器讀選通信號,MEM_WR用于提供存儲器寫選通信號,上述引腳均為低電平有效。與PCI總線相連的引腳直接與PCI總線對應。 4 PCI接口卡的設計和實現 4.1 原ISA接口卡簡介 原ISA總線接口卡是一個多路數據采集板,接口卡所采集數據由板上單片機與ISA總線通過雙口RAM進行數據交換。雙口RAM的11位地址線與ISA總線的低口位地址線相連作為局部地址;ISA總線接口板的高位地址與GAL168V芯片相連,由預先設置在GAL168V芯片中的地址作為接口板基址;雙口RAM的左數據線通過一個8路總線收發器隔離后與ISA總線數據線相連,右地址線、數據線與單片機相連。 原ISA總線接口卡總線接口原理框圖如圖2所示。 4.2 PCI接口卡的設計和實現 為了實現PCI總線接口需在原ISA接口板上加上CH365芯片及其周邊電路。CH365芯片與PCI總線的連接符合PCI總線規范,而CH365芯片提供的本地總線接口端與ISA總線接口類似。為了減少總線接口改變帶來的改動,本文利用CH365芯片的本地硬件地址功能設定接口卡的本地硬件地址。 4.2.1 本地硬件地址功能的實現 CH365提供一種可以由板卡制造商選定PCI設備I/O口地址的方法,即本地硬件定址,其原理是將PCI設備的部分I/O口地址譯碼,通過外圍的二級譯碼電路來實現。外圍的二級譯碼電路比較簡單,與ISA總線的I/O譯碼電路類似,CH365將PCI總線I/O操作地址同步提供給外圍電路,當外圍電路對地址譯碼匹配后,向CH365請求本地硬件定址,再由CH365請求PCI總線在該特定I/O口地址范圍內進行讀寫操作。 為啟用CH365提供的本地硬件定址功能,需將CH365局部數據總線端中D4線弱下拉接地(即設定值=0),以設置CH365工作于本地硬件定址模式。外圍二級譯碼電路可由GAL16V8實現。 4.2.2 雙口RAM的讀寫 CH365的本地地址線和數據線端與雙口RAM相連。雙口RAM允許2個CPU同時讀取任何存儲單元(包括同時讀同一地址單元),但不允許同時寫或一讀一寫同一地址單元,否則就會出現寫入值和讀出值不是期望值的混亂狀態。雖然雙口RAM本身帶有BUSY控制信號來協調兩端的訪問,但BUSY信號腳要求與兩側CPU的READY線相連,而CH365并不具有READY信號線,因此,需要引入仲裁邏輯控制模塊。常用的雙口RAM解決地址競爭的途徑有:令牌傳遞法、基于郵箱機制的INT中斷法以及插入等待周期的BUSY法等。在本系統中采用第二種方法。 基于郵箱機制的INT中斷法的基本思想是:給每個端口分配一個地址作為郵箱,比如本系統可以令CH365使用00H,單片機使用8000H,這兩個地址用來裝載作為分配兩端口RAM使用權的依據數據。具體約定為:當左端口CH365寫地址單元00H時,通過邏輯器件可實現右中斷DSP INT(DSP中斷)為低,向DSP發出中斷清求,DSP讀地址單元00H時,DSP INT為高,復位CH365發出的中斷請求。同理,當右端口寫地址單元8000H時,左中斷INT REQ(CH365中斷)為低,可向左端口發出中斷請求;而當左端口讀地址8000H時,INT_REQ為高,復位DSP發出的中斷請求。當信箱內容為00時,表示正在使用該方端口;當信箱內容為FFH時,表示結束使用該端口。因此,雙方在對端口的其他單元進行讀寫操作開始時,需要向郵箱中寫入00H,操作結束,寫入FFH。如果沒有發生爭用,則直接進行讀寫操作,否則,慢的一方產生中斷,并查詢對方郵箱,直到對方郵箱內容為FFH。具體實現可借助CPLD來完成。 4.2.3 PCI接口卡設計中應注意的問題 PCI接口作為高頻數字電路,電磁兼容設計尤為重要,在設計PCB板時需要參考PCI總線規范。CH365的PCI信號的走線長度應小于35 mm,盡量走弧線或者45°線,信號布線盡量在元件面,在PCB背面保留大面積接地覆銅。CH365芯片有3對電源引腳,在制作印制板時,應在每對電源附近放置高頻消磁退耦電容。 4.2.4 PCI接口卡的硬件電路原理 PCI接口卡的硬件電路原理框圖如圖3所示。 5 結 語 本文所述,通過增加一片CH365芯片,采用硬件地址方式所設計的PCI接口卡,可獲得和原ISA卡完全相同的性能。而用戶計算機控制程序不用作任何修改,僅僅在PCI板卡插入計算機過程中,添加CH365芯片的驅動程序而已,從而避開繁雜的PCI總線接口規范標準,大大簡化了PCI接口卡設計的難度,同時也極大地降低了PCI卡開發和制造的成本,具有較好的市場前景。本文所升級的PCI接口卡已經實際使用,功能正常,取得了很好的效果。 |