摘要:在控制系統中進行現場控制的PC/104總線計算機往往需要以多種方式、同多種節點通信。本文介紹了按照PC/104標準開發帶有四個串行口(兩個RS-232、兩個RS-485)和一個CAN總線接口的多功能、通用型擴展通信模塊的方法,設計中所有的控制邏輯都由一塊CPLD實現,CAN控制器與104總線之間的時序也由CPLD調整。
關鍵詞:PC/104總線、CAN總線、CPLD、多串行口
Abstract: Design and realization of a communication module with 4 serial ports and a CAN bus interface is presented in this paper. It is based on PC/104 standard. All control logics in the module are occurred by a CPLD device. Time sequence between 104 bus and CAN controller is also adjusted by CPLD.
Key words: PC/104 bus , CAN bus , CPLD, Multi serial ports
1 引言
PC/104總線計算機具有體積小、功耗低、工作溫度寬、可靠性高等特點,被廣泛地應用于分布式系統和集散控制系統中作為現場控制計算機。在這些系統中的104PC,往往需要同上位機及下面連接的控制執行機構、傳感器或測量儀表通信,而常用的通信方式有RS-232串行口加MODEM方式、RS-485方式、以太網方式以及各種工業現場總線。
RS-232串行口加MODEM方式一般用于點對點之間較遠距離的數據傳輸;RS-485方式一般用于控制現場對多點實施控制,目前它仍是工業控制中使用得最廣泛的一種方式;以太網方式可以實現遠程控制和信息共享,但它的時延不可控,在實時性和保密性要求較高的控制系統中的應用受到一定限制;現場總線技術是當今自動化領域技術發展的熱點之一,是應用于控制現場、在微機化測量設備之間實現雙向串行多節點數字通信的系統,也被稱為開放式、數字化、多點通信的底層控制網絡?,F場總線的標準很多,其中CAN總線在國內的發展速度最快,被認為是替代RS-485的最理想的方式之一。
CAN總線規范已被ISO制定為國際標準,其模型結構有三層,包括OSI底層的物理層、數據鏈路層和頂層的應用層,通信速率最高可達1Mbps/40m,直接傳輸距離最高可達10Km/5Kbps,可掛接設備數最高可達110個??偩€的電氣規范類似于RS-485,采用雙線差分平衡傳輸,以兩線間的電壓差表示數字邏輯,分為“顯性”和“隱性”兩種邏輯。CAN總線采用面向內容的編址方案,可以在總線中加進一些新站而無需在硬件或軟件上進行修改。該總線以報文為單位進行數據傳送,報文的優先級結合在11位標識符中,確保不同實時性要求的數據以不同優先級傳送,總線讀取中的沖突可通過位仲裁解決。CAN協議可使用五種檢查錯誤的方法,保證了數據傳輸的可靠性。利用CAN總線可以以較低的成本、較高的實時處理能力和在惡劣的強電磁干擾環境下可靠地工作。
綜上所述,根據目前104PC在工業控制中的應用特點和需求,本設計的目的是按照PC/104標準設計通用型多功能擴展通信模塊,該通信模塊包括兩個RS-232串行口、兩個RS-485接口和一個CAN總線接口。
2 器件選型和總體設計方案
要按照PC/104標準在通信模塊中擴展四個串行口和一個CAN總線接口,在模塊功耗和外型尺寸上限制很嚴,因而器件需選擇高集成度IC。
異步通訊單元是串行口擴展的核心器件,它在指定波特率和數據格式下完成并行數據和串行數據之間的相互轉換并完成相應的控制。設計中選用了TI公司的高集成度異步通訊控制單元TL16C554芯片,它集成有4個ACE(異步通信單元),共用了數據線和一些邏輯控制信號,可以通過各自的片選信號選擇每一個ACE單元。每個收發單元都有自己的中斷請求、數據收發以及MODEM邏輯控制信號,可以完成異步收發器的所有功能。
RS-232C電平與TTL電平轉換通過Max213完成。Max213采用的是SSOP封裝,外型尺寸小,功耗小,一片Max213加上幾個小電容就可以完成一個標準RS-232C所有信號的電平轉換。
RS-485電平與TTL電平轉換通過SN65LBC184實現。SN65LBC184是德州儀器公司推出的RS-485總線驅動芯片,結構簡單,功耗小,由單芯片實現半雙工RS-485通信。它采用1/2負載設計,總線上允許掛接64個單元,還具有防靜電、耐高壓沖擊和過熱保護功能,可以提高系統的可靠性。
CAN總線控制器是實現CAN總線接口擴展的核心器件。它將來自104PC上ISA總線的并行數據按照CAN總線協議轉發出去,同時也按照CAN總線協議接收來自外部總線的數據。在設計中選用了PHILIPS公司的SJA1000獨立CAN總線控制器。SJA1000是PCA82C200的升級產品,集成了CAN總線邏輯鏈路層協議。它與PCA82C200在硬件和軟件上完全兼容,還具有支持擴展CAN總線協議的PELI工作模式(支持CAN2.0B協議)。具體來說,SJA1000主要具有以下特點:擴展的64 Byte FIFO接收緩沖、支持11bit標識碼和29bit標識碼、支持標準和擴展格式的幀信息的傳輸,還具有單/雙掩碼濾波器、仲裁丟失中斷、只聽模式、自身信息接收、最近錯誤寄存等眾多PELICAN模式擴展功能。
CAN總線電平與TTL電平的轉換通過PHILIPS公司的PCA82C250完成。該芯片與ISO11898標準兼容,支持最高達1Mbaud的高速傳輸,可連接110個節點。采用限斜率控制,降低射頻干擾,具有寬范圍的抗共模干擾、抗電磁干擾能力。
設計中所涉及到的邏輯控制、時序控制由CPLD實現。這樣做的目的,主要出于以下考慮:
·如果采用與非門,譯碼器、鎖存器等分立元件實現邏輯控制,大量的元件難以在PCB板上布局,而且使電路變得復雜,也降低了模塊的可靠性和抗干擾能力。
·CAN控制器SJA1000的對外操作接口是一種地址/數據分時復用的接口,而PC104沒有地址/數據分時輸出的特性。因此,必須經過時序轉換才能實現它們之間的連接。目前,一般采用8031單片機轉發數據的方式來實現:通過8031連接CAN控制器,104PC利用IO端口讀寫的方式將數據直接傳送給8031,或者將數據寫于雙口RAM中,8031在另一個口讀取數據,再由它對CAN總線控制器進行操作,將數據轉發出去。這種方法無疑又要增加器件和電路的復雜性。
為此,設計了通過CPLD整合時序實現104PC與CAN控制器連接的方法,由104PC分時送出操作地址和操作數據,并由CPLD整合相關的邏輯控制信號,滿足CAN控制器的時序要求。
·采用CPLD可以根據需要定義輸入輸出腳,方便PCB板布局和走線。
·采用CPLD時不必擔心設計中所采用器件的種類、數量,可以任意定義所需各種器件,從而優化電路性能。
·采用CPLD可以通過軟件對電路進行仿真,方便電路調試。
·采用CPLD可以在線修改其內部邏輯,升級或修改BUG時可不改動外部電路。
CPLD芯片選用ALTERA公司的EPM7064SLC84-10,該芯片具有基于EEPROM的第二代MAX結構,支持通過JTAG引腳實現在系統編程。擁有64個宏單元,4個邏輯陣列塊,1250個可用門單元,支持5V/3.3V多電壓IO接口,可提供68個用戶IO引腳。
根據以上的方案,通信擴展模塊的結構如圖1。
[align=center]

圖1 擴展通信模塊結構[/align]
3 硬件實現
3.1地址譯碼電路
本擴展模塊共需占用七個IO地址,其中兩個IO地址供CAN控制器,四個IO地址供四串口異步通訊單元,一個IO地址供中斷共享電路。必須合理選擇IO地址,否則會引起系統不可預知的沖突。
各種PC104計算機IO地址分配情況大體相同,以盛博SysCenterMoudle/SuperDx為例,選擇了110H~140H為擴展通訊模塊的IO地址,地址分配見表1,邏輯譯碼結構見圖2。
表1 IO地址分配表
[align=center]

圖2 IO地址邏輯譯碼結構[/align]
圖2用VHDL語言可以很方便地實現。其具體描述如下:
SEL(0)<=AEN;
SEL(1)<=NIOW AND NIOR;
SEL(2)<=ADDR(0);
SEL(3)<=ADDR(1);
SEL(4)<=ADDR(2);
SEL(5)<=ADDR(3);
SEL(6)<=ADDR(4);
SEL(7)<=ADDR(5);
SEL(8)<=ADDR(6);
WITH SEL SELECT
Y<="1111110" WHEN "010001000",//IO/110 地址操作
"1111101" WHEN "010001100",//IO/118 數據操作
"1111011" WHEN "010010000",//IO/120 串口1
"1110111" WHEN "010010100",//IO/128 串口2
"1101111" WHEN "010011000",//IO/130 串口3
"1011111" WHEN "010011100",//IO/138 串口4
"0111111" WHEN "010100000",//IO/140 讀中斷號
"1111111" WHEN OTHERS;
END BLOCK CODE;
3.2 104總線與CAN控制器的接口
如前所述,104總線與ISA總線兼容而與CAN控制器要求的時序不同,設計中將104總線中的BALE、地址和讀寫信號經CPLD邏輯整合后提供給CAN控制器,同時從數據線分時送出操作地址和操作數,滿足CAN控制器的時序要求。時序整合的VHDL語言如下:
ALE<=(NOT Y(0)) AND BALE;
CSCAN<=Y(1);
IORCAN<=Y(1) OR NIOR;
IOWCAN<=Y(1) OR NIOW;
雙向數據緩沖的VHDL實現可以在很多參考書中找到,此處從略。
3.3 異步通信接口電路及中斷共享電路
16554的接口可與PC104實現無縫連接,CPLD實現選通和讀寫邏輯控制,異步通信與CAN控制器共用CPLD內的雙向數據緩沖電路。
異步通訊控制單元16554有很強的中斷能力,四個串行控制器具有各自的中斷引腳,使用靈活。但系統的中斷資源有限,如果每一個控制器都占用一個中斷號,通訊模塊需要占用五個中斷號。為了節約中斷資源,設計中將4個串口控制器共享一個中斷,而CAN總線控制器單獨占用一個中斷。
為了實現共享,設置了一個中斷向量寄存器,當發生中斷時首先讀取中斷向量寄存器以定位發出中斷的串行口。其原理見圖3。
[align=center]

圖3 中斷共享電路[/align]
VHDL語言實現如下:
GMID<=NIOR OR Y(6);
INTSER<=INTABCD(0) OR INTABCD(1) OR INTABCD(2) OR INTABCD(3);
INTID<=INTABCD WHEN (GMID=‘0‘)
ELSE
"ZZZZ"
4 結論
本設計利用CPLD實現了104總線和CAN控制器之間的時序轉換、整個電路的邏輯控制以及中斷共享,使電路設計結構緊湊,性能穩定。擴展了RS-232、RS-485和CAN接口的104PC可以滿足絕大部分控制系統的通信要求。該設計已被一個分布式防空系統所采用,在歷次聯調試驗中性能指標均達到了要求。
參考文獻
1. 盛博科技有限公司.PC/104 技術手冊.SBS Science&technology Co,2000
2. Altera. MAX 7000 Programmable Logic Device Family Data Sheet.1995
3.Texas Instruments. TL16C554 Asynchronous Communication Element Data Sheet. 1998
4. Philips Semiconductors. SJA1000 Stand-alone CAN Controller data sheet. 1997