如何設(shè)計(jì)基于HPI接口的高速數(shù)據(jù)傳輸?
引言
DSP芯片能夠大大提高數(shù)字信號處理的效率,但在主機(jī)與DSP構(gòu)成的系統(tǒng)中,當(dāng)DSP與主機(jī)間需要大數(shù)據(jù)量傳輸時,數(shù)據(jù)傳輸速率就會成為程序運(yùn)行速度的瓶頸。所以在程序調(diào)試過程中,實(shí)現(xiàn)主機(jī)與DSP之間的快速數(shù)據(jù)傳輸,不僅可以提高程序運(yùn)行效率,還可以大大節(jié)省調(diào)試程序的時間。
TMS320C6000系列的HPI(HoST Port Interface)接口不僅可以方便主機(jī)對DSP的控制,還可以實(shí)現(xiàn)主機(jī)與DSP內(nèi)存的快速數(shù)據(jù)傳輸。這里用雙TMS320C6416(600MHz)來進(jìn)行實(shí)驗(yàn),通過HPI接口實(shí)現(xiàn)了主DSP(下文中都稱為"主機(jī)")和從DSP的快速數(shù)據(jù)傳輸,并通過實(shí)驗(yàn)測試了HPI接口的數(shù)據(jù)傳輸速率。
系統(tǒng)介紹
HPI概述
HPI(Host-Port Interface)主機(jī)接口,是TI高性能DSP上配置的與主機(jī)進(jìn)行通信的片內(nèi)外設(shè)。通過HPI接口,主機(jī)可以非常方便地訪問DSP的所有地址空間,從而實(shí)現(xiàn)對DSP的控制。
TMS320C6416的HPI接口是一個16bit/32bit寬的并行端口。主機(jī)(host)對CPU地址空間的訪問是通過EDMA控制器實(shí)現(xiàn)的。HPI接口的訪問主要通過三個專用寄存器來實(shí)現(xiàn),它們分別是HPI控制寄存器(HPIC)、HPI地址寄存器(HPIA)和HPI數(shù)據(jù)寄存器(HPID)。
HPI接口信號簡介
(1) HD[31∶0](數(shù)據(jù)總線)
(2) HCNTL[1∶0](控制HPI訪問類型)
如前所述,對HPI的訪問需要通過三個寄存器,即HPI地址寄存器(HPIA),HPI數(shù)據(jù)寄存器(HPID)和HPI控制寄存器(HPIC)來實(shí)現(xiàn)。HCNTL[1∶0]就是用于選擇這三個寄存器的專用引腳。
(3) HHWIL (半字指示選擇)
HHWIL指示當(dāng)前的為第一個或是第二個半字傳輸,但需要注意的是,它并不代表是最高有效的(most significant)還是最低有效的(least significant),而決定的依據(jù)是HPIC中的HWOB位的狀態(tài)。在HPI32模式下,不使用此信號。
(4) HR/W (讀/寫操作指示)
(5) HRDY (輸出準(zhǔn)備好)
(6) HCS,HDS1,HDS2(選通信號)
當(dāng)HCS有效,并且HDS1和HDS2中僅有一個有效時,內(nèi)部觸發(fā)信號HSTROBE有效。這三個信號的組合邏輯其實(shí)就是片選和讀/寫信號構(gòu)成的組合邏輯,因此,可直接與主機(jī)的片選和讀/寫信號相連。
(7) HAS (地址輸入選通)
(8) HINT(向主機(jī)輸出的中斷)
HPI接口寄存器簡介
如上所述,主機(jī)通過HPI接口對DSP的訪問實(shí)際上是通過三個寄存器來實(shí)現(xiàn)的,下面就針對這三個專用寄存器進(jìn)行介紹。
(1) HPI控制寄存器(HPIC)
HPIC中每一位都有特定的功能,在對HPI進(jìn)行訪問的過程中需要特別注意。簡要介紹一下這些功能位的作用。
①HWOB(半字順序位)
如果HWOB=1,第一個半字為最低有效;如果HWOB=0,第一個半字為最高有效。HWOB對地址和數(shù)據(jù)都起作用,如果采用HPI16模式,在訪問數(shù)據(jù)或者地址寄存器之前,應(yīng)該首先初始化HWOB位。
②DSPINT(主機(jī)產(chǎn)生的Processor-to-CPU中斷,用于HPI啟動方式中將DSP內(nèi)核從復(fù)位狀態(tài)中喚醒)
③HINT(DSP-to-Host中斷,即通過向此位寫入特定值來產(chǎn)生對主機(jī)的中斷)
(2) HPI地址寄存器(HPIA)
存放32bit數(shù)據(jù),指向?qū)⒁L問的DSP地址空間中的地址。
(3) HPI數(shù)據(jù)寄存器(HPID)
在寫操作中存放將要寫入HPIA所指向地址的數(shù)據(jù),在讀操作中為HPIA所指向地址中的數(shù)據(jù)。
系統(tǒng)設(shè)計(jì)
硬件設(shè)計(jì)
外設(shè)選擇
在C6416中,一些外設(shè)共用某些引腳。其中HPI,GP[15:9],PCI, EEPROM以及McBSP2共用一組引腳,DSP在復(fù)位時通過鎖存PCI_EN及McBSP2_EN引腳的值來選擇使用何種外設(shè)。如表1,在本設(shè)計(jì)中,將這兩個選擇引腳都拉低。
數(shù)據(jù)總線
C6416 HPI數(shù)據(jù)總線具有32個外部引腳HD[31:0]。因此,C6416 HPI支持16位或32位的數(shù)據(jù)總線。當(dāng)用16位寬的主機(jī)接口時,C6416 HPI稱為HPI16;當(dāng)用32位寬的主機(jī)接口時,C6416 HPI稱為HPI32。C6416 HPI通過復(fù)位時的自舉和器件配置引腳(HD5)選擇采用HPI16還是HPI32。
HPI16具有16位數(shù)據(jù)總線,HPI16將兩個連續(xù)的16位傳輸組成一個32位數(shù)據(jù)傳送到CPU。為了和其他C6000器件兼容,無論復(fù)位時選擇何種Endian模式,HPI16都使用HD[15:0]作為數(shù)據(jù)引腳。HPI32具有32位的數(shù)據(jù)總線,使用該增加的總線寬度,所有傳輸均為一個32位的字傳輸,而不是兩個連續(xù)的16位半字。在本設(shè)計(jì)中采用HPI32總線模式。
主機(jī)EMIF配置
對主機(jī),EMIFA (64位總線)和EMIFB (16位總線)都可以與HPI相連。在HPI16模式下,可以采用EMIFB,在HPI32模式下,可以采用EMIFA。在本設(shè)計(jì)中,影射EMIFA CE1存儲器空間為主機(jī)接口,對CE1空間控制寄存器的設(shè)置。
硬件連接
從C6416 HPI寄存器的編址方式可以看出,主機(jī)需兩根地址線尋址到HPI接口的控制寄存器、地址寄存器和數(shù)據(jù)寄存器,因此選擇主機(jī)的地址線A3、A2連接C6416 HPI的HCNTL1、HCNTL0。HPI的選通由HCS、HDS1、HDS2三根信號線共同作用,最后的HPI使能信號(STROBE)為HDS1異或HDS2后,再與HCS進(jìn)行與非運(yùn)算的結(jié)果。若將HPI接口安排在主機(jī)的ACE1區(qū)域(即地址范圍0X90000000-0X9FFFFFFF),則直接將主機(jī)的片選信號ACE1接到HCS,而將讀寫信號RE、WE分別接到HDS1、HDS2。對于HR/W信號,可以連接到地址線A4,當(dāng)A4=1時,代表讀操作,反之為寫操作。
若使用HPI16,可以使用主機(jī)的地址線A1接HHWIL來完成高低字節(jié)的識別:當(dāng)A1=0時,表示為第一字節(jié);A1=1時表示第二字節(jié)。
由于主機(jī)的ARDY信號和C6416 HPI接口的HRDY信號邏輯剛好相反,因此要將HRDY信號經(jīng)過反相后再接ARDY信號。C6416 HPI的HINT信號可以直接連接到主機(jī)的EXT_INT7引腳上實(shí)現(xiàn)HPI對主機(jī)的中斷信號連接。HPI接口信號線中的HAS線直接拉高。
軟件設(shè)計(jì)
主機(jī)必須按照順序進(jìn)行HPI訪問:
(1)初始化HPI控制(HPIC)寄存器;
(2)初始化HPI控制(HPIA)寄存器;
(3)寫數(shù)據(jù)到HPI數(shù)據(jù)(HPID)寄存器或從HPID寄存器讀取數(shù)據(jù)。
一旦HPI被初始化,主機(jī)就可以固定地址模式或自動增加模式對DSP地址進(jìn)行讀寫訪問,下面以HPI接口地址增加模式寫操作為例來介紹。
實(shí)驗(yàn)結(jié)果
HPI的數(shù)據(jù)傳輸速率可以通過在單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量來表示,其計(jì)算公式如下
cpuclk: CPU時鐘周期
latency: 從主機(jī)開始傳輸?shù)侥繕?biāo)準(zhǔn)備轉(zhuǎn)移第一個數(shù)據(jù)所需周期數(shù)
xfer:傳輸n個字所需周期數(shù)
結(jié)束語
本文介紹了主機(jī)接口HPI的特點(diǎn),通過實(shí)驗(yàn)得出HPI的數(shù)據(jù)傳輸速率。該方案靈活簡單,適用于含有HPI接口的DSP應(yīng)用系統(tǒng),從而為開發(fā)人員提供了一種全新的數(shù)據(jù)共享傳輸方案。其特點(diǎn)是通用、高速且不需輔助硬件,具有很好的實(shí)際應(yīng)用前景。