徐軍濤,許化龍
摘 要:介紹基于FPGA的PC/104-CAN通訊板的設計與實現方案,采用SJA1000T作為CAN控制器,82C250作為CAN收發器,并在通信通道上采用光電隔離技術,提高了系統可靠性。重點論述了應用FPGA實現從PC/104總線到CAN總線的數據和地址信號傳輸,時序邏輯控制信號的轉換,以及驅動程序的設計和CAN多幀數據傳遞時打包和解包的方法,應用一種簡單實用的CAN數據包格式,有效地簡化了數據通訊并提高了總線的有效傳輸速率。
關鍵詞:PC/104;CAN;FPGA;打包;解包
中圖分類號:TP366文獻標識碼:A
文章編號:1004-373X(2009)19-083-03
Design of PC/104-CAN Communication Board Based on FPGA
XU Juntao,XU Hualong
(The Second Artillery Engineering Institute,Xi′an,710025,China)
Abstract:The design and implementation of PC/104-CAN communication board based on FPGA are introduced.It adopts SJAl000T as the CAN controller,and 82C250 as the CAN transceiver.At the same time,photoelectric isolation technology is adopted on the channels to increase dependability of the system.The transformation of data and address signal and sequential control signal from PC/104 to CAN bus is discussed,and the design of drive and a method of CAN bus data packing and unpacking is mentioned.Using a kind of CAN data format,the data communication is simplified efficiently,and the effective transformation speed is increased.
Keywords:PC/104;CAN;FPGA;packing;unpacking
0 引 言
PC/104 嵌入式控制PC出現于20世紀80年代末,并于1992年形成IEEEP966.1標準。它一方面繼承了PC的所有資源,另一方面又對PC的各個方面做了優化設計,使其與IBM PC完全兼容,并具有體積小,功耗低,工作溫度寬,可靠性高等特點[1]。采用了獨特的“自棧式”總線連接、模塊化結構,使用起來靈活方便;采用面向對象的硬件設計方法,使得在PC/104 標準上開發的擴展模塊具有更強的通用性和更長的生命期;它以其優良的品質、高可靠性及模塊化,廣泛應用于工業控制、航空航天、軍事、醫療、消防設備、智能儀器儀表、導航、通訊、數控、自動化生產設備、便攜式計算機等領域。
CAN(Controller Area Network)總線是一種有效支持分布控制或實時控制的串行通信網絡,采用多主協議,廢除了傳統的站地址編碼,而采用對通信數據塊進行編碼的方法,使網絡內節點個數在理論上不受限制。它具有總線仲裁、錯誤檢測、自動重發等功能。由于采用了許多新技術及獨特的設計,CAN總線具有高實時性、卓越性能、高可靠性、能獨特靈活設計和低廉價格,已廣泛應用于工業現場、控制、智能大廈、小區安防、交通工具、醫療儀器、環境監控等眾多領域。目前,它已被公認為是幾種最有前途的現場總線之一[2]。
隨著科技的發展,同一系統應用多種總線技術已經成為一種趨勢。本設計利用FPGA完成PC/104總線和CAN總線之間的相互通訊,將兩總線相結合,優勢互補,使兩總線有更大應用價值和更廣闊的使用前景[3]。
1 硬件設計
1.1 系統硬件結構
本設計采用PC/104模板形式,具有很強的方便性和可擴展性,其系統的硬件結構如圖1 所示。
由于PC/104總線采用的是地址數據總線分離的總線結構,而CAN總線協議控制器SJA1000T采用的是地址數據總線分時復用的總線結構,因此系統使用FPGA器件 EP20K100實現總線轉換和時序邏輯控制轉換。該通訊板采用I/O映射方式,其內部寄存器地址為280H~2BFH。為了增強系統的抗干擾能力,在控制器SJA1000T與收發器82C250之間接入光電耦合器6N137。光耦6N137的上升時間典型值為30 ns,隔離電壓為3 000 V,其支持最大頻率值超過30 MHz。
圖1 系統硬件結構圖
1.2 FPGA設計
Quartus Ⅱ是Altera公司在21世紀初推出的FPGA/CPLD開發環境,是Altera前一代FPGA/CPLD集成開發環境MAX+Plus Ⅱ的更新換代產品,其功能強大,界面友好,使用便捷。Quartus Ⅱ軟件集成了Altera的FPGA/CPLD開發流程中所涉及的所有工具和第三方軟件接口[4]。Quartus Ⅱ軟件的開發流程如圖2所示。
圖2 Quartus Ⅱ軟件的開發流程
采用原理圖輸人和硬件描述語言相結合的方式,進行編譯后寫入器件中[5];同時可在線更改寫入內容,修改和調試簡單易行。FPGA的設計主要由兩部分組成:第一部分實現時序邏輯控制信號的轉換,第二部分實現地址譯碼和地址數據線的復用。Quartus Ⅱ圖表文件及器件管腳如圖3所示。
圖3 Quartus Ⅱ圖表文件及器件管腳圖
由于PC/104的地址總線和數據總線是各自獨立的,SJA1000T的地址總線和數據總線是分時復用的,所以它們之間不能直接相連,必須通過時序邏輯控制,再配合軟件來實現讀/寫操作。對SJA1000T的操作方法是:首先,對地址為CAN首地址+0(A2A1A0=000)的端口進行寫操作(WR為低,有效),CANALE為高,有效,此時復用的地址、數據總線上的數據被視為地址信號,進入SJA1000T內部鎖存器;然后,對地址為CAN首地址+1(A2A1A0=001)的端口進行讀或寫操作(RD/WR為低,有效),CANALE為低,上述中的地址信號已被鎖存,此時復用的地址、數據總線上的數據被視為數據信號,這樣即可完成對SJA1000T的各個寄存器和緩沖區的讀或寫操作[6]。
1.3 硬件電路測試
主要檢測硬件結構及電路板設計是否正確。建立一個簡單的通訊連接,將兩個通訊板連接進行測試,用通訊板A作為輸出,通訊板B作為輸入。編程通過通訊板A發送數據,內容為8個隨機數,檢測通訊板B接收數據,如果不同則作加1計數。反之將通訊板B作為輸出,通訊板A作為輸入,進行相同測試。測試200萬次循環未見異常。
2 軟件設計
2.1 軟件流程圖
在該通訊板的設計中,控制部分的核心采用了PC/104嵌入式計算機系統。由于PC/104嵌入式計算機系統幾乎具有和一般的PC機一樣的強大功能,所以該通訊板的開發是在和系統模塊棧接在一起后,直接在嵌入式計算機上進行的。這些工作都是采用C語言進行編程設計的。采用C語言的優點在于其快速性、高效性。在利用嵌入式計算機強大資源的條件下,C語言能滿足模塊的實時性要求。在系統軟件的設計中,采用了結構化、模塊化的設計方法,滿足了儀器功能的要求。本接口系統的軟件任務基本為在CAN協議芯片SJA1000T有中斷發生時,根據SJA1000T的中斷寄存器的內容完成相應的操作(如發送、接收數據幀等)。其流程圖如圖4所示[7]。
系統設計中要進行接口驅動程序的設計,為保證操作系統的穩定和安全,驅動程序必須按一定的規范來編寫。本系統的驅動程序主要考慮以下內容:設置端口和中斷號,設置通訊板通訊默認參數,通訊板內存分配,映射I/O地址,創建通訊板事件和數據接收事件,初始化中斷等[8]。
SJA1000T初始化只有在復位模式下才能進行,初始化主要包括:工作方式的設置、接收濾波方式的設置、接收屏蔽寄存器和接收代碼寄存器的設置、波特率設置和中斷允許寄存器的設置等。SJA1000T在完成初始化后就可以回到工作狀態進行正常的通訊任務了[9]。
圖4 軟件總流程圖
2.2 CAN多幀數據通信打包和解包技術
CAN通信數據傳輸采用短幀結構,每幀最多發送8個字節的有效數據,總線的有效傳輸速率很低,當在傳輸的數據量超過8個字節有效數據時,給用戶編程帶來了一定的困難。利用如圖5所示的CAN的數據包格式,只需將待傳輸的數據進行相應的打包和解包操作即可實現數據的單幀和多幀傳輸,有效地簡化了數據通信。
采用如圖5所示的CAN數據包格式,無論是單幀還是多幀傳輸,只要把數據填入相應的發送緩沖區即可,在接收方,則將數據解包并放入接收緩沖區即可。
與上述數據包格式相對應,當CAN總線進行多幀傳輸時,其CAN的多幀數據傳輸幀結構如圖6所示。
圖5 發送數據包和接收數據包格式
在圖6中,當發送的有效數據個數不超過4個時,一幀數據即可傳輸;當有效數據超過4個時,則需要多幀傳輸。此處的地址變址是指從發送緩沖區所取的存
放于該幀的第一個有效數據的存儲地址相對于緩沖區
首地址的偏移量,如第一幀中地址變址為4,第二幀中的地址變址是10。地址變址的設置,使得對數據包的解包和打包實現起來較容易。
圖6 CAN多幀數據傳輸幀結構圖
3 結 語
該通訊板設計簡單,只需一塊FPGA,一個CAN控制器SJA1000T和收發器PCA82C250,為增強系統的穩定性,在通信通道上均采用光電隔離技術,保護PC機避免因地環流而損壞,增強系統在惡劣環境中使用的可靠性。該通訊板采用的CAN數據包格式提高了總線的有效傳輸速率,經測試達到500 Kb/s,提高了通訊板通訊的實時性。本設計方案已成功應用于工業控制器中,效果理想。
參考文獻
[1]PC/104嵌入式協會.PC/104規范V2.5[Z].2003.
[2]杜尚豐.CAN總線測控技術及其應用[M].北京:電子工業出版社,2007.
[3]武芳瑛,吳滌.一種PC104總線和CAN總線的接口[J].電力自動化設備,2004,24(8):53-55.
[4]周潤景,圖雅,張麗敏.基于Quartus Ⅱ的FPGA/CPLD數字系統設計實例[M].北京:電子工業出版社,2007.
[5][美]Peter J Ashenden.VHDL設計指南[M].2版.葛紅,黃河,吳繼明,譯.北京:機械工業出版社,2005.
[6]Philips.SJA1000 Stand-lone CAN Controller Datasheet[Z].2000.
[7]舒志兵,袁佑新,周瑋.現場總線運動控制系統[M].北京:電子工業出版社,2007.
[8]鄭勇蕓,饒運濤,鄒繼軍,等.現場總線CAN通信中多線程的應用[J].東華理工學院學報,2004,27(2):196-198.
[9]雷霖.現場總線控制網絡技術[M].北京:電子工業出版社,2004.
[10]Philips.Philips 82C250 CAN Controller Interface Datasheet[Z].2000.