視頻監(jiān)控系統(tǒng)中ARM與DSP的HPI接口設(shè)計
3 接口設(shè)計
本文引用地址:http://m.ptau.cn/article/83864.htm3.1 HPI接口讀/寫時序
讀/寫時序是實現(xiàn)計算機操作的重要一點,如果操作時序不相符,就會導致讀/寫數(shù)據(jù)出錯,甚至是操作失敗。所以,滿足操作時序是實現(xiàn)計算機操作的先決條件之一。DM642的HPI接口操作時間為1.3ns~12ns或大約5個CPU時鐘脈沖。S3C44B0X的最高時鐘頻率可達66MHz(約為15.2ns),由此可知DM642的HPI與S3C44B0X在讀/寫時序上的滿足要求,接口通信可以實現(xiàn)。DM642的HPI32讀/寫時序如圖1,設(shè)計接口時,必須遵守該時序。由時序圖可知,控制HPI的讀/寫時序,通過控制HCNTL、HR/W_ 、HSTROBE_、HCS_以及HRDY_這幾個信號端口就能實現(xiàn)。
圖1 HPI32的讀/寫時序圖
3.2硬件設(shè)計
在本設(shè)計方案中,S3C44B0X和DM642都是32位的處理器,且DM642有HPI32模式。為了充分利用資源,發(fā)揮其優(yōu)勢,采用32位模式設(shè)計接口。硬件電路如圖2所示。
圖2 硬件接口方塊電路圖
各引腳連接說明如下:
?、貶D[31:0]與CPU的數(shù)據(jù)線D[31:0]相連。在HPI接口的復用模式,32條數(shù)據(jù)線HD[31:0]除了傳輸數(shù)據(jù)外,還需傳輸?shù)刂沸盘枴?/p>
?、谄x信號HCS_接nGCS4。HPI接口映射到保留的系統(tǒng)存儲器BANK4,主機通過操作BANK4就能控制HPI。
?、垡騍3C44B0X沒有HR/W_信號,所以用A1代替,與之相連。A2、A3接HCNTL0/1,用作接口功能選擇。nOE和nWBE分別接HDS1_和HDS2_作為HPI的讀/寫控制信號輸入。
?、躰EWAIT接HRDY_。由于DM642的HRDY_與nEWAIT的有效邏輯電平相反,所以要通過一個非門連接。EINT1接HINT_,用來DSP向主機發(fā)中斷請求。
?、軭PI32方式下,HHWL和地址選通信號HAS_無需使用,固定接上拉電阻(高電平)。
3.3 軟件設(shè)計
主機通過HPI接口訪問DSP內(nèi)部RAM,通過控制寄存器HPIC、地址寄存器HPIA、數(shù)據(jù)寄存器HPID實現(xiàn)RAM的讀/寫。ARM主機與DSP從機的通信就是對這幾個寄存器的操作。在編寫接口驅(qū)動時,HPI接口是被看作接到主機RAM的外設(shè),由硬件設(shè)計可知,它被映射到BANK4的存儲空間(對應的存儲器地址是0X08000000~0X0A000000)。
結(jié)合時序分析和硬件的設(shè)計,可以編寫接口驅(qū)動。驅(qū)動主要包括兩部分:首先是HPI寄存器初始化,然后是HPI接口的讀/寫代碼。以下是HPI接口驅(qū)動的部分代碼。
/* 地址及數(shù)據(jù)初始化 */
#define BASE_ADDR 0X08000000 // 定義基地址
/* HPIC、HPIA、HPID讀寫地址的偏移量 */
#define HPIC_WR 0X00
#define HPID_A_WR 0X04
#define HPIA_WR 0X0C
#define HPIC_R 0X10
#define HPID_A_R 0X14
#define HPIA_R 0X1C
/* HPI讀、寫代碼 */
unsigned long hpi_read_data (unsigned long addr)
{ unsigned long data;
data=read_data(BASE_ADDR+HPID_R); // 讀取數(shù)據(jù)
評論