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