《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > HPI在MCU和DSP接口中的應(yīng)用
HPI在MCU和DSP接口中的應(yīng)用
摘要: 描述HPI接口的工作原理及C8051F060和TMS320VC5409(簡稱C5409)之間的接口電路設(shè)計,給出了HPI接口的軟件設(shè)計。該系統(tǒng)具有設(shè)計靈活、數(shù)據(jù)傳輸速度快、適用于其他含有HPI接口的DSP應(yīng)用系統(tǒng),為開發(fā)人員提供了一種便捷穩(wěn)定的數(shù)據(jù)共享、傳輸方式。
Abstract:
Key words :
 

  描述HPI接口的工作原理及C8051F060和TMS320VC5409(簡稱C5409)之間的接口電路設(shè)計,給出了HPI接口的軟件設(shè)計。該系統(tǒng)具有設(shè)計靈活、數(shù)據(jù)傳輸速度快、適用于其他含有HPI接口的DSP應(yīng)用系統(tǒng),為開發(fā)人員提供了一種便捷穩(wěn)定的數(shù)據(jù)共享、傳輸方式。

  1TMS320VC5409的HPI-8接口

  C5409的HPI-8是一個增強(qiáng)型8位HPI8接口,主要用來與主處理器接口。C5409內(nèi)部有32K的RAM空間,除了DSP本身可以訪問該RAM區(qū)域外,主機(jī)也可以通過HPI口實(shí)現(xiàn)對整個RAM的訪問,從而實(shí)現(xiàn)主機(jī)與DSP的通信。HPI-8接口通過HPI控制寄存器HPIC、地址寄存器HPIA、數(shù)據(jù)寄存器HPID等3個HPI寄存器進(jìn)行控制和實(shí)現(xiàn)數(shù)據(jù)傳輸。各寄存器功能如下:HPI-8地址寄存器(HPIA),該寄存器只能由主機(jī)對其直接訪問,寄存器中存放當(dāng)前尋址HPI-8存儲單元地址。HPI-8邏輯控制單元(HPIC)。主機(jī)和C5409都能對它進(jìn)行直接訪問,它映射到C5409的數(shù)據(jù)空間002CH單元。HPIC只有4位用于控制HPI的操作,由于HPIC的高8位和低8位是相同的,因此這4位分別位于高字節(jié)和低字節(jié)的低4位。Bit0/8(BOB)———用于字節(jié)順序控制,BOB=1表示第1個字節(jié)為低字節(jié),否則第1個字節(jié)為高字節(jié)。Bitl/9(SMOD)———訪問模式控制,SMOD=l表示共享訪問模式(SAM),否則為主機(jī)訪問模式(HOM)。Bit2/10(DSPINT)———主機(jī)通過將該位寫l來向DSP發(fā)送1次HPI中斷。Bit3/11(H1NT)———DSP通過向該位置l,使外部引腳HINT產(chǎn)生一個低電平作為給主機(jī)的中斷,中斷的清除必須由主機(jī)向該位寫l來清除。HPI-8數(shù)據(jù)鎖存器(HPID),只能由主機(jī)對其進(jìn)行訪問,主機(jī)通過讀寫該寄存器來實(shí)現(xiàn)對共享RAM的讀寫,RAM的地址則由HPIA地址寄存器的內(nèi)容來決定。因此,主機(jī)對DSP的訪問過程是,先往HPI地址寄存器HPIA寫入欲訪問的地址,然后再對數(shù)據(jù)寄存器HPID進(jìn)行讀或?qū)懺L問。

  HPI接口信號包括:

  HCS———片選信號。作為HPI-8的使能輸入端,在每次尋址期間為低電平,在兩次尋址期間也可以停留在低電平。

  HAS———地址選通信號,此信號用于主機(jī)的數(shù)據(jù)線和地址線復(fù)用的情況。當(dāng)不用時此信號應(yīng)接高。

  HBIL———字節(jié)識別信號,用于識別主機(jī)傳送過來的是第一個字節(jié)還是第二個字節(jié)。當(dāng)HBIL=0時為第一個字節(jié),HBIL=1時為第二個字節(jié)。

  HCNTL1/HCNTL0———主機(jī)控制信號,HPI寄存器的訪問地址信號,主機(jī)用來選擇訪問的HPI寄存器。當(dāng)HCNTL1/HCNTL0為00時,表明主機(jī)訪問HPIC;當(dāng)為01時,表明主機(jī)訪問用HPIA指向的HPID,每讀一次,HPIA事后增加1,每寫一次,HPIA事先增加1;當(dāng)為10時,表明主機(jī)訪問HPIA;當(dāng)為11時,表明主機(jī)訪問HPID,而HPIA不受影響。當(dāng)主機(jī)訪問HPI時,先完成外部接口部分的操作,即先初始化HPIC寄存器,然后初始化HPIA寄存器,再從HPID寄存器中讀出或?qū)懭霐?shù)據(jù),一般在DSP的初始化程序中對HPIC進(jìn)行了初始化后就無須再對HPIC操作了,其余的工作就完全由主機(jī)完成。HPI的傳送控制是由HPI-8內(nèi)部選通信號實(shí)現(xiàn)的,由3個信號完成:/HDS1、/HDS2、/HCS。由圖1HPI-8內(nèi)部選通邏輯電路圖可知,只有當(dāng)/HDS1、/HDS2信號不同時為零,且/HCS信號為低電平時,內(nèi)部HPI才被選通。

 HP I - 8內(nèi)部選通邏輯電路圖

圖1HPI-8內(nèi)部選通邏輯電路圖

  2HPI接口設(shè)計

  2.1HPI接口電路設(shè)計

  C8051F060與C5409的HPI接口電路圖如圖2所示。圖中將C8051F060的端口P1和HPI的8位數(shù)據(jù)線HD0~HD7相連作為數(shù)據(jù)傳輸通道,P20~P23設(shè)置為輸出以控制HPI口的操作。其中P20和P21分別連接HCNTL0和HCNTLl以實(shí)現(xiàn)對HPIC、HPIA和HPID寄存器的訪問,P22連接字節(jié)識別信號HBIL可控制讀寫數(shù)據(jù)是屬16位字的第一字節(jié)還是第二字節(jié),P23作為讀寫控制選通信號連接HR/W,P24與P25分別連接/HDS1和/HDS2,同與P26相連的信號/HCS一起作為數(shù)據(jù)選通信號來鎖存有效的HCNTL0/1、HBIL和HR/W信號。地址鎖存信號/HAS與P27相連,為簡化設(shè)計,可以直接將/HAS和/HDS2置為高電平,/HCS置為低電平。P33作為檢測HRDY信號的輸入端,當(dāng)HPI準(zhǔn)備好時,HRDY輸出高電平有效。P34作為輸入與HPI口的主機(jī)中斷信號/HINT相連。由HPI接口的原理可知,在HCNTL0/1、HBIL和HR/W信號有效之后,設(shè)置HDS1、/HCS為低電平可實(shí)現(xiàn)讀寫的數(shù)據(jù)選通,從而完成C8051F060對C5409HPI口的讀寫操作。在數(shù)據(jù)交換過程中,C8051F060向HPI發(fā)送數(shù)據(jù)可通過置C5409的HPI控制寄存器HPIC中的DSPINT位為1來中斷C5409。C8051F060接收來自HPI的數(shù)據(jù)時則可用查詢方式。當(dāng)C5409準(zhǔn)備發(fā)送數(shù)據(jù)時,置/HINT信號為低。當(dāng)C8051F060查詢到P34為低時,系統(tǒng)將調(diào)用接收數(shù)據(jù)子程序來實(shí)現(xiàn)數(shù)據(jù)的接收。

 C8051F060與C5409的HP I接口電路圖

圖2C8051F060與C5409的HPI接口電路圖

  2.2HPI接口軟件設(shè)計

  HPI的數(shù)據(jù)傳輸分外部傳輸和內(nèi)部傳輸。外部傳輸是指主機(jī)和HPI寄存器之間的傳輸,由主機(jī)發(fā)出指令完成。內(nèi)部傳輸是指HPI寄存器和DSP內(nèi)部RAM之間的傳輸,由DSP內(nèi)部的DMA控制器自動完成。主機(jī)在進(jìn)行外部傳輸時,要先檢查內(nèi)部傳輸是否完成,這是通過檢測HRDY信號實(shí)現(xiàn)的。外部傳輸操作的一般步驟是:檢查HRDY信號的電平。為高,表示可以進(jìn)行傳輸;為低,表示DSP正在進(jìn)行內(nèi)部傳輸,此時不能進(jìn)行外部傳輸。主機(jī)對HPI-8口進(jìn)行數(shù)據(jù)讀寫需要三個步驟:設(shè)置控制寄存器,寫地址寄存器,讀寫數(shù)據(jù)寄存器。在寄存器讀寫過程中,主機(jī)通過端口發(fā)送控制信號,檢測狀態(tài)信號,完成對HPI口訪問的時序模擬,雙方通過向?qū)Ψ桨l(fā)送中斷通知對方數(shù)據(jù)已經(jīng)準(zhǔn)備好,通過檢測對方設(shè)置的狀態(tài)判斷對方是否準(zhǔn)備好接受數(shù)據(jù)。

  具體設(shè)置過程如下:

  a)首先初始化HPIC寄存器,特別是BOB位。具體方法為:先設(shè)置HCNTL1=HCNTL0=0,選擇將要對HPIC進(jìn)行操作。然后將HPIC的值寫入HPI。注意HPIC的高8位和低8位是一樣的。

  b)設(shè)置地址寄存器HPIA。先設(shè)置HCNTL1=1&HCNTL0=0,選擇將要對HPIA進(jìn)行操作。然后將要訪問的C54x片內(nèi)RAM的地址寫入HPI,高8位先寫,低8位后寫。

  c)讀寫C54x的片內(nèi)RAM。先設(shè)置HCNTL1/0,選擇將要對數(shù)據(jù)鎖存器HPID進(jìn)行操作。如果設(shè)置HCNTL1=0&HCNTL0=1,表示使用地址自動增加模式;如果設(shè)置HCNTL0=HCNTL1=1時,表示不使用地址自動增加模式,這時完成讀寫操作后,地址寄存器HPIA將不會變。

  以下是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ī)可讀寫HPID

  HB IL = 0; 當(dāng)前是第一字節(jié)

  HRW = 1; 主機(jī)要求讀選通HPI

  HDS1 = 0; 開始數(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; 開始數(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; 主機(jī)可讀寫HPID

  HB IL = 0; 當(dāng)前是第一字節(jié)

  HRW = 0; 主機(jī)要求寫選通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; 當(dāng)前是第二字節(jié)

  HRW = 0; 主機(jī)要求寫選通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é)束語

  本設(shè)計方案具有硬件結(jié)構(gòu)簡單、使用方便等優(yōu)點(diǎn),有很好的使用價值。經(jīng)在某導(dǎo)航系統(tǒng)中實(shí)際使用的效果來看,證明該設(shè)計方案簡單、性能穩(wěn)定、高效可靠,達(dá)到了預(yù)期的設(shè)計目的。



 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。