基于PCI總線(xiàn)CAN卡設計與實(shí)現
現場(chǎng)總線(xiàn)CAN(Controller Area Network控制器局域網(wǎng)絡(luò ))以其高性能、高可靠性及獨特的設計,越來(lái)越受到人們的重視和青睞,不但在汽車(chē)行業(yè)中應用廣泛,而且在工業(yè)控制、機器人、醫療器械、傳感器等領(lǐng)域發(fā)展迅速。為了擴展CAN總線(xiàn)的功能,與計算機相連,可設計具有CAN接口和PC接口的CAN適配卡,用來(lái)收集CAN總線(xiàn)上各個(gè)節點(diǎn)的信息,轉發(fā)給PC機,并可將PC機的命令和數據轉發(fā)給各個(gè)節點(diǎn)以及完成對CAN總線(xiàn)上的用戶(hù)系統的部分監控和管理工作。
PCI總線(xiàn)是Intel公司推出的一種先進(jìn)的高性能32/64位局部總線(xiàn),可同時(shí)支持多組外圍設備,不受制于處理器,數據吞吐量大 (33MHz總線(xiàn)頻率、32位傳輸時(shí)峰值可高達132MB/s)。目前PCI是處于主流的計算機總線(xiàn)。以往的CAN卡一般都是基于ISA總線(xiàn)的,由于ISA總線(xiàn)傳輸速率低,CAN卡必須增加中繼控制功能,才能夠適應CAN的高速傳輸,導致造價(jià)高、體積大、傳輸速率低,不利于CAN總線(xiàn)的推廣應用。由于PCI總線(xiàn)傳輸速度快,而且支持熱插拔、電源管理等功能,不但能滿(mǎn)足CAN總線(xiàn)的高速數據傳輸,性能高、功能強,而且體積小、價(jià)格低、使用方便、應用范圍廣。
CAN卡的設計包括硬件設計和軟件設計。
1 硬件設計
PCI總線(xiàn)是一種獨立于CPU的局部總線(xiàn),不同于傳統的ISA總線(xiàn)。由于PCI總線(xiàn)規范定義了嚴格的電氣特性和時(shí)序要求,開(kāi)發(fā)難度比ISA總線(xiàn)的開(kāi)發(fā)難度大。實(shí)現PCI接口的方案一般有兩種:采用可編程邏輯器件和專(zhuān)用總線(xiàn)接口器件。采用可編程邏輯器件實(shí)現PCI接口的最大好處是比較靈活,可把PCI時(shí)序模塊和功能模塊結合在一起,可以利用的器件也比較多(如Altera公司的CPLD器件、Xilinx公司的FPGA器件等),還可以購買(mǎi)由廠(chǎng)家提供的用VHDL、AHDL等硬件描述語(yǔ)言編制的PCI核心設計模塊,但其設計難度還是很高,因為PCI總線(xiàn)對負載要求、傳輸數據的建立時(shí)間的要求都比較苛刻,同時(shí)還需要器件內部實(shí)現用于配置的各類(lèi)寄存器,以及完成邏輯校驗、地址譯碼等工作的寄存器(大致需要15000個(gè)門(mén)電路)。此外,還需加入FIFO、用戶(hù)寄存器組和后端設備接口等部分。設計這種PCI總線(xiàn)接口會(huì )導致將大量的人力、物力投入到復雜的邏輯驗證和時(shí)序分析的工作上,開(kāi)發(fā)周期較長(cháng)。采用專(zhuān)用接口器件雖然沒(méi)有采用可編程邏輯器件那么靈活,但能夠有效地降低接口設計的難度,縮短開(kāi)發(fā)時(shí)間。專(zhuān)用接口器件具有較低的成本和很高的通用性,能夠優(yōu)化數據傳輸,提供配置空間,具備用于突發(fā)傳輸功能的片內FIFO,提供擴展局部總線(xiàn)等優(yōu)點(diǎn),并且許多公司還提供配套的開(kāi)發(fā)工具例如評估板或驅動(dòng)程序開(kāi)發(fā)軟件,使用很方便,開(kāi)發(fā)周期短。目前市場(chǎng)上常見(jiàn)的有PLX、AMCC、Cypress等公司的PCI橋芯片,各個(gè)型號的PCI接口芯片的大致特點(diǎn)如表1所示
PCI9052是PLX公司開(kāi)發(fā)的低價(jià)格PCI總線(xiàn)從模式接口芯片,低功耗,符合PCI2.1規范,提供的局部總線(xiàn)(Local Bus)可通過(guò)編程設置為8/16/32位的(非)復用總線(xiàn)。其主要特點(diǎn)有:
(1)直接數據轉換模式 PCI9052支持PCI到Local Bus的內存映射和I/O映射的突發(fā)讀寫(xiě)。
(2)ISA接口邏輯 PCI9052支持通過(guò)8/16位內存映射或I/O映射從PCI到ISA總線(xiàn)的單周期讀、寫(xiě)訪(fǎng)問(wèn)。方便從ISA卡向PCI卡的轉換。
(3)中斷產(chǎn)生器 由Local Bus的兩個(gè)中斷信號可以產(chǎn)生一個(gè)PCI中斷信號:INTA#。
(4)局部總線(xiàn) PCI9052提供的局部總線(xiàn)不但可編程,而且與PCI總線(xiàn)的時(shí)鐘相互獨立運行,可實(shí)現異步操作,總線(xiàn)操作自動(dòng)實(shí)現時(shí)序同步。兩總線(xiàn)的異步運行方便了高、低速設備的兼容。局部的運行時(shí)鐘頻率范圍0~40MHz、TTL電平,可由PCI提供或由用戶(hù)自行提供;PCI的運行時(shí)鐘頻率范圍0~33MHz。
(5)串行EEPROM 用于存放PCI BUS和Local Bus的部分配置信息。
(6)4個(gè)局部設備片選 基址和地址范圍可以由串行EEPROM或主控設備進(jìn)行設置。
(7)5個(gè)局部地址空間 基址和地址范圍及其映射可以由串行EEPROM或主控設備進(jìn)行設置。
(8)Big/Little Endian模式的字節交換 適合不同計算機體系。
(9)局部總線(xiàn)等待狀態(tài) 除了等待信號LRDYi#用于握手之外,PCI9052還有一個(gè)內部等待產(chǎn)生器(包括地址到數據周期、數據到數據周期和數據到地址周期的等待)。
(10)延遲讀模式 PCI9052支持PCI2.1規范的延遲讀模式。
(11)FIFO PCI9052包括一個(gè)64Byte的寫(xiě)FIFO和一個(gè)32Byte的讀FIFO,從而支持預取模式、即突發(fā)操作。
(12)PCI鎖定機制 主控設備可以通過(guò)鎖定信號占有對PCI9052的唯一訪(fǎng)問(wèn)權。
評論