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