基于CH365的PIC通信卡的設計
pci是先進的高性能局部總線,可同時支持多組外圍設備。pci局部總線不受制于處理器,為中央處理器及高速外圍設備提供數據傳輸通道,進行總線之間數據傳輸的調度管理,pci采用高度綜合化的局部總線結構,以確保計算機中各部件、附加卡及系統之間的可靠運行。基于現在市場上pci芯片有plx公司及amcc公司的器件,他們在硬件設計周期以及驅動程序開發上對于初學者來講都存在一定困難。ch365是一個連接pci總線的通用接口芯片,支持i/o端口映射、存儲器映射、擴展rom以及中斷。ch365將32位高速pci總線轉換為簡便易用的類似于isa總線的8位主動并行接口,用于制作低成本的基
于pci總線的計算機板卡、以及將原先基于isa總線的板卡升級到pci總線上。另外ch365不論在設計難度、開發周期、isa移植,還是在價格上都有其自身優越性,所以ch365應用非常廣泛,例如適用于高速實時的i/o控制卡、通訊接口卡、數據采集卡、電子盤、擴展rom卡等。
1 ch365的特點
(1)可以設定pci板卡的設備標識(vendor id,device id,class code等)。
(2)支持以字節、字或雙字為單位對i/o端口或者存儲器進行讀寫。
(3)自動分配i/o基址,支持長達240b的i/o端口。
(4)支持本地硬件定址功能,自由選擇i/o地址,在指定地址實現i/o端口。
(5)直接升級isa的i/o板卡到pci總線,完全不需要修改原isa卡的相關軟件。
(6)直接映射支持容量為32kb的存儲器sram或者擴展rom(boot rom)。
(7)無需外接元器件擴容支持容量為64kb以及128kb的存儲器或者擴展rom。
(8)支持擴展rom無硬盤引導,支持閃存flash memory在線升級。
(9)可以提供擴展rom應用的子程序庫brm,用于bios環境下用戶界面顯示及數據處理。
(10)支持低電平有效的本地中斷請求,支持中斷共享。
(11)提供兩線串行主機接口,可以掛接類似24c0x的兩線串口e2prom器件。
(12)內置4μs-1ms的硬件計時單元,用于軟件運行過程中作為延時參考。
(13)芯片本身無需驅動程序即可工作,升級isa板卡可以不需要驅動程序。
2 空間映射
pc機中包括3種空間:存儲器空間、i/o空間、配置空間。存儲器空間主要包括內存、顯存、擴展rom、設備緩沖區等,一般用于存放大量數據和進行數據塊交換。i/o空間主要包括設備的控制寄存器和狀態寄存器,一般用于控制和查詢設備的工作狀態以及少量數據的交換。配置空間主要用于向系統提供設備自身的基本信息,并接受系統對設備全局狀態的控制和查詢。為了避免地址沖突,pci總線要求各個設備所占用的地址能夠重定位。重定位是由設備的配置空間的基址寄存器實現的,通常情況下,各個設備的基址寄存器總是被bios或者操作系統分配為不同的基址,從而將各個設備分別映射到不同的地址范圍。在需要時,應用程序也可以自行修改基址。ch365的存儲器空間占用32kb,偏移地址是0000h-7fffh,可以全部提供給外部設備使用,實際地址是存儲器基址加上偏移地址。ch365的i/o空間占用256kb,去掉ch365自用寄存器,還可以提供240b給外部設備使用,偏移地址是00h-efh,實際地址是i/o基址加上偏移地址。
3 本地端信號線引腳
本地端信號線引腳如表1所示。

4 基于ch365的pci通信卡原理框圖
基于ch365的pci通信卡由pci接口部分、ch365接口芯片、譯碼電路、本地總線4部分構成,如圖1所示。

4.1 譯碼電路產生
在設計中采用傳統74ls138產生本地8位總線地址,使用ch365地址a0,a1,a2以及讀寫控制信號參加譯碼。74ls138將地址譯碼輸出2路讀控制和2路寫控制,經過74ls245或74ls574來控制輸入和輸出,如圖2所示。

4.2 pci卡制作及pcb圖設計注意事項
pci總線工作在高頻環境中,傳送線在信號線上驅動電壓變化時會出現阻抗,信號線的寬度和到接地的距離都會影響其阻抗,所以在設計pcb時需要參考pci總線規范,特別要注意考慮信號阻抗匹配,具體有以下幾點作為參考:
(1)在32位pci總線中,除了信號線外,還有2個卡存在信號:prsnt1#和prsnt2#。pci板卡設計者在卡存在信號上對卡的最大電源需求進行編碼,當卡被插在pci插槽中時,他將其中至少一個或所有兩個卡存在信號接地。
(2)對于32位pci總線的所有信號,其最大電路長度限定在1.5in(約38mm)以內。建議在設計pcb時,pci信號線的長度都小于25mm,盡量走弧線或者45°線,避免走直角或者銳角走線,并且盡量將走線布在元件面,而pcb背面保留大面積的接地覆銅,以降低傳送線的阻抗。
(3)pci總線的clk信號線的長度要求是2.5in(約83mm)左右,并且只能與卡上一個負載連接。建議clk信號線的長度盡量保持在50-85mm之間,并且不宜靠近其他信號線,為減少周邊信號線的干擾,在clk兩側及pcb背面布置接地線或者覆銅。
(4)ch365有3對電源引腳,至少需要3個電源退耦電容。
(5)與pci插槽連接的電源線引腳可以自由選擇,但數量不宜少于4對。當板卡的電源消耗較大時,可以多增加幾對電源線,通過多點接觸提供穩定的大電流。
4.3 硬件中斷功能介紹
ch365芯片具有軟件和硬件中斷功能,與中斷功能有關的2個引腳分別是pci_inta和sys_ex。如果ch365的數據線d3連接了下拉電阻,則工作模式設定為啟用中斷功能,sys_ex引腳自動復用為int_req,作為本地中斷請求輸入引腳,低電平有效,外部電路需要請求計算機中斷時只要向該引腳提供低電平脈沖。pci_inta總是作為pci中斷三態輸出引腳,不用中斷功能時可以懸空不接,需要中斷功能時可以與pci總線的inta相連接,低電平有效,中斷激活時輸出低電平,中斷未激活時輸出高阻。
5 應用程序介紹
(1)接收數據子程序
ch365opendevice(true,true);
mpch365_io_reg miobase;
ch365getiobaseaddr(&miobase);
//ch365writeiobyte(&miobase->mch365ioport
[0x0fa],71);//* * * * * * * * * *
uchar data1;
ch365readiobyte(&miobase->mch365ioport[m_portnumr],&data1);m_datar=data1;
(2)發送數據子程序
ch365opendevice(true,true);
mpch365_io_reg miobase;
ch365getiobaseaddr(&miobase);
ch365writeiobyte(&miobase->mch365ioport[m_portnumw],m_dataw);
本文采用南京沁恒公司提供的pci接口芯片ch365實現了pci通信卡的設計,在使用中測的實際傳輸率為10mb/s左右,工作穩定可靠,完全可以滿足一般數據量傳輸不是非常快的場合。
評論