PC/104嵌入式控制PC出現于20世紀80年代末,并于1992年形成IEEEP966.1標準。它一方面繼承了PC的所有資源,另一方面又對PC的各個方面做了優化設計,使其與IBM PC完全兼容,并具有體積小,功耗低,工作溫度寬,可靠性高等特點。采用了獨特的“自棧式”總線連接、模塊化結構,使用起來靈活方便;采用面向對象的硬件設計方法,使得在PC/104標準上開發的擴展模塊具有更強的通用性和更長的生命期;它以其優良的品質、高可靠性及模塊化,廣泛應用于工業控制、航空航天、軍事、醫療、消防設備、智能儀器儀表、導航、通訊、數控、自動化生產設備、便攜式計算機等領域。
CAN(Controller Area Network)總線是一種有效支持分布控制或實時控制的串行通信網絡,采用多主協議,廢除了傳統的站地址編碼,而采用對通信數據塊進行編碼的方法,使網絡內節點個數在理論上不受限制。它具有總線仲裁、錯誤檢測、自動重發等功能。由于采用了許多新技術及獨特的設計,CAN總線具有高實時性、卓越性能、高可靠性、能獨特靈活設汁和低廉價格,已廣泛應用于工業現場、控制、智能大廈、小區安防、交通工具、醫療儀器、環境監控等眾多領域。目前,它已被公認為是幾種最有前途的現場總線之一。隨著科技的發展,同一系統應用多種總線技術已經成為一種趨勢。本設計利用FPGA完成PC/104總線和CAN總線之間的相互通訊,將兩總線相結合,優勢互補,使兩總線有更大應用價值和更廣闊的使用前景。
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.2 FPGA設計
QuartusⅡ是Altera公司在21世紀初推出的FP-GA/CPLD開發環境,是Altera前一代FPGA/CPLD集成開發環境MAx+PlusⅡ的更新換代產品,其功能強大,界面友好,使用便捷。QuartusⅡ軟件集成了Al-tera的FPGA/CPLD開發流程中所涉及的所有工具和第三方軟件接口。QuartusⅡ軟件的開發流程如圖2所示。
采用原理圖輸入和硬件描述語言相結合的方式,進行編譯后寫人器件中;同時可在線更改寫入內容,修改和調試簡單易行。FPGA的設計主要由兩部分組成:第一部分實現時序邏輯控制信號的轉換,第二部分實現地址譯碼和地址數據線的復用。QuartusⅡ圖表文件及器件管腳如圖3所示。
由于PC/104的地址總線和數據總線是各自獨立的,SJA1000T的地址總線和數據總線是分時復用的,所以它們之間不能直接相連,必須通過時序邏輯控制,再配合軟件來實現讀/寫操作。對SJA1000T的操作方法是:首先,對地址為CAN首地址+0(A2A1A0=000)的端口進行寫操作(WR為低,有效),CANALE為高,有效,此時復用的地址、數據總線上的數據被視為地址信號,進入SJA1000T內部鎖存器;然后,對地址為cAN首地址+1(A2A1A0=001)的端口進行讀或寫操作(RD/WR為低,有效),CANALE為低,上述中的地址信號已被鎖存,此時復用的地址、數據總線上的數據被視為數據信號,這樣即可完成對SJA1000T的各個寄存器和緩沖區的讀或寫操作。
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所示。
系統設計中要進行接口驅動程序的設計,為保證操作系統的穩定和安全,驅動程序必須按一定的規范來編寫。本系統的驅動程序主要考慮以下內容:設置端口和中斷號,設置通訊板通訊默認參數,通訊板內存分配,映射I/O地址,創建通訊板事件和數據接收事件,初始化中斷等。
SJA1000T初始化只有在復位模式下才能進行,初始化主要包括:工作方式的設置、接收濾波方式的設置、接收屏蔽寄存器和接收代碼寄存器的設置、波特率設置和中斷允許寄存器的設置等。SJA1000T在完成初始化后就可以回到工作狀態進行正常的通訊任務了。
2.2 CAN多幀數據通信打包和解包技術
CAN通信數據傳輸采用短幀結構,每幀最多發送8個字節的有效數據,總線的有效傳輸速率很低,當在傳輸的數據量超過8個字節有效數據時,給用戶編程帶來了一定的困難。利用如圖5所示的CAN的數據包格式,只需將待傳輸的數據進行相應的打包和解包操作即可實現數據的單幀和多幀傳輸,有效地簡化了數據通信。
采用如圖5所示的CAN數據包格式,無論是單幀還是多幀傳輸,只要把數據填入相應的發送緩沖區即可,在接收方,則將數據解包并放入接收緩沖區即可。與上述數據包格式相對應,當CAN總線進行多幀傳輸時,其CAN的多幀數據傳輸幀結構如圖6所示。
在圖6中,當發送的有效數據個數不超過4個時,一幀數據即可傳輸;當有效數據超過4個時,則需要多幀傳輸。此處的地址變址是指從發送緩沖區所取的存放于該幀的第一個有效數據的存儲地址相對于緩沖區首地址的偏移量,如第一幀中地址變址為4,第二幀中的地址變址是10。地址變址的設置,使得對數據包的解包和打包實現起來較容易。
3 結 語
該通訊板設計簡單,只需一塊FPGA,一個CAN控制器SJA1000T和收發器PCA82C250,為增強系統的穩定性,在通信通道上均采用光電隔離技術,保護PC機避免因地環流而損壞,增強系統在惡劣環境中使用的可靠性。該通訊板采用的CAN數據包格式提高了總線的有效傳輸速率,經測試達到500 Kb/s,提高了通訊板通訊的實時性。本設計方案已成功應用于工業控制器中,效果理想。
責任編輯:gt
-
FPGA
+關注
關注
1630文章
21796瀏覽量
606011 -
控制器
+關注
關注
112文章
16445瀏覽量
179451 -
總線
+關注
關注
10文章
2903瀏覽量
88394
發布評論請先 登錄
相關推薦
![](https://file1.elecfans.com/web2/M00/05/75/wKgaombP37GAUQ6xAAmYuqOKRig366.jpg)
PowerPC 60x總線的存儲器控制器的設計與實現
PCI總線目標控制器的設計
PCI總線從設備控制器的設計與實現
利用單總線控制器通訊
基于CAN總線的家庭控制器的設計與實現
![基于CAN<b class='flag-5'>總線</b>的家庭<b class='flag-5'>控制器</b>的設計與<b class='flag-5'>實現</b>](https://file1.elecfans.com//web2/M00/A5/59/wKgZomUMOAWAH-ELAAAcRxD5hgE028.gif)
基于Lonworks總線的模糊控制器實現
![基于Lonworks<b class='flag-5'>總線</b>的模糊<b class='flag-5'>控制器</b><b class='flag-5'>實現</b>](https://file.elecfans.com/web2/M00/48/FD/pYYBAGKhtDGARHnzAAANVJz4gLQ943.jpg)
基于MCS-51單片機和CAN總線控制器實現總線節點的設計
![基于MCS-51單片機和CAN<b class='flag-5'>總線</b><b class='flag-5'>控制器</b><b class='flag-5'>實現</b><b class='flag-5'>總線</b>節點的設計](https://file.elecfans.com/web1/M00/BA/40/pIYBAF6SZ3eAOlVQAACkuwd6kJ8637.png)
采用CAN總線控制器SJA1000實現控制電路接口的設計
![采用CAN<b class='flag-5'>總線</b><b class='flag-5'>控制器</b>SJA1000<b class='flag-5'>實現</b><b class='flag-5'>控制</b>電路接口的設計](https://file.elecfans.com/web1/M00/B7/48/o4YBAF5q9WyADA6JAACOwofBZjI025.png)
如何使用FPGA和CAN控制器MCP2515實現慣導系統的CAN總線接口的設計
![如何使用FPGA和CAN<b class='flag-5'>控制器</b>MCP2515<b class='flag-5'>實現</b>慣導系統的CAN<b class='flag-5'>總線</b>接口的設計](https://file.elecfans.com/web1/M00/DC/BF/o4YBAGARHoyAaZA4AACNsCSIMjY262.png)
評論