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