基于PC/104總線的多功能擴展通訊模塊的設(shè)計
圖2用VHDL語言可以很方便地實現(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 讀中斷號
"1111111" WHEN OTHERS;
END BLOCK CODE;
3.2 104總線與CAN控制器的接口
如前所述,104總線與ISA總線兼容而與CAN控制器要求的時序不同,設(shè)計中將104總線中的BALE、地址和讀寫信號經(jīng)CPLD邏輯整合后提供給CAN控制器,同時從數(shù)據(jù)線分時送出操縱地址和操縱數(shù),滿足CAN控制器的時序要求。時序整合的VHDL語言如下:
ALE<=(NOT Y(0)) AND BALE;
CSCAN<=Y(1);
IORCAN<=Y(1) OR NIOR;
IOWCAN<=Y(1) OR NIOW;
雙向數(shù)據(jù)緩沖的VHDL實現(xiàn)可以在很多參考書中找到,此處從略。
3.3 異步通訊接口電路及中斷共享電路
16554的接口可與PC104實現(xiàn)無縫連接,CPLD實現(xiàn)選通和讀寫邏輯控制,異步通訊與CAN控制器共用CPLD內(nèi)的雙向數(shù)據(jù)緩沖電路。
異步通訊控制單元16554有很強的中斷能力,四個串行控制用具有各自的中斷引腳,使用靈活。但系統(tǒng)的中斷資源有限,假如每一個控制器都占用一個中斷號,通訊模塊需要占用五個中斷號。為了節(jié)約中斷資源,設(shè)計中將4個串口控制器共享一個中斷,而CAN總線控制器單獨占用一個中斷。
為了實現(xiàn)共享,設(shè)置了一個中斷向量寄存器,當(dāng)發(fā)生中斷時首先讀取中斷向量寄存器以定位發(fā)出中斷的串行口。其原理見圖3。
圖3 中斷共享電路
VHDL語言實現(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è)計利用CPLD實現(xiàn)了104總線和CAN控制器之間的時序轉(zhuǎn)換、整個電路的邏輯控制以及中斷共享,使電路設(shè)計結(jié)構(gòu)緊湊,性能穩(wěn)定。擴展了RS-232、RS-485和CAN接口的104PC可以滿足盡大部分控制系統(tǒng)的通訊要求。該設(shè)計已被一個分布式防空系統(tǒng)所采用,在歷次聯(lián)調(diào)試驗中性能指標(biāo)均達到了要求。
評論