1 引言
ARM(Advanced RISC Machine)是英國ARM公司設計開發的通用32位RISC微處理器體系結構,其主要優勢在于簡單的設計和高效的指令集。ARM的設計目標是微型化、低功耗、高性能的微處理器實現[1]。ARM已經成為嵌入式系統主控制器的首選。DSP(Digital Signal Processor)具有運算速度高、功耗低和智能化外設等特點,在數字信號處理方面顯示了強大的實力。由于ARM與DSP所具有的微型化、低功耗、高效性等共同特點和各自的獨特優勢,以ARM+DSP結構為核心的嵌入式系統在PDA、STB、DVD等消費類電子產品以及GPS、航空、勘探、測量等軍方產品中得到了廣泛的應用。
本文設計了基于ARM S3C2410與TMS320C5510 DSP的ARM+DSP結構的接口電路,并給出了其軟件實現。
ARM+DSP結構以ARM為主控制器,DSP為協處理器,方案如圖1所示。
ARM完成系統的流程調度、任務處理、中斷處理以及提供顯示、通信、遠程控制等人機接口;DSP主要完成數字濾波、編碼解碼、數字調制解調等功能。ARM與DSP利用了DSP提供的HPI口的進行通信,方便、靈活,接口電路設計簡單。ARM+DSP結構把ARM處理器和DSP處理器有機地結合起來,既能滿足信號數據實時性要求,又便于系統的控制操作與升級,提高了系統的整體性能。ARM+DSP結構具有很強的通用性,幾乎不修改硬件和修改少量軟件代碼就可以輕松實現不同系統間的移植。
3 ARM S3C2410與TMS320C5510 DSP硬件接口設計
TMS320C5510 DSP提供了一個16位寬的并行端口HPI(host port interface),通過HPI口,主機可以直接訪問TMS320C5510 DSP的存儲器,有關TMS320C5510 DSP的HPI口詳細情況請參考資料[2][3]。
ARM S3C2410與TMS320C5510 DSP接口電路圖如圖2所示。
硬件設計中需要注意事項及相關引腳說明:
(1) HPI接口是16位數據寬度的,S3C2410的地址引腳ADD20:1應當分別與TMS320C5510的A19:0腳相連。
(2) 設計中采用非復用模式,控制信號HCNTL0用于控制訪問HPIC或HPID寄存器。HCNTL0與ARM S3C2410的A21引腳相連,訪問HPIC和HPID的起始地址分別為0x38000000和0x38200000。
(3) nOE1和DIR1控制與數據線相連的緩沖器,nOE2和DIR2控制與地址線相連的緩沖器。
(4) nHCS作為HPI的選通信號,和nHDS1、nHDS2信號一起控制HPI的數據傳輸,3個信號中最后出現下降沿完成對HCNTL0、HR/nW信號采樣。由于nHDS1和nHDS2信號在HPI內是異或關系,他們不能同時為高電平或低電平,否則不能產生使能信號,HPI口不能工作。設計中將HDS1拉高,這樣只需對nHDS2進行控制即可。
(5) 由于TMS320C5510不再支持位使能功能,必須將nHBE0、nHBE1置位低電平。
(6) 須將nWait和HRDY引腳相連,以實現高速數據傳輸過程中ARM S3C2410與TMS320C5510 DSP之間的同步操作。
4 ARM S3C2410與TMS320C5510 DSP通信程序設計
ARM S3C2410通過HPI口訪問TMS320C5510 DSP存儲器,必須正確設置ARM S3C2410訪問外部存儲器的控制時序和帶寬相關寄存器。
4.1 TMS320C5510 DSP系統引導程序設計[4][5]
TMS320C5510 DSP提供了多種引導方式,其中HPI口引導方式具有方便、靈活的特點,可以根據實際需要從主機加載不同的應用程序和數據到DSP的存儲器中。
采用HPI口引導方式的步驟如下:
(1) 設置引導模式引腳BOOTM[3:0]=1101b。
(2) 釋放nRESET引腳(由低到高)。
(3) 主機加載DSP應用程序到目的地址(DSP片內存儲器)。
(4) 加載完成后,主機設置HPIC寄存器的RESET位為1。
(5) DSP從字節地址010000h開始運行應用程序。
在ARM+DSP結構中,利用本文設計的HPI口接口電路圖,選擇HPI引導方式加載TMS320C5510 DSP程序代碼和數據。為了加快下載程序速度,DSP程序以可執行的二進制代碼方式進行存儲(將CCS編譯器所產生的COFF文件轉化為可執行的二進制代碼請參考相關資料)。在存儲器中,按照DSPProgramInMemoryStruct結構體存儲DSP程序的相關信息,之后依次存儲DSP各段程序的二進制代碼。
typedef struct DSPProgramInMemoryStruct{
unsigned short Flag;
//文件完整性標志,完整時為0xE5
unsigned short TotalSection;
//程序總的段數
struct {
unsigned short SectionAddressInDSP;
//各段程序在DSP中的地址
unsigned short SectionLength;
//各段程序長度
}SectionInfo[7]; //為了方便和實際情況,這里最多只能存7段程序
} DSPProgramInMemory_Struct;
根據硬件設計圖,初始化及地址定義如下:
#define WriteHPIC(data) (*(volatile unsigned short *)(0x38000000))=(unsigned short)data
#define WriteHPID(addr,data)
(*(volatile unsigned short *) (0x38200000+(((unsigned int)(addr))<<1)))=( unsigned short )data
#define ReadMemory(addr) (*((volatile unsigned short *)(addr)) ) //讀取存儲器中的數據
void ResetDSP(void); //主機通過GPH8引腳復位DSP
S3C2410下載TMS320C5510 DSP程序的實現代碼如下:
int DownLoadDSP(unsigned int StartAddress){
DSPProgramInMemory_Struct DSPInMemory;
int i, j;
unsigned int Pos=0;
ResetDSP (); //主機通過GPH8引腳復位DSP
If(ReadMemory(StartAddress)!=0xE5)
//檢驗DSP文件的完整性
reuturn 0;
DSPInMemory.TotalSection=ReadMemory (StartAddress+2); //獲取總段數
for(i=0; i<7; i++){ //獲取各段在DSP中的地址和長度
DSPInMemory.SectionInfo[i].SectionAddressInDSP=ReadMemory (StartAddress+4+2*i);
DSPInMemory.SectionInfo[i].SectionLength =ReadMemory (StartAddress+4+2*i+1);}
for(i=0;i< DSPInMemory.TotalSection;i++)
//下載程序到DSP
for(j=0;j< DSPInMemory. SectionInfo[i].SectionLength;j+=2){
WriteHPID(DSPInMemory. SectionInfo[i].SectionAddressInDSP +j/2,
ReadMemory (StartAddress +0x30+Pos));
Pos+=2;}
WriteHPID(0x8000,(ReadMemory(StartAddress+0x30) &0x00ff)|0x6a00);
//寫入口點向量
WriteHPID(0x8001,ReadMemory(StartAddress+0x32)); //寫入口點向量
WriteHPIC(0x1); //通過HPIC口復位DSP
return 1;}
4.2 ARM S3C2410與TMS320C5510 DSP通信程序設計
在HPI口通信方式下,TMS320C5510 DSP的片內存儲器DARAM、SARAM和片外存儲器CE0對外界完全透明,由主機通過訪問HPI的地址和數據寄存器便可完成對TMS320C5510 DSP片內存儲器和部分片外存儲器的讀寫。ARM S3C2410與TMS320C5510 DSP通信的流程圖如圖3所示。
主機通過HPI口將參數寫入DSP的DARAM,通過向HPI控制寄存器(HPIC)的DSPINT位寫1產生HPI中斷;DSP接收到HPI中斷后,從DARAM取參數,根據要求執行不同的任務,數據處理完成后,將結果存放在DARAM中,通知主機取結果,主機通過HPI讀取結果,根據結果控制程序流程和顯示,這樣,通過HPI口就完成了ARM S3C2410與TMS320C5510 DSP之間的通信。
5 結束語
隨著嵌入式系統和信號處理器的飛速發展,ARM+DSP結構應用得越來越廣泛,利用HPI口進行ARM與DSP之間的通信,可以使硬件的設計更加簡單、靈活。DSP在通過HPI口和主機通信的過程中完全沒有軟件和硬件開銷,由DSP自身的硬件協調沖突,不會打斷DSP正常程序的運行,這特別有利于構成主處理器和協處理器的模式,完成高速的數字信號處理。本文設計的ARM+DSP結構已成功地應用在測試儀器中。
參考文獻:
[1] 蔣亞群,張春元.ARM微處理器結構及嵌入式SOC[J]. 計算機工程,2002,28(11):4-6.
[2] Texas Instruments Incorporated.TMS320VC5510 DSP Host Port Interface(HPI) Reference Guide[Z].Texas,USA:http://www.ti.com,2004.
[3] Texas Instruments Incorporated.TMS320VC5510 Fixed-Point Digital Signal Processor[Z].Texas,USA:http://www.ti.com,2004.
[4] 陳喆,張幅洪.數字信號處理引導裝載方式研究[J].杭州電子工業學院學報,2002,22(6):65-68.
[5] 易飛,趙洪信.TMS320VC4502芯片的并口啟動轉載方案[J].計算機應用,2001,127(7):6-14.
作者簡介:董曉威(1979-),男,講師,碩士,研究方向:機械設計制造及其自動化。