董文華 趙倩 程志華
(上海大學,上海 200722)
一種基于FPGA的ISA總線轉CAN總線設計與實現
董文華 趙倩 程志華
(上海大學,上海 200722)
本設計采用FPGA芯片及其技術實現了智能CAN通訊卡的設計和開發。本設計主要包括:ISA總線、主控制器模塊、緩沖區模塊、CAN協議控制器模塊、以及CAN總線驅動器模塊。本設計已在實際工程中得到運用。實踐結果表明數據傳輸穩定,可靠性高。
CAN總線 FPGA VHDL 循環存儲
ISA(Industry Standard Architecture,工業標準體系結構)總線是Intel/IEEE/和EISA在62線PC總線基礎上經過擴展36根線而開發出的一種系統總線。IS A具有16位數據線,最高工作頻率為8MHz,數據傳輸速率達16Mb/s。24根地址線,可尋址16Mb。使用ISA總線的外部設備不需要具有非常快的吞吐速率。
CAN(Controller Area Network)即控制器局域網絡,是一種全數字化、多主和雙向的現場總線。CAN總線數據通信具有很高的可靠性、實時性和靈活性,越來越廣泛地應用于各種工業現場。
隨著計算機應用技術的迅速發展,對高性能/高效率板卡的需求將會越來越大,微機中低性能的ISA總線必將被淘汰。但是在現實應用中仍有數量眾多的支持ISA總線的板卡在使用。因此,CAN到ISA總線橋在一定時期內將扮演一種特殊的角色。
C A N模塊共由四個部分組成:主控制器模塊、緩沖區模塊、CAN協議控制器模塊、以及CAN總線驅動器。見圖1。
主控制器是整個模塊的控制中心,通過訪問CAN協議控制器來實現對CAN總線的訪問;同時控制緩沖區,減少數據的丟失率、增加C PU的工作效率。

圖1 系統總體設計
為了增加模塊的數據吞吐量,減少數據丟失率,同時減少CPU的工作負擔,在設計時增加了數據接收和發送緩沖器。該緩沖器應該同時滿足CPU對其的讀寫,及CAN協議控制器對其的讀寫。
雙口R A M有時會發生共享沖突問題。因此,將雙口R A M作為緩沖區使用,利用FPGA控制程序,它不僅保證了數據的先后次序,也保證了數據流通的速度。
CAN協議控制器實現CA N協議的數據鏈路層和物理層功能,對外具有與主控制器和總線接收器的接口。通過對其編程,主控制器可以設置它的工作方式,控制它的工作狀態,進行數據的發送和接收,把應用層建立在它的基礎之上。
CAN控制器SJA1000并不能直接與總線連接,還要通過總線收發器才能接于總線上。CA N總線收發器提供CA N協議控制器與物理總線的接口,總線收發器的性能決定了總線接口、總線終端、總線長度和節點數,是影響整個總線網絡通信性能的關鍵因素之一。
程序可分為三個部分:(1)控制雙口RAM。(2)控制SJA1000。(3)寫SJA1000命令寄存器程序流程如圖2所示。

圖2 程序流程圖
由流程圖可看出在發送C A N總線數據幀時,必須先從雙口RAM中讀出數據,所以需使雙口RAM的片選信號、讀信號有效:同時根據前兩個字節中的信息獲取數據幀信息;然后將讀取的數據依次寫入SJA1000發送緩沖區;最后寫SJA1000命令寄存器,通知SJA1000可以發送CAN數據。
如果模塊未向CPU發中斷以申明某路8KRAM已滿,則CPU可以將數據寫入該通道。每次最多只能寫10個數據。CPU可以根據數據長度來寫數據。當需要發送的數據寫完后,CPU必須發寫結束命令以終止寫操作。這樣可以節約CPU的操作時間。寫數據過程為(以下以寫第一通道為例):(1)查詢數據狀態寄存器(基址+2),看1通道是否能寫。(2)向通道1命令口(基址+00)寫入寫操作開始命令(0x01)。(3)向通道1數據口(基址+01)連續寫入1幀的數據(小于等于10字節)。(4)向通道1命令口(基址+00)寫入寫操作結束命令(0x00)。(5)其他通道的寫操作與此類同。
CPU可以采用掃描方式查詢各個通道的狀態,當某個通道內有數據時CPU可讀取這些數據。CPU可以根據ID1和ID2的數據長度來讀取數據。當讀數據結束后,CPU必須發讀結束命令以告訴CAN終止讀操作。這樣CPU可以盡早結束讀操作,節約CPU的CAN操作時間。讀數據過程為(以下以寫第二通道為例):(1)查詢數據狀態寄存器(基址+10),看2通道是否有數據,如果沒有數據結束操作,如果有數據則向通道2命令口(基址+04),寫入讀操作開始命令(0x02)。(2)從通道2數據口(基址+05),連續的讀出1幀的數據(小于等于10字節),讀完指定長度的數據后,向通道2命令口(基址+04),寫入讀操作結束命令(0x00)。
[1]徐偉業.基于FPGA的CPU核及其虛擬平臺的設計與實現[D].河海大學,2007年.
[2]賈曉宇.基于ISA總線的嵌入式智能型張力控制系統[D].武漢理工大學,2002年.
[3]安磊,梁尚軍,邴洋海.一種基于FPGA的ISA航空總線設計方法[J].飛機設計,2012(4).
董文華,1987年04月,女,上海大學碩士研究生,主要研究方向是FPGA的應用。