描述HP I接口的工作原理及C8051F060和TMS320VC5409 (簡稱C5409)之間的接口電路設計,給出了HP I接口的軟件設計。該系統(tǒng)具有設計靈活、數(shù)據(jù)傳輸速度快、適用于其他含有HP I接口的DSP應用系統(tǒng),為開發(fā)人員提供了一種便捷穩(wěn)定的數(shù)據(jù)共享、傳輸方式。
1 TMS320VC5409的HPI - 8接口
C5409的HP I - 8是一個增強型8位HP I8接口,主要用來與主處理器接口。C5409 內(nèi)部有32K的RAM空間,除了DSP本身可以訪問該RAM區(qū)域外,主機也可以通過HP I口實現(xiàn)對整個RAM的訪問,從而實現(xiàn)主機與DSP的通信。HPI - 8接口通過HP I控制寄存器HP IC、地址寄存器HP IA、數(shù)據(jù)寄存器HP ID等3個HPI寄存器進行控制和實現(xiàn)數(shù)據(jù)傳輸。各寄存器功能如下:HPI - 8地址寄存器(HP IA) ,該寄存器只能由主機對其直接訪問,寄存器中存放當前尋址HP I - 8 存儲單元地址。HPI - 8邏輯控制單元(HPIC) 。主機和C5409都能對它進行直接訪問,它映射到C5409 的數(shù)據(jù)空間002CH單元。HPIC只有4位用于控制HPI的操作,由于HP IC的高8位和低8位是相同的,因此這4位分別位于高字節(jié)和低字節(jié)的低4位。B it0 /8 (BOB) ———用于字節(jié)順序控制, BOB = 1表示第1個字節(jié)為低字節(jié),否則第1個字節(jié)為高字節(jié)。B itl/9 ( SMOD) ———訪問模式控制, SMOD = l表示共享訪問模式( SAM) ,否則為主機訪問模式(HOM) 。B it2 /10 (DSP INT) ———主機通過將該位寫l來向DSP發(fā)送1次HP I中斷。B it3 /11 (H1NT) ———DSP通過向該位置l,使外部引腳H INT產(chǎn)生一個低電平作為給主機的中斷,中斷的清除必須由主機向該位寫l來清除。HP I - 8數(shù)據(jù)鎖存器(HP ID) ,只能由主機對其進行訪問,主機通過讀寫該寄存器來實現(xiàn)對共享RAM的讀寫, RAM的地址則由HP IA地址寄存器的內(nèi)容來決定。因此,主機對DSP的訪問過程是,先往HPI地址寄存器HP IA寫入欲訪問的地址,然后再對數(shù)據(jù)寄存器HP ID進行讀或?qū)懺L問。
HP I接口信號包括:
HCS———片選信號。作為HP I - 8的使能輸入端,在每次尋址期間為低電平,在兩次尋址期間也可以停留在低電平。
HAS———地址選通信號,此信號用于主機的數(shù)據(jù)線和地址線復用的情況。當不用時此信號應接高。
HB IL———字節(jié)識別信號,用于識別主機傳送過來的是第一個字節(jié)還是第二個字節(jié)。當HB IL = 0時為第一個字節(jié), HB IL = 1時為第二個字節(jié)。
HCNTL1 /HCNTL0———主機控制信號, HP I寄存器的訪問地址信號,主機用來選擇訪問的HP I寄存器。當HCNTL1 /HCNTL0為00時,表明主機訪問HP IC;當為01時,表明主機訪問用HP IA指向的HP ID,每讀一次, HP IA事后增加1,每寫一次, HP IA事先增加1;當為10時,表明主機訪問HP IA;當為11時,表明主機訪問HP ID,而HP IA不受影響。當主機訪問HP I時,先完成外部接口部分的操作,即先初始化HP IC寄存器,然后初始化HP IA寄存器,再從HP ID寄存器中讀出或?qū)懭霐?shù)據(jù),一般在DSP的初始化程序中對HPIC進行了初始化后就無須再對HP IC操作了,其余的工作就完全由主機完成。HPI的傳送控制是由HP I - 8內(nèi)部選通信號實現(xiàn)的, 由3 個信號完成: /HDS1、/HDS2、/HCS。由圖1HP I - 8 內(nèi)部選通邏輯電路圖可知,只有當/HDS1、/HDS2信號不同時為零,且/HCS信號為低電平時,內(nèi)部HP I才被選通。
圖1 HP I - 8內(nèi)部選通邏輯電路圖
2 HP I接口設計
2. 1 HPI接口電路設計
C8051F060與C5409的HP I接口電路圖如圖2所示。圖中將C8051F060的端口P1和HPI的8位數(shù)據(jù)線HD0~HD7相連作為數(shù)據(jù)傳輸通道, P20 ~P23 設置為輸出以控制HP I口的操作。其中P20 和P21 分別連接HCNTL0和HCNTL l以實現(xiàn)對HPIC、HP IA 和HP ID寄存器的訪問, P22連接字節(jié)識別信號HB IL 可控制讀寫數(shù)據(jù)是屬16位字的第一字節(jié)還是第二字節(jié),P23作為讀寫控制選通信號連接HR /W, P24 與P25分別連接/HDS1和/HDS2,同與P26相連的信號/HCS一起作為數(shù)據(jù)選通信號來鎖存有效的HCNTL0 /1、HB IL和HR /W 信號。地址鎖存信號/HAS與P27 相連,為簡化設計,可以直接將/HAS和/HDS2置為高電平, /HCS置為低電平。P33作為檢測HRDY信號的輸入端,當HP I準備好時, HRDY輸出高電平有效。P34作為輸入與HP I口的主機中斷信號/H INT相連。由HP I接口的原理可知,在HCNTL0 /1、HB IL 和HR /W信號有效之后,設置HDS1、/HCS為低電平可實現(xiàn)讀寫的數(shù)據(jù)選通,從而完成C8051F060對C5409HPI口的讀寫操作。在數(shù)據(jù)交換過程中, C8051F060向HPI發(fā)送數(shù)據(jù)可通過置C5409 的HPI控制寄存器HPIC中的DSPINT位為1 來中斷C5409。C8051F060 接收來自HPI的數(shù)據(jù)時則可用查詢方式。當C5409準備發(fā)送數(shù)據(jù)時,置/H INT信號為低。當C8051F060查詢到P34為低時,系統(tǒng)將調(diào)用接收數(shù)據(jù)子程序來實現(xiàn)數(shù)據(jù)的接收。
圖2 C8051F060與C5409的HP I接口電路圖
2. 2 HPI接口軟件設計
HP I的數(shù)據(jù)傳輸分外部傳輸和內(nèi)部傳輸。外部傳輸是指主機和HP I寄存器之間的傳輸,由主機發(fā)出指令完成。內(nèi)部傳輸是指HP I寄存器和DSP內(nèi)部RAM之間的傳輸,由DSP內(nèi)部的DMA 控制器自動完成。主機在進行外部傳輸時,要先檢查內(nèi)部傳輸是否完成,這是通過檢測HRDY信號實現(xiàn)的。外部傳輸操作的一般步驟是:檢查HRDY信號的電平。為高,表示可以進行傳輸;為低,表示DSP正在進行內(nèi)部傳輸,此時不能進行外部傳輸。主機對HP I - 8口進行數(shù)據(jù)讀寫需要三個步驟:設置控制寄存器,寫地址寄存器,讀寫數(shù)據(jù)寄存器。在寄存器讀寫過程中,主機通過端口發(fā)送控制信號,檢測狀態(tài)信號,完成對 HP I口訪問的時序模擬,雙方通過向?qū)Ψ桨l(fā)送中斷通知對方數(shù)據(jù)已經(jīng)準備好,通過檢測對方設置的狀態(tài)判斷對方是否準備好接受數(shù)據(jù)。
具體設置過程如下:
a) 首先初始化HP IC 寄存器,特別是BOB 位。具體方法為:先設置HCNTL1 =HCNTL0 = 0,選擇將要對HP IC進行操作。然后將HP IC的值寫入HP I。注意HP IC的高8位和低8位是一樣的。[!--empirenews.page--]
b) 設置地址寄存器HP IA。先設置HCNTL1 =1&HCNTL0 = 0,選擇將要對HP IA進行操作。然后將要訪問的C54x片內(nèi)RAM的地址寫入HP I,高8位先寫,低8位后寫。
c) 讀寫C54x的片內(nèi)RAM。先設置HCNTL1 /0,選擇將要對數(shù)據(jù)鎖存器HP ID 進行操作。如果設置HCNTL1 = 0&HCNTL0 = 1,表示使用地址自動增加模式;如果設置HCNTL0 = HCNTL1 = 1 時,表示不使用地址自動增加模式,這時完成讀寫操作后,地址寄存器HP IA將不會變。
以下是C8051F060的HP I接口程序:
(1) 讀HPID寄存器程序
unsigned int HP ID_Read ( )
{
unsigned char H_Byte,L_Byte;
HDS2 = 1;
HCS = 0; 使能HP I
HCNTL0 = 1;
HCNTL1 = 0; 主機可讀寫HPID
HB IL = 0; 當前是第一字節(jié)
HRW = 1; 主機要求讀選通HPI
HDS1 = 0; 開始數(shù)據(jù)操作
H_Byte = P1; 讀出高8位數(shù)據(jù)
Delay(2) ; 等待數(shù)據(jù)讀出完成
HDS1 = 1; 結(jié)束數(shù)據(jù)操作
HB IL = 1; 當前是第二字節(jié)
HRW = 1; 主機要求讀選通HPI
HDS1 = 0; 開始數(shù)據(jù)操作
L_Byte = P1; 讀出低8位數(shù)據(jù)
Delay(2) ; 等待數(shù)據(jù)讀出完成
HDS1 = 1; 結(jié)束數(shù)據(jù)操作
}
(2) 寫HPID寄存器程序
void HPID_Write ( unsigned intW_data)
{
HDS2 = 1;
HCS = 0; 使能HP I
HCNTL0 = 1;
HCNTL1 = 0; 主機可讀寫HPID
HB IL = 0; 當前是第一字節(jié)
HRW = 0; 主機要求寫選通HPI
HDS1 = 0; 開始數(shù)據(jù)操作
P1 = ( unsigned char) ( (W_data > > 8) &0xFF) ; 寫入高8位數(shù)據(jù)
Delay(2) ; 等待數(shù)據(jù)寫入完成
HDS1 = 1; 結(jié)束數(shù)據(jù)操作
HB IL = 1; 當前是第二字節(jié)
HRW = 0; 主機要求寫選通HPI
HDS1 = 0; 開始數(shù)據(jù)操作
P1 = ( unsigned char) (W_data&0xFF) ; 寫入低8位數(shù)據(jù)
Delay(2) ; 等待數(shù)據(jù)寫入完成
HDS1 = 1; 結(jié)束數(shù)據(jù)操作
}
3 結(jié)束語
本設計方案具有硬件結(jié)構簡單、使用方便等優(yōu)點,有很好的使用價值。經(jīng)在某導航系統(tǒng)中實際使用的效果來看,證明該設計方案簡單、性能穩(wěn)定、高效可靠,達到了預期的設計目的。