摘要:在控制系統(tǒng)中進(jìn)行現(xiàn)場(chǎng)控制的PC/104總線計(jì)算機(jī)往往需要以多種方式、同多種節(jié)點(diǎn)通信。本文介紹了按照PC/104標(biāo)準(zhǔn)開發(fā)帶有四個(gè)串行口(兩個(gè)RS-232、兩個(gè)RS-485)和一個(gè)CAN總線接口的多功能、通用型擴(kuò)展通信模塊的方法,設(shè)計(jì)中所有的控制邏輯都由一塊CPLD實(shí)現(xiàn),CAN控制器與104總線之間的時(shí)序也由CPLD調(diào)整。
關(guān)鍵詞: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總線計(jì)算機(jī)具有體積小、功耗低、工作溫度寬、可靠性高等特點(diǎn),被廣泛地應(yīng)用于分布式系統(tǒng)和集散控制系統(tǒng)中作為現(xiàn)場(chǎng)控制計(jì)算機(jī)。在這些系統(tǒng)中的104PC,往往需要同上位機(jī)及下面連接的控制執(zhí)行機(jī)構(gòu)、傳感器或測(cè)量?jī)x表通信,而常用的通信方式有RS-232串行口加MODEM方式、RS-485方式、以太網(wǎng)方式以及各種工業(yè)現(xiàn)場(chǎng)總線。
RS-232串行口加MODEM方式一般用于點(diǎn)對(duì)點(diǎn)之間較遠(yuǎn)距離的數(shù)據(jù)傳輸;RS-485方式一般用于控制現(xiàn)場(chǎng)對(duì)多點(diǎn)實(shí)施控制,目前它仍是工業(yè)控制中使用得最廣泛的一種方式;以太網(wǎng)方式可以實(shí)現(xiàn)遠(yuǎn)程控制和信息共享,但它的時(shí)延不可控,在實(shí)時(shí)性和保密性要求較高的控制系統(tǒng)中的應(yīng)用受到一定限制;現(xiàn)場(chǎng)總線技術(shù)是當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,是應(yīng)用于控制現(xiàn)場(chǎng)、在微機(jī)化測(cè)量設(shè)備之間實(shí)現(xiàn)雙向串行多節(jié)點(diǎn)數(shù)字通信的系統(tǒng),也被稱為開放式、數(shù)字化、多點(diǎn)通信的底層控制網(wǎng)絡(luò)?,F(xiàn)場(chǎng)總線的標(biāo)準(zhǔn)很多,其中CAN總線在國(guó)內(nèi)的發(fā)展速度最快,被認(rèn)為是替代RS-485的最理想的方式之一。
CAN總線規(guī)范已被ISO制定為國(guó)際標(biāo)準(zhǔn),其模型結(jié)構(gòu)有三層,包括OSI底層的物理層、數(shù)據(jù)鏈路層和頂層的應(yīng)用層,通信速率最高可達(dá)1Mbps/40m,直接傳輸距離最高可達(dá)10Km/5Kbps,可掛接設(shè)備數(shù)最高可達(dá)110個(gè)??偩€的電氣規(guī)范類似于RS-485,采用雙線差分平衡傳輸,以兩線間的電壓差表示數(shù)字邏輯,分為“顯性”和“隱性”兩種邏輯。CAN總線采用面向內(nèi)容的編址方案,可以在總線中加進(jìn)一些新站而無需在硬件或軟件上進(jìn)行修改。該總線以報(bào)文為單位進(jìn)行數(shù)據(jù)傳送,報(bào)文的優(yōu)先級(jí)結(jié)合在11位標(biāo)識(shí)符中,確保不同實(shí)時(shí)性要求的數(shù)據(jù)以不同優(yōu)先級(jí)傳送,總線讀取中的沖突可通過位仲裁解決。CAN協(xié)議可使用五種檢查錯(cuò)誤的方法,保證了數(shù)據(jù)傳輸?shù)目煽啃?。利用CAN總線可以以較低的成本、較高的實(shí)時(shí)處理能力和在惡劣的強(qiáng)電磁干擾環(huán)境下可靠地工作。
綜上所述,根據(jù)目前104PC在工業(yè)控制中的應(yīng)用特點(diǎn)和需求,本設(shè)計(jì)的目的是按照PC/104標(biāo)準(zhǔn)設(shè)計(jì)通用型多功能擴(kuò)展通信模塊,該通信模塊包括兩個(gè)RS-232串行口、兩個(gè)RS-485接口和一個(gè)CAN總線接口。
2 器件選型和總體設(shè)計(jì)方案
要按照PC/104標(biāo)準(zhǔn)在通信模塊中擴(kuò)展四個(gè)串行口和一個(gè)CAN總線接口,在模塊功耗和外型尺寸上限制很嚴(yán),因而器件需選擇高集成度IC。
異步通訊單元是串行口擴(kuò)展的核心器件,它在指定波特率和數(shù)據(jù)格式下完成并行數(shù)據(jù)和串行數(shù)據(jù)之間的相互轉(zhuǎn)換并完成相應(yīng)的控制。設(shè)計(jì)中選用了TI公司的高集成度異步通訊控制單元TL16C554芯片,它集成有4個(gè)ACE(異步通信單元),共用了數(shù)據(jù)線和一些邏輯控制信號(hào),可以通過各自的片選信號(hào)選擇每一個(gè)ACE單元。每個(gè)收發(fā)單元都有自己的中斷請(qǐng)求、數(shù)據(jù)收發(fā)以及MODEM邏輯控制信號(hào),可以完成異步收發(fā)器的所有功能。
RS-232C電平與TTL電平轉(zhuǎn)換通過Max213完成。Max213采用的是SSOP封裝,外型尺寸小,功耗小,一片Max213加上幾個(gè)小電容就可以完成一個(gè)標(biāo)準(zhǔn)RS-232C所有信號(hào)的電平轉(zhuǎn)換。
RS-485電平與TTL電平轉(zhuǎn)換通過SN65LBC184實(shí)現(xiàn)。SN65LBC184是德州儀器公司推出的RS-485總線驅(qū)動(dòng)芯片,結(jié)構(gòu)簡(jiǎn)單,功耗小,由單芯片實(shí)現(xiàn)半雙工RS-485通信。它采用1/2負(fù)載設(shè)計(jì),總線上允許掛接64個(gè)單元,還具有防靜電、耐高壓沖擊和過熱保護(hù)功能,可以提高系統(tǒng)的可靠性。
CAN總線控制器是實(shí)現(xiàn)CAN總線接口擴(kuò)展的核心器件。它將來自104PC上ISA總線的并行數(shù)據(jù)按照CAN總線協(xié)議轉(zhuǎn)發(fā)出去,同時(shí)也按照CAN總線協(xié)議接收來自外部總線的數(shù)據(jù)。在設(shè)計(jì)中選用了PHILIPS公司的SJA1000獨(dú)立CAN總線控制器。SJA1000是PCA82C200的升級(jí)產(chǎn)品,集成了CAN總線邏輯鏈路層協(xié)議。它與PCA82C200在硬件和軟件上完全兼容,還具有支持?jǐn)U展CAN總線協(xié)議的PELI工作模式(支持CAN2.0B協(xié)議)。具體來說,SJA1000主要具有以下特點(diǎn):擴(kuò)展的64 Byte FIFO接收緩沖、支持11bit標(biāo)識(shí)碼和29bit標(biāo)識(shí)碼、支持標(biāo)準(zhǔn)和擴(kuò)展格式的幀信息的傳輸,還具有單/雙掩碼濾波器、仲裁丟失中斷、只聽模式、自身信息接收、最近錯(cuò)誤寄存等眾多PELICAN模式擴(kuò)展功能。
CAN總線電平與TTL電平的轉(zhuǎn)換通過PHILIPS公司的PCA82C250完成。該芯片與ISO11898標(biāo)準(zhǔn)兼容,支持最高達(dá)1Mbaud的高速傳輸,可連接110個(gè)節(jié)點(diǎn)。采用限斜率控制,降低射頻干擾,具有寬范圍的抗共模干擾、抗電磁干擾能力。
設(shè)計(jì)中所涉及到的邏輯控制、時(shí)序控制由CPLD實(shí)現(xiàn)。這樣做的目的,主要出于以下考慮:
·如果采用與非門,譯碼器、鎖存器等分立元件實(shí)現(xiàn)邏輯控制,大量的元件難以在PCB板上布局,而且使電路變得復(fù)雜,也降低了模塊的可靠性和抗干擾能力。
·CAN控制器SJA1000的對(duì)外操作接口是一種地址/數(shù)據(jù)分時(shí)復(fù)用的接口,而PC104沒有地址/數(shù)據(jù)分時(shí)輸出的特性。因此,必須經(jīng)過時(shí)序轉(zhuǎn)換才能實(shí)現(xiàn)它們之間的連接。目前,一般采用8031單片機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)的方式來實(shí)現(xiàn):通過8031連接CAN控制器,104PC利用IO端口讀寫的方式將數(shù)據(jù)直接傳送給8031,或者將數(shù)據(jù)寫于雙口RAM中,8031在另一個(gè)口讀取數(shù)據(jù),再由它對(duì)CAN總線控制器進(jìn)行操作,將數(shù)據(jù)轉(zhuǎn)發(fā)出去。這種方法無疑又要增加器件和電路的復(fù)雜性。
為此,設(shè)計(jì)了通過CPLD整合時(shí)序?qū)崿F(xiàn)104PC與CAN控制器連接的方法,由104PC分時(shí)送出操作地址和操作數(shù)據(jù),并由CPLD整合相關(guān)的邏輯控制信號(hào),滿足CAN控制器的時(shí)序要求。
·采用CPLD可以根據(jù)需要定義輸入輸出腳,方便PCB板布局和走線。
·采用CPLD時(shí)不必?fù)?dān)心設(shè)計(jì)中所采用器件的種類、數(shù)量,可以任意定義所需各種器件,從而優(yōu)化電路性能。
·采用CPLD可以通過軟件對(duì)電路進(jìn)行仿真,方便電路調(diào)試。
·采用CPLD可以在線修改其內(nèi)部邏輯,升級(jí)或修改BUG時(shí)可不改動(dòng)外部電路。
CPLD芯片選用ALTERA公司的EPM7064SLC84-10,該芯片具有基于EEPROM的第二代MAX結(jié)構(gòu),支持通過JTAG引腳實(shí)現(xiàn)在系統(tǒng)編程。擁有64個(gè)宏單元,4個(gè)邏輯陣列塊,1250個(gè)可用門單元,支持5V/3.3V多電壓IO接口,可提供68個(gè)用戶IO引腳。
根據(jù)以上的方案,通信擴(kuò)展模塊的結(jié)構(gòu)如圖1。
[align=center]
圖1 擴(kuò)展通信模塊結(jié)構(gòu)[/align]
3 硬件實(shí)現(xiàn)
3.1地址譯碼電路
本擴(kuò)展模塊共需占用七個(gè)IO地址,其中兩個(gè)IO地址供CAN控制器,四個(gè)IO地址供四串口異步通訊單元,一個(gè)IO地址供中斷共享電路。必須合理選擇IO地址,否則會(huì)引起系統(tǒng)不可預(yù)知的沖突。
各種PC104計(jì)算機(jī)IO地址分配情況大體相同,以盛博SysCenterMoudle/SuperDx為例,選擇了110H~140H為擴(kuò)展通訊模塊的IO地址,地址分配見表1,邏輯譯碼結(jié)構(gòu)見圖2。
表1 IO地址分配表
[align=center]
圖2 IO地址邏輯譯碼結(jié)構(gòu)[/align]
圖2用VHDL語(yǔ)言可以很方便地實(shí)現(xiàn)。其具體描述如下:
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 數(shù)據(jù)操作
"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 讀中斷號(hào)
"1111111" WHEN OTHERS;
END BLOCK CODE;
3.2 104總線與CAN控制器的接口
如前所述,104總線與ISA總線兼容而與CAN控制器要求的時(shí)序不同,設(shè)計(jì)中將104總線中的BALE、地址和讀寫信號(hào)經(jīng)CPLD邏輯整合后提供給CAN控制器,同時(shí)從數(shù)據(jù)線分時(shí)送出操作地址和操作數(shù),滿足CAN控制器的時(shí)序要求。時(shí)序整合的VHDL語(yǔ)言如下:
ALE<=(NOT Y(0)) AND BALE;
CSCAN<=Y(1);
IORCAN<=Y(1) OR NIOR;
IOWCAN<=Y(1) OR NIOW;
雙向數(shù)據(jù)緩沖的VHDL實(shí)現(xiàn)可以在很多參考書中找到,此處從略。
3.3 異步通信接口電路及中斷共享電路
16554的接口可與PC104實(shí)現(xiàn)無縫連接,CPLD實(shí)現(xiàn)選通和讀寫邏輯控制,異步通信與CAN控制器共用CPLD內(nèi)的雙向數(shù)據(jù)緩沖電路。
異步通訊控制單元16554有很強(qiáng)的中斷能力,四個(gè)串行控制器具有各自的中斷引腳,使用靈活。但系統(tǒng)的中斷資源有限,如果每一個(gè)控制器都占用一個(gè)中斷號(hào),通訊模塊需要占用五個(gè)中斷號(hào)。為了節(jié)約中斷資源,設(shè)計(jì)中將4個(gè)串口控制器共享一個(gè)中斷,而CAN總線控制器單獨(dú)占用一個(gè)中斷。
為了實(shí)現(xiàn)共享,設(shè)置了一個(gè)中斷向量寄存器,當(dāng)發(fā)生中斷時(shí)首先讀取中斷向量寄存器以定位發(fā)出中斷的串行口。其原理見圖3。
[align=center]
圖3 中斷共享電路[/align]
VHDL語(yǔ)言實(shí)現(xiàn)如下:
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 結(jié)論
本設(shè)計(jì)利用CPLD實(shí)現(xiàn)了104總線和CAN控制器之間的時(shí)序轉(zhuǎn)換、整個(gè)電路的邏輯控制以及中斷共享,使電路設(shè)計(jì)結(jié)構(gòu)緊湊,性能穩(wěn)定。擴(kuò)展了RS-232、RS-485和CAN接口的104PC可以滿足絕大部分控制系統(tǒng)的通信要求。該設(shè)計(jì)已被一個(gè)分布式防空系統(tǒng)所采用,在歷次聯(lián)調(diào)試驗(yàn)中性能指標(biāo)均達(dá)到了要求。
參考文獻(xiàn)
1. 盛博科技有限公司.PC/104 技術(shù)手冊(cè).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