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