摘 要: 設計了一種高速RS-422串行通信接口板,采用通用的異步串行通信控制器,以嵌入式PC為控制核心,以雙端口RAM作為數(shù)據(jù)緩存,并對雙端口RAM的程序設計進行了詳細說明。應用結(jié)果表明,該接口板通信速率高,數(shù)據(jù)緩存能力強,使用簡單。
關鍵詞: 串行通信;嵌入式PC;高速;雙端口RAM
RS-422串行通信方式以其傳輸距離遠、可靠性高、使用靈活等特點,目前仍被大量應用[1]。某型裝備測試時,為了實現(xiàn)狀態(tài)監(jiān)測與故障診斷,需要對設備間12路通信速率為614.4 kb/s的RS-422串行通信接口進行實時的數(shù)據(jù)轉(zhuǎn)存,而通用串行通信接口板的通信速率最高為128 kb/s,數(shù)據(jù)緩存能力差,不能滿足要求。本文設計了一種由異步串行通信控制器、嵌入式PC和雙端口RAM為主的高速RS-422串行通信接口板,通信速率高,數(shù)據(jù)緩存強,使用簡單。
1 總體方案
高速RS-422串行通信接口板總體方案如圖1所示。
該接口板采用通用的異步串行通信控制器ST16C554D,其傳輸速度可以由輸入時鐘的頻率來控制,最高可以達到1.5 Mb/s,通過計算,本接口板采用9.830 4 MHz的晶振,可以達到614.4 kb/s通信速率,該控制器具有通用并行端口,可以把PC總線擴展為4個異步串行通信端口。選用高速全雙工422通信收發(fā)器MAX1490,其傳輸速度可以達到2.5 Mb/s,收發(fā)互不影響。為了實現(xiàn)高速實時數(shù)據(jù)轉(zhuǎn)存,采用嵌入式PC對異步串行通信控制器ST16C554D進行讀寫操作,并把讀取的數(shù)據(jù)存入雙端口RAM[2]。數(shù)據(jù)接收完畢后,主控PC通過PC104總線對雙端口RAM進行讀寫操作,讀出數(shù)據(jù)并存儲在數(shù)據(jù)文件中,既充分發(fā)揮了主控PC的多任務處理能力,又不會對高速數(shù)據(jù)通信產(chǎn)生影響。
2 硬件設計
2.1 嵌入式PC對異步串行通信控制器的讀寫控制
采用嵌入式PC完成串行通信任務,其任務單一,可以保證數(shù)據(jù)的實時收發(fā)[3]。如圖2所示,本接口板嵌入式PC采用德國控創(chuàng)公司的DIMM-PC/520-I,由133 MHz的高性能CPU、32 MB內(nèi)存、32 MB板載電子盤、標準ISA總線接口等組成[4]。由于異步串行通信控制器ST16C554D具有并行PC總線接口,可以直接和DIMM-PC的ISA總線相連接。DIMM-PC與ST16C554D的連接方式為IO映射,即ST16C554D作為外部器件,其讀寫控制由IO讀寫信號決定。
ST16C554D的傳輸速度由外接晶振的頻率進行調(diào)節(jié),傳輸速率為外接晶振的1/16、1/32、…、1/256,可由軟件對寄存器進行設置。ST16C554D擴展了4個標準串行接口,由DIMM-PC的地址線A3~A9經(jīng)GAL譯碼后進行選擇;每個串行接口有多個寄存器,由DIMM-PC的地址線A0~A2進行選擇。
2.2 嵌入式PC對雙端口RAM的讀寫控制
采用大容量雙端口RAM主要是為了數(shù)據(jù)的緩沖和中繼傳輸。雙端口RAM 器件IDT7006以內(nèi)存映射方式與DIMM-PC相連,如圖3所示。其數(shù)據(jù)線D0~D7和地址線A0~A13與DIMM-PC的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。內(nèi)存映射時,雙端口RAM的讀寫信號由DIMM-PC的內(nèi)存讀寫控制信號-SMEMR和-SMEMW控制,這樣當DIMM-PC訪問IO端口時,不會因地址相同而產(chǎn)生沖突,同時提高了尋址能力。由于DIMM-PC的基本640 KB內(nèi)存空間是公用的,很多程序都訪問這個區(qū)間,不能把地址映射到這個區(qū)域,而1 MB以上的區(qū)間為擴展內(nèi)存時(加內(nèi)存條)使用的,也不能任意使用,在640 KB~1 MB之間有很多空閑區(qū)間,可以供擴展板卡進行內(nèi)存映射時使用。本接口板使用0E0000H~0EFFFFH區(qū)間(32 KB)。
2.3 PC104總線對雙端口RAM的讀寫控制
雙端口RAM IDT7006以內(nèi)存映射方式與PC104總線相連,原理如圖4所示。其數(shù)據(jù)線D0~D7和地址線A0~A13與PC104總線的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。同樣原因,內(nèi)存映射時,雙端口RAM的讀寫信號由PC104總線的內(nèi)存讀寫控制信號-SMEMR和-SMEMW控制。主控PC對本接口板訪問時,本接口板雖然在硬件上獨立于主控PC,但主控PC可以把本接口板作為其內(nèi)存的一段來進行讀寫操作,這樣就方便了程序的設計。本接口板映射的地址也在主控PC內(nèi)存640 KB~1 MB之間,具體地址因主控PC型號的不同而有所區(qū)別,可以編程控制。
主控PC和嵌入式PC通過雙端口RAM進行數(shù)據(jù)交換,同時對雙端口RAM進行讀寫操作,在控制邏輯上要避免發(fā)生沖突,又要保證信號時序的正確。應該充分利用雙端口RAM器件本身的接口資源和狀態(tài)信號,保證譯碼的正確有效,在軟件設計時保證不同時對一個內(nèi)存單元進行寫操作;另外,采用專用的可編程邏輯芯片替代傳統(tǒng)的邏輯門電路組合,提高了譯碼的速度、準確度和可靠性,減小了電路規(guī)模。
2.4 RS-422端口驅(qū)動與收發(fā)
異步串行通信控制器ST16C554D擴展了4個標準串行接口。在進行RS-422方式通信時可以只使用每個接口的TX和RX端,采用隔離RS-422收發(fā)器MAX1490進行端口驅(qū)動與收發(fā),如圖5所示。
MAX1490把TTL電平的串行通信轉(zhuǎn)換為RS-422電平方式且相互隔離,可避免系統(tǒng)間干擾和瞬間高壓損傷。MAX1490的輸入端DI是其內(nèi)部光耦的輸入端,需要一定的驅(qū)動電流,但ST16C554D的輸出驅(qū)動能低,因此增加了74HC86門電路進行驅(qū)動;MAX1490的輸出端DO是集電極開路(OC)輸出,應在此端接一個上拉電阻,并用門電路74HC86把電平調(diào)理成標準的TTL電平后再由ST16C554D接收。MAX1490的422方式輸入輸出端(TX+,TX-,RX+,RX-)可以直接與其他系統(tǒng)按RS-422通信協(xié)議進行通信。
3 嵌入式 PC主程序結(jié)構(gòu)
嵌入式PC的主程序結(jié)構(gòu)如圖6所示,其中有兩個重要組成部分,分別是異步串行通信控制器的采集程序和雙端口RAM間的控制程序。嵌入式PC與異步串行通信控制器間以IO映射的方式進行連接,控制方式比較簡單,只需要按照寄存器結(jié)構(gòu)進行設置和讀寫操作即可實現(xiàn)數(shù)據(jù)傳輸,在此不進行過多闡述,僅對雙端口RAM的控制程序進行詳細說明。
雙端口RAM首字節(jié)的數(shù)據(jù)用于傳遞命令和狀態(tài)字,數(shù)據(jù)含義如表1所示。
雙端口RAM在嵌入式PC的內(nèi)存映射地址為E0000。初始化設置模塊對接口板各串口進行初始化,執(zhí)行自檢程序,測試內(nèi)存和串口狀態(tài)。把測試結(jié)果寫在雙端口RAM的E0000位置,55H(或66H或77H或88H)表示串口1(或串口2或串口3或串口4)自檢錯誤;EEH表示內(nèi)存自檢錯誤;FFH表示自檢正常;00H表示主機軟件的重啟動命令,主要用于主機非正常重啟時,強制嵌入式 PC主程序放棄已采集數(shù)據(jù),重新初始化設置,等待采集命令;99H表示主機軟件的采集命令。
用戶軟件通過查看狀態(tài)標識位,與接口板上嵌入式PC的DRAM交換數(shù)據(jù)。用戶軟件發(fā)送轉(zhuǎn)移數(shù)據(jù)命令,即修改E0000為AAH(或BBH或CCH或DDH),接口板程序?qū)⒋?(或串口2或串口3或串口4)接收的數(shù)據(jù)轉(zhuǎn)移至E00005以后的地址中,并回復命令,即將E0000修改為11H(或22H或33H或44H),表明串口1(或串口2或串口3或串口4)的數(shù)據(jù)準備好,用戶軟件可以讀取。轉(zhuǎn)移數(shù)據(jù)長度寫在E0002和E0003地址中。所選擇串口是否還有未轉(zhuǎn)移數(shù)據(jù)標志寫在E0004地址中(11H有,00H無)。
4 應用結(jié)果
為形成對12路高速串行通信數(shù)據(jù)的轉(zhuǎn)存能力,數(shù)據(jù)采集系統(tǒng)中使用了3塊按照上述軟硬件設計方法所設計的接口板,應用結(jié)果表明,各串行通信接口板運行正常,數(shù)據(jù)接收與存儲能力達到了預期目標,對系統(tǒng)資源的占用少。
本文所提出的高速串行通信接口板設計方法應用了嵌入式PC,形成了專門處理數(shù)據(jù)的核心,提高了數(shù)據(jù)傳輸速率,對外部CPU和總線的要求寬松;同時,可以在硬件電路不變的情況下,通過修改軟件協(xié)議,即修改雙端口RAM的讀寫控制程序,實現(xiàn)全雙工高速串行通信。
參考文獻
[1] 孫淵,王仕成,閔海波,等.RS422高速串行通信在AT91-RM9200上的實現(xiàn)[J].彈箭與制導學報,2008,28(1):329-332.
[2] 李正軍.計算機測控系統(tǒng)設計與應用[M].北京:機械工業(yè)出版社,2004:127-132.
[3] 胡宏偉,宋斌,趙秀娟.基于CPLD和DIMM-PC微處理器模塊的圖像采集處理系統(tǒng)設計[J].光電技術應用,2006,21(5):61-66.
[4] Kontron embedded computers AG.DIMM-PC/520-I user’s guide[S].2003