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