文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2010)10-0022-03
在測(cè)試飛行控制組件時(shí),遙測(cè)接收設(shè)備離信息處理中心較遠(yuǎn),而被測(cè)數(shù)據(jù)量又極大,如果采用傳統(tǒng)的專線傳輸遙測(cè)數(shù)據(jù),則傳輸時(shí)間需幾個(gè)小時(shí),無(wú)法滿足快速處理的要求。因此,需要研制一種協(xié)議轉(zhuǎn)換器,用來(lái)完成被測(cè)數(shù)據(jù)無(wú)損、實(shí)時(shí)、遠(yuǎn)距離地與遠(yuǎn)程上位機(jī)進(jìn)行通信,并能接收上位機(jī)的控制指令,實(shí)現(xiàn)工作狀態(tài)的遠(yuǎn)程交互,而測(cè)試人員通過(guò)上位機(jī)的人機(jī)界面就可以完成所有測(cè)試。
1 系統(tǒng)組成及工作原理
考慮到系統(tǒng)實(shí)時(shí)性和可靠性的要求,選擇以太網(wǎng)口作為協(xié)議轉(zhuǎn)換器與遠(yuǎn)程上位機(jī)的數(shù)據(jù)轉(zhuǎn)發(fā)接口、以高速串口作為控制口的通信方式,采用DSP+ARM架構(gòu)的硬件解決方案。系統(tǒng)框圖如圖1所示?;竟ぷ髟恚篎PGA作為數(shù)據(jù)預(yù)處理器,完成并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換等數(shù)據(jù)預(yù)處理任務(wù);DSP讀取FPGA處理后的數(shù)據(jù)并完成數(shù)據(jù)壓縮;ARM作為中央處理控制器,主要從DSP系統(tǒng)中讀取已經(jīng)編碼的數(shù)據(jù)并通過(guò)以太網(wǎng)完成與上位機(jī)實(shí)時(shí)通信的任務(wù)。上位機(jī)按照數(shù)據(jù)傳輸協(xié)議、產(chǎn)品的數(shù)據(jù)遙測(cè)協(xié)議解調(diào)出各類物理變量,記錄并存儲(chǔ)。測(cè)試人員通過(guò)上位機(jī)完成工作狀態(tài)的遠(yuǎn)程設(shè)置與查詢信息交互的任務(wù)。
2 硬件設(shè)計(jì)
2.1 TMS320C6416及其外圍電路設(shè)計(jì)
DSP芯片選用TI公司的TMS320C6416。這是TI公司推出的高速定點(diǎn)DSP,它擁有處理能力強(qiáng)大的CPU、高達(dá)1 MB的RAM及豐富的外設(shè)接口。外設(shè)包括為CPU訪問(wèn)外圍設(shè)備提供無(wú)縫接口的靈活的外部存儲(chǔ)器接口EMIFA和EMIFB,一個(gè)使得DSP很容易通過(guò)PCI接口無(wú)縫連接到具有PCI功能的外部主CPU上的PCI接口,一個(gè)16/32 bit寬的異步并行接口HPI(和PCI共用相同的引腳),一個(gè)提供64 bit數(shù)據(jù)通道訪問(wèn)的增強(qiáng)型EDMA等。TMS320C6416采用3.3 V和1.4 V電源供電,其中I/O采用3.3 V電源供電,內(nèi)核采用1.4 V電源供電。TMS320C6416有符合IEEE1149.1標(biāo)準(zhǔn)的JTAG標(biāo)準(zhǔn)測(cè)試接口及相應(yīng)的控制器,從而可以通過(guò)仿真器把DSP系統(tǒng)與PC機(jī)相連,進(jìn)行在線調(diào)試[1]。
2.1.1 DSP與SDRAM、Flash的接口電路
DSP處理器TMS320C6416對(duì)外有2個(gè)EMIF總線接口,分別是寬64 bit的EMIFA和寬16 bit的EMIFB。EMIFA接口具備與8、16、32、64 bit系統(tǒng)接口的功能,EMIFB接口端口支持8 bit和16 bit系統(tǒng)。EMIFA分成ACE0~ACE3四個(gè)存儲(chǔ)空間,每個(gè)存儲(chǔ)空間可以獨(dú)立配置,無(wú)縫連接多種類型的存儲(chǔ)器(如SRAM、Flash RAM、DDR RAM)。
為了提高系統(tǒng)運(yùn)行速度,外擴(kuò)兩片SDRAM芯片作為程序的運(yùn)行空間、數(shù)據(jù)及堆棧區(qū)。SDRAM 芯片選用同步存儲(chǔ)器MT48LC2M32B2TG,其容量為2 M×32 bit。TMS320C6416通過(guò)EMIFA接口實(shí)現(xiàn)與兩片SDRAM芯片的無(wú)縫連接。
TMS320C6416內(nèi)部沒(méi)有Flash存儲(chǔ)器,為了形成獨(dú)立的系統(tǒng),采用外部擴(kuò)展Flash存儲(chǔ)器AM29LV400B存儲(chǔ)程序。系統(tǒng)復(fù)位時(shí),從Flash中加載程序。TMS320C6416通過(guò)EMIFB接口實(shí)現(xiàn)與Flash芯片的無(wú)縫連接。
2.1.2 DSP與FPGA的接口電路
由于DSP處理器TMS320C6416的采樣速度及存儲(chǔ)空間受到自身約束限制,所以數(shù)據(jù)的采集、流向控制和數(shù)據(jù)預(yù)處理等任務(wù)由FPGA完成。FPGA芯片選用Xilinx公司低成本現(xiàn)場(chǎng)可編程門陣列Spartan-3E系列中的XC3S500E。XC3S500E芯片集成有20個(gè)Block RAM,每個(gè)RAM塊中的18 Kbit的模塊存儲(chǔ)器是完全同步、真正的雙端存儲(chǔ)器。用戶可獨(dú)立地從每個(gè)端口讀出或向每個(gè)端口寫入(但同一地址不能同時(shí)進(jìn)行讀和寫)。另外,每個(gè)端口都有一個(gè)獨(dú)立的時(shí)鐘,并且對(duì)每個(gè)端口的數(shù)據(jù)寬度都可以獨(dú)立進(jìn)行配置。
在該協(xié)議轉(zhuǎn)換器中,DSP通過(guò)EMIFA接口連接到FPGA,實(shí)現(xiàn)DSP與FPGA Block RAM的無(wú)縫連接,從而使得DSP與FPGA之間的通信問(wèn)題轉(zhuǎn)化為DSP對(duì)其EMIFA外設(shè)的訪問(wèn),達(dá)到了提高系統(tǒng)實(shí)時(shí)性的目的。為了保持FPGA與DSP之間的同步,F(xiàn)PGA的時(shí)鐘直接由DSP內(nèi)部的鎖相環(huán)提供。DSP處理器TMS320C6416與FPGA的接口示意圖如圖2所示[2]。
2.2 S3C4510B及其外圍電路設(shè)計(jì)
ARM芯片選用Samsung公司的S3C4510B。S3C4510B是基于以太網(wǎng)應(yīng)用的高性價(jià)比16/32 bit RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32 bit ARM7TDMI RISC處理器核。S3C4510B 提供了一套比較完整的通用的外圍設(shè)備,從而使得整個(gè)系統(tǒng)消耗最小。正是因?yàn)樗哂泻芏喑S玫墓δ苣K,所以也免去了添加配置附加設(shè)備的麻煩。芯片上集成的功能主要包括以下幾個(gè)方面[3]:3.3 V ARM內(nèi)核和3.3 V外部I/O,具有50 MHz時(shí)鐘頻率的微處理器;8 KB的Cache/SRAM;一個(gè)10/100 Mb/s以太網(wǎng)控制器,MII接口;2個(gè)HDLC通道,每個(gè)通道可支持10 Mb/s;2個(gè)UART通道,2個(gè)DMA通道,2個(gè)32 bit定時(shí)/計(jì)數(shù)器;1個(gè)通道IIC接口,18個(gè)可編程I/O口;中斷控制器,支持21個(gè)中斷源,包括4個(gè)外部中斷;支持SDRAM、SRAM、Flash等;具有擴(kuò)展外部總線和JTAG接口,支持軟件開(kāi)發(fā)及硬件調(diào)試。
本設(shè)計(jì)選用ARM微控制器S3C4510B是因其集成有以太網(wǎng)控制器和極強(qiáng)的外圍擴(kuò)展能力。S3C4510B以及其外圍芯片F(xiàn)lash、SDRAM組成了整個(gè)系統(tǒng)的核心,負(fù)責(zé)控制和協(xié)調(diào)各模塊工作,并實(shí)現(xiàn)與遠(yuǎn)程上位機(jī)的以太網(wǎng)通信。本設(shè)計(jì)對(duì)S3C4510B內(nèi)部SDRAM和ROM進(jìn)行了擴(kuò)充。采用兩片SDRAM芯片HY57V641620并聯(lián)構(gòu)建32 bit的SDRAM存儲(chǔ)系統(tǒng);采用一片F(xiàn)lash芯片HY29LV160構(gòu)建16 bit的Flash存儲(chǔ)器系統(tǒng)。
2.2.1 ARM與DSP的接口電路
由于ARM微控制器要實(shí)現(xiàn)整個(gè)系統(tǒng)的協(xié)調(diào)控制和網(wǎng)絡(luò)功能,DSP處理器要執(zhí)行復(fù)雜計(jì)算,因此需要實(shí)現(xiàn)ARM和DSP之間的數(shù)據(jù)交換。從某種程度上來(lái)說(shuō),ARM和DSP之間數(shù)據(jù)交換的速度決定了整個(gè)系統(tǒng)的運(yùn)行速度和性能。
DSP處理器TMS320C6416集成了一個(gè)16/32 bit寬的主機(jī)接口HPI,HPI通過(guò)復(fù)位時(shí)的自舉和器件配置引腳HD5選擇采用HPI16或HPI32。HPI具有兩條地址線HCNTRL[1:0],負(fù)責(zé)對(duì)HPI的內(nèi)部寄存器尋址。HPI只有三個(gè)32 bit內(nèi)部寄存器,分別是控制寄存器HPIC、地址寄存器HPIA和數(shù)據(jù)寄存器HPID。只需對(duì)上述三個(gè)寄存器進(jìn)行相應(yīng)的讀寫操作,就能完成對(duì)DSP內(nèi)存空間的訪問(wèn)。
由于ARM微控制器S3C4510B中沒(méi)有完全符合DSP處理器TMS320C6416 HPI接口時(shí)序的外部接口可以直接使用,因此選用S3C4510B中時(shí)序最接近HPI接口時(shí)序的外部I/O接口與TMS320C6416進(jìn)行連接。TMS320C6416與S3C4510B的接口示意圖如圖3所示。由圖3可知,TMS320C6416與S3C4510B通過(guò)單獨(dú)的32 bit數(shù)據(jù)線HD0~HD31和8條控制線進(jìn)行連接。S3C4510B通過(guò)HPI訪問(wèn)DSP內(nèi)部的RAM以及其他一些外部資源。在整個(gè)ARM與DSP通過(guò)HPI進(jìn)行通信和數(shù)據(jù)交換的過(guò)程中,除了中斷ARM和清除ARM發(fā)過(guò)來(lái)的中斷需要DSP本身參與外,其他操作中DSP都處于被動(dòng)地位。所以對(duì)于ARM來(lái)說(shuō),DSP就相當(dāng)于一片外接的SDRAM。
2.2.2 以太網(wǎng)接口電路
ARM微控制器S3C4510B內(nèi)嵌一個(gè)以太網(wǎng)控制器,支持媒體獨(dú)立接口MII(Media Independent Interface)和帶緩沖DMA接口(Buffered DMA Interface)??稍诎腚p工或全雙工模式下提供10 /100 Mb/s的以太網(wǎng)接入。在半雙工模式下,控制器支持CSMA/CD協(xié)議,在全雙工模式下支持IEEE802.3 MAC控制層協(xié)議。因此,S3C4510B內(nèi)部實(shí)際上已包含了以太網(wǎng)MAC控制,但并未提供物理層接口,所以采用RTL8201作為以太網(wǎng)的物理層接口。信號(hào)的發(fā)送和接收端TPRX+、TPRX-、TPTX+、TPTX-應(yīng)通過(guò)網(wǎng)絡(luò)隔離變壓器和RJ45接口接入傳輸媒體[4]。以太網(wǎng)接口示意圖如圖4所示。
3 系統(tǒng)軟件設(shè)計(jì)
由于需要ARM微控制器S3C4510B實(shí)現(xiàn)整個(gè)系統(tǒng)的協(xié)調(diào)控制和網(wǎng)絡(luò)功能,因此在S3C4510B上移植了嵌入式操作系統(tǒng)μClinux。μCLinux是一個(gè)帶有完整TCP/IP協(xié)議的操作系統(tǒng),在μCLinux中加入實(shí)時(shí)RT-Linux模塊以滿足對(duì)嵌入式操作系統(tǒng)的實(shí)時(shí)性要求,并根據(jù)需要對(duì)μCLinux系統(tǒng)進(jìn)行了裁剪。
在網(wǎng)絡(luò)通信中,基于TCP/IP協(xié)議的通信方式有很多,本文選用Socket實(shí)現(xiàn)服務(wù)器端和客戶端的數(shù)據(jù)通信。Socket是建立在傳輸層協(xié)議上的一種套接字規(guī)范,它定義了兩臺(tái)計(jì)算機(jī)間進(jìn)行通信的規(guī)范。套接字屏蔽了底層通信軟件和具體操作系統(tǒng)的差異,使得任何兩臺(tái)安裝了TCP協(xié)議軟件和實(shí)現(xiàn)了套接字規(guī)范的計(jì)算機(jī)之間的通信成為可能。在開(kāi)發(fā)?滋CLinux系統(tǒng)下的套接字程序時(shí),采用了TCP套接字,因?yàn)樗峁┝艘环N可靠的面向連接的數(shù)據(jù)傳輸方法,有檢錯(cuò)和糾錯(cuò)機(jī)制,并且不管對(duì)單個(gè)數(shù)據(jù)報(bào)還是數(shù)據(jù)包,它都提供一種流式數(shù)據(jù)傳輸方式。服務(wù)器首先啟動(dòng)并進(jìn)行初始化操作,通過(guò)調(diào)用函數(shù)socket()創(chuàng)建一個(gè)套接字,然后調(diào)用函數(shù)bind()將該套接字和本地網(wǎng)絡(luò)地址綁定在一起,再調(diào)用函數(shù)listen()將該套接字轉(zhuǎn)換成傾聽(tīng)套接字,之后調(diào)用函數(shù)accept()來(lái)等待接收客戶的請(qǐng)求。客戶在調(diào)用函數(shù)socket()建立套接字后就可以調(diào)用函數(shù)connect()與服務(wù)器建立連接。連接一旦建立,客戶端和服務(wù)器端之間就可以通過(guò)調(diào)用函數(shù)read()和write()進(jìn)行通信,待數(shù)據(jù)傳送結(jié)束以后,雙方調(diào)用函數(shù)close()關(guān)閉套接字[5]。
通過(guò)對(duì)系統(tǒng)進(jìn)行聯(lián)合調(diào)試,實(shí)現(xiàn)了被測(cè)數(shù)據(jù)無(wú)損、實(shí)時(shí)、遠(yuǎn)距離與遠(yuǎn)程上位機(jī)進(jìn)行通信并能接收上位機(jī)的控制指令,實(shí)現(xiàn)工作狀態(tài)遠(yuǎn)程交互的任務(wù)。測(cè)試人員通過(guò)上位機(jī)可以對(duì)遙測(cè)數(shù)據(jù)進(jìn)行編輯,并隨時(shí)可以查看接收數(shù)據(jù)的正確與否。
本文詳細(xì)介紹了基于DSP+ARM架構(gòu)的協(xié)議轉(zhuǎn)換器的設(shè)計(jì)實(shí)現(xiàn)。提供了詳細(xì)的硬件平臺(tái)結(jié)構(gòu)設(shè)計(jì)方案,闡述了基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程的實(shí)現(xiàn)方法。根據(jù)本方案實(shí)現(xiàn)的協(xié)議轉(zhuǎn)換器具有低成本、低功耗、通用性好、功能可升級(jí)擴(kuò)展等優(yōu)點(diǎn)。
參考文獻(xiàn)
[1] TI.TMS320C6416 datasheet[EB/OL].http://www.TI.com,2001.
[2] 賽靈思公司.使用EMIF將Xilinx FPGA與TI DSP平臺(tái)接口應(yīng)用指南[EB/OL].www.xilinx.com.cn,2007.
[3] 李駒光.ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解[M].北京:清華大學(xué)出版社,2004.
[4] Realtek.RTL8201 Datasheet[EB/OL].http://www.realtek.com.
[5] 孫天澤,袁文菊,張海峰.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開(kāi)發(fā)指南[M].北京:電子工業(yè)出版社,2005.