基于HPI接口的高速數據傳輸設計
發布時間:2008/8/12 0:00:00 訪問次數:621
引言
dsp芯片能夠大大提高數字信號處理的效率,但在主機與dsp構成的系統中,當dsp與主機間需要大數據量傳輸時,數據傳輸速率就會成為程序運行速度的瓶頸。所以在程序調試過程中,實現主機與dsp之間的快速數據傳輸,不僅可以提高程序運行效率,還可以大大節省調試程序的時間。
tms320c6000系列的hpi(host port interface)接口不僅可以方便主機對dsp的控制,還可以實現主機與dsp內存的快速數據傳輸。這里用雙tms320c6416(600mhz)來進行實驗,通過hpi接口實現了主dsp(下文中都稱為"主機")和從dsp的快速數據傳輸,并通過實驗測試了hpi接口的數據傳輸速率。
系統介紹
hpi概述
hpi(host-port interface)主機接口,是ti高性能dsp上配置的與主機進行通信的片內外設。通過hpi接口,主機可以非常方便地訪問dsp的所有地址空間,從而實現對dsp的控制。
tms320c6416的hpi接口是一個16bit/32bit寬的并行端口。主機(host)對cpu地址空間的訪問是通過edma控制器實現的。hpi接口的訪問主要通過三個專用寄存器來實現,它們分別是hpi控制寄存器(hpic)、hpi地址寄存器(hpia)和hpi數據寄存器(hpid)。
hpi接口信號簡介
(1) hd[31∶0](數據總線)
(2) hcntl[1∶0](控制hpi訪問類型)
如前所述,對hpi的訪問需要通過三個寄存器,即hpi地址寄存器(hpia),hpi數據寄存器(hpid)和hpi控制寄存器(hpic)來實現。hcntl[1∶0]就是用于選擇這三個寄存器的專用引腳。
(3) hhwil (半字指示選擇)
hhwil指示當前的為第一個或是第二個半字傳輸,但需要注意的是,它并不代表是最高有效的(most significant)還是最低有效的(least significant),而決定的依據是hpic中的hwob位的狀態。在hpi32模式下,不使用此信號。
(4) hr/w (讀/寫操作指示)
(5) hrdy (輸出準備好)
(6) hcs,hds1,hds2(選通信號)
當hcs有效,并且hds1和hds2中僅有一個有效時,內部觸發信號hstrobe有效。這三個信號的組合邏輯其實就是片選和讀/寫信號構成的組合邏輯,因此,可直接與主機的片選和讀/寫信號相連。
(7) has (地址輸入選通)
(8) hint(向主機輸出的中斷)
hpi接口寄存器簡介
如上所述,主機通過hpi接口對dsp的訪問實際上是通過三個寄存器來實現的,下面就針對這三個專用寄存器進行介紹。
(1) hpi控制寄存器(hpic)
hpic中每一位都有特定的功能,在對hpi進行訪問的過程中需要特別注意。簡要介紹一下這些功能位的作用。
①hwob(半字順序位)
如果hwob=1,第一個半字為最低有效;如果hwob=0,第一個半字為最高有效。hwob對地址和數據都起作用,如果采用hpi16模式,在訪問數據或者地址寄存器之前,應該首先初始化hwob位。
②dspint(主機產生的processor-to-cpu中斷,用于hpi啟動方式中將dsp內核從復位狀態中喚醒)
③hint(dsp-to-host中斷,即通過向此位寫入特定值來產生對主機的中斷)
(2) hpi地址寄存器(hpia)
存放32bit數據,指向將要訪問的dsp地址空間中的地址。
(3) hpi數據寄存器(hpid)
在寫操作中存放將要寫入hpia所指向地址的數據,在讀操作中為hpia所指向地址中的數據。
系統設計
硬件設計
外設選擇
在c6416中,一些外設共用某些引腳。其中hpi,gp[15:9],pci, eeprom以及mcbsp2共用一組引腳,dsp在復位時通過鎖存pci_en及mcbsp2_en引腳的值來選擇使用何種外設。如表1,在本設計中,將這兩個選擇引腳都拉低。
數據總線
c6416 hpi數據總線具有32個外部引腳hd[31:0]。因此,c6416 hpi支持16位或32位的數據總線。當用16位寬的主機接口時,c6416 hpi稱為hpi16;當用32位寬的主機接口時,c6416 hpi稱為hpi32。c6416 hpi通過復位時的自舉和器件配置引腳(hd5)選擇采用hpi16還是hpi32。
hpi16具有16位數據總線,hpi16將兩個連續的16位傳輸組成一個32位數據傳送到cpu。為了和其他c6000器件兼容,無論復位時選擇何種endian模式,hpi16都使用hd[15:0]作為數據引腳。hpi32具有32位的數據總線,使用該增加的總線寬度,所有傳輸均為一個32位的字傳輸,而不是兩個連續的16位半字。在本設計中采用hpi32總線模式。
主機emif配置
對主機,emifa (64位總線)和emifb (16位總線)都可以與hpi相連。在hpi16模式下,可以采用emifb,在hpi32模式下,可以采用emifa。在本設計中,影射emifa ce1存儲器空間為主機接口,對ce1空間控制寄存器的設置。
硬件連接
從c6416 hpi寄存器的編址方式可以看出,主機需兩根地址線尋址到hpi接口的控制寄存器、地址寄存器和數據寄存器,因此選擇主機的地址線a3、a2連接c6416 hpi的hcntl1、hcntl0。hpi的選通由hcs、hds1、hds2三根信號線共同作用,最后的hpi使能信號
引言
dsp芯片能夠大大提高數字信號處理的效率,但在主機與dsp構成的系統中,當dsp與主機間需要大數據量傳輸時,數據傳輸速率就會成為程序運行速度的瓶頸。所以在程序調試過程中,實現主機與dsp之間的快速數據傳輸,不僅可以提高程序運行效率,還可以大大節省調試程序的時間。
tms320c6000系列的hpi(host port interface)接口不僅可以方便主機對dsp的控制,還可以實現主機與dsp內存的快速數據傳輸。這里用雙tms320c6416(600mhz)來進行實驗,通過hpi接口實現了主dsp(下文中都稱為"主機")和從dsp的快速數據傳輸,并通過實驗測試了hpi接口的數據傳輸速率。
系統介紹
hpi概述
hpi(host-port interface)主機接口,是ti高性能dsp上配置的與主機進行通信的片內外設。通過hpi接口,主機可以非常方便地訪問dsp的所有地址空間,從而實現對dsp的控制。
tms320c6416的hpi接口是一個16bit/32bit寬的并行端口。主機(host)對cpu地址空間的訪問是通過edma控制器實現的。hpi接口的訪問主要通過三個專用寄存器來實現,它們分別是hpi控制寄存器(hpic)、hpi地址寄存器(hpia)和hpi數據寄存器(hpid)。
hpi接口信號簡介
(1) hd[31∶0](數據總線)
(2) hcntl[1∶0](控制hpi訪問類型)
如前所述,對hpi的訪問需要通過三個寄存器,即hpi地址寄存器(hpia),hpi數據寄存器(hpid)和hpi控制寄存器(hpic)來實現。hcntl[1∶0]就是用于選擇這三個寄存器的專用引腳。
(3) hhwil (半字指示選擇)
hhwil指示當前的為第一個或是第二個半字傳輸,但需要注意的是,它并不代表是最高有效的(most significant)還是最低有效的(least significant),而決定的依據是hpic中的hwob位的狀態。在hpi32模式下,不使用此信號。
(4) hr/w (讀/寫操作指示)
(5) hrdy (輸出準備好)
(6) hcs,hds1,hds2(選通信號)
當hcs有效,并且hds1和hds2中僅有一個有效時,內部觸發信號hstrobe有效。這三個信號的組合邏輯其實就是片選和讀/寫信號構成的組合邏輯,因此,可直接與主機的片選和讀/寫信號相連。
(7) has (地址輸入選通)
(8) hint(向主機輸出的中斷)
hpi接口寄存器簡介
如上所述,主機通過hpi接口對dsp的訪問實際上是通過三個寄存器來實現的,下面就針對這三個專用寄存器進行介紹。
(1) hpi控制寄存器(hpic)
hpic中每一位都有特定的功能,在對hpi進行訪問的過程中需要特別注意。簡要介紹一下這些功能位的作用。
①hwob(半字順序位)
如果hwob=1,第一個半字為最低有效;如果hwob=0,第一個半字為最高有效。hwob對地址和數據都起作用,如果采用hpi16模式,在訪問數據或者地址寄存器之前,應該首先初始化hwob位。
②dspint(主機產生的processor-to-cpu中斷,用于hpi啟動方式中將dsp內核從復位狀態中喚醒)
③hint(dsp-to-host中斷,即通過向此位寫入特定值來產生對主機的中斷)
(2) hpi地址寄存器(hpia)
存放32bit數據,指向將要訪問的dsp地址空間中的地址。
(3) hpi數據寄存器(hpid)
在寫操作中存放將要寫入hpia所指向地址的數據,在讀操作中為hpia所指向地址中的數據。
系統設計
硬件設計
外設選擇
在c6416中,一些外設共用某些引腳。其中hpi,gp[15:9],pci, eeprom以及mcbsp2共用一組引腳,dsp在復位時通過鎖存pci_en及mcbsp2_en引腳的值來選擇使用何種外設。如表1,在本設計中,將這兩個選擇引腳都拉低。
數據總線
c6416 hpi數據總線具有32個外部引腳hd[31:0]。因此,c6416 hpi支持16位或32位的數據總線。當用16位寬的主機接口時,c6416 hpi稱為hpi16;當用32位寬的主機接口時,c6416 hpi稱為hpi32。c6416 hpi通過復位時的自舉和器件配置引腳(hd5)選擇采用hpi16還是hpi32。
hpi16具有16位數據總線,hpi16將兩個連續的16位傳輸組成一個32位數據傳送到cpu。為了和其他c6000器件兼容,無論復位時選擇何種endian模式,hpi16都使用hd[15:0]作為數據引腳。hpi32具有32位的數據總線,使用該增加的總線寬度,所有傳輸均為一個32位的字傳輸,而不是兩個連續的16位半字。在本設計中采用hpi32總線模式。
主機emif配置
對主機,emifa (64位總線)和emifb (16位總線)都可以與hpi相連。在hpi16模式下,可以采用emifb,在hpi32模式下,可以采用emifa。在本設計中,影射emifa ce1存儲器空間為主機接口,對ce1空間控制寄存器的設置。
硬件連接
從c6416 hpi寄存器的編址方式可以看出,主機需兩根地址線尋址到hpi接口的控制寄存器、地址寄存器和數據寄存器,因此選擇主機的地址線a3、a2連接c6416 hpi的hcntl1、hcntl0。hpi的選通由hcs、hds1、hds2三根信號線共同作用,最后的hpi使能信號