物理上存在HPIAR,HPIAW 兩個(gè)地址寄存器。HPIAR 是讀操作地址寄存器;HPIAW 是寫操作地址寄存器。由HPIC 的DUALHPIA 位來決定是采用雙地址寄存器模式還是單地址寄存器模式。如果采用雙地址寄存器模式,在對HPIA 操作之前,通過設(shè)置HPIC 的HPISEL 位選擇下一個(gè)要訪問的HPIA。通常為了簡化在讀寫操作轉(zhuǎn)換時(shí)對HPIC 的操作,選用單地址寄存器模式。
HPIA 的地址信息在不同系列DSP 上有所不同:
在C5000 上,數(shù)據(jù)空間,I/O 空間只能按16 位字尋址,程序空間按字節(jié)尋址。HPI 的DMA 訪問屬于I/O 空間,HPIA 的值代表16 位字地址。如主機(jī)端要訪問DSP 內(nèi)存字節(jié)地址0x100, 則要往HPIA 寫的地址值是0x80。在用HPI 啟動(dòng)時(shí),要注意DSP 代碼是按字節(jié)地址鏈接的,即代碼段的地址是字節(jié)地址,主機(jī)端要將代碼段的地址信息除以2 再送到HPIA。
在C64 上,HPIA 的值代表字節(jié)地址,但是HPI 訪問的數(shù)據(jù)是32 位的,所以HPI 會忽略HPIA 地址值的低兩位。
在C64+的DSP 上,HPIA 代表32 位字地址,HPI 會將字地址左移兩位轉(zhuǎn)換成字節(jié)地址,主機(jī)若要訪問DSP 字節(jié)地址0x100,則要賦值HPIA 為0x40。
?
HPID (HPI Data Register)
主機(jī)通過HPI 對DSP 的內(nèi)存訪問是間接訪問,主機(jī)只能訪問HPID,HPID 與DSP 內(nèi)存之間是通過HPI 專屬的DMA 進(jìn)行數(shù)據(jù)搬運(yùn)的。如圖3 所示。
HPID 的訪問分為自增模式和非自增模式。在自增模式下,訪問HPID 后,HPIA 會自動(dòng)增加指向下一個(gè)字地址,在連續(xù)訪問時(shí),自增模式因?yàn)闇p少了主機(jī)對HPIA 的操作,可以增加HPI 數(shù)據(jù)訪問的吞吐率。非自增模式下訪問HPID 后,HPIA 的值保持不變,主機(jī)需要更新HPIA 來訪問下一個(gè)地址。
在寫操作時(shí),主機(jī)把數(shù)據(jù)寫到HPID,HPI 將第二個(gè)半字的數(shù)據(jù)通過HSTROBE 的上升沿鎖存到HPID 后,將HRDY 置為忙狀態(tài),并啟動(dòng)HPI DMA 將HPID 的內(nèi)容搬到HPIA 所指向的內(nèi)存單元,然后清除HRDY 指示可以進(jìn)行下一次操作。
在讀操作時(shí),在第一個(gè)HSTROBE 的下降沿,HPI 采樣到HR/W為讀命令,則將HRDY 置為忙狀態(tài),啟動(dòng)HPIDMA 將HPIA 指向的內(nèi)存單元的數(shù)據(jù)搬到HPID,清除HRDY 忙狀態(tài),主機(jī)端方可結(jié)束總線訪問周期,鎖存數(shù)據(jù)線上的有效數(shù)據(jù)。
5. HPI操作流程
主機(jī)對HPI 的一次總線訪問周期為分三個(gè)階段:主機(jī)發(fā)起訪問,HPI 響應(yīng),主機(jī)結(jié)束訪問周期。
A.??? 主機(jī)發(fā)起訪問:即對HPI 寄存器的讀,或者寫命令。主機(jī)送出的硬件信號為HSTROBE(由HCS, HDS1/2產(chǎn)生),HR/W,HCNTL0/1,HWIL,以及HD[0:n]。HPI 在HSTROBE 的下降沿采樣控制信號HR/W,HCNTL0/1,HWIL 判斷主機(jī)的操作命令。
B.??? HPI 響應(yīng):HPI 在HSTROBE 的下降沿采樣控制信號,根據(jù)控制信號做出相應(yīng)的響應(yīng)。如果是寫(HR/W為低)命令,則在HSTROBE 的上升沿將數(shù)據(jù)線上的信號鎖存到HCNTL0/1 和HWIL 指向的寄存器。如果是讀命令(HR/W 為高),如果是讀HPIC,或者HPIA 寄存器,HPI 將寄存器的值直接送到數(shù)據(jù)總線上;如果讀HPID,HPI 先將HRDY 置為忙狀態(tài),HPI DMA 將數(shù)據(jù)從HPIA 指向的內(nèi)存單元讀到HPID,再送到數(shù)據(jù)線上,并清除HRDY 忙狀態(tài),在讀HPID 后半字時(shí),數(shù)據(jù)從寄存器直接送到數(shù)據(jù)總線上,不會出現(xiàn)HRDY 信號忙狀態(tài)。
C.??? 主機(jī)結(jié)束訪問周期:對于寫操作,主機(jī)將數(shù)據(jù)送出后,只要滿足芯片手冊中HPI 對HCS 的最小寬度要求,即可結(jié)束訪問周期。對于讀HPID 操作,要等HRDY 信號由忙變?yōu)椴幻?,主機(jī)才能結(jié)束訪問周期。兩次連續(xù)的HPI 操作的間隔,在芯片手冊的HPI 時(shí)序參數(shù)表里有要求,最小間隔為兩個(gè)HPI 功能模塊時(shí)鐘周期。
6. HPI常見故障案例分析
在HPI 應(yīng)用調(diào)試過程中,常遇到的問題分為:寫數(shù)據(jù)不成功,讀數(shù)據(jù)不正確,HRDY 常高。這些問題通常都是由于時(shí)序不正確造成的,下面結(jié)合實(shí)際應(yīng)用當(dāng)中的案例進(jìn)行分析。
1.1寫數(shù)據(jù)不成功
案例的硬件連接如下:
首先關(guān)注核心信號HSTROBE 由DSP_CS,ARM_WR(HDS1),ARM_RD(HDS2)產(chǎn)生,從下面時(shí)序圖可以看出ARM_WR 的下降沿是最后產(chǎn)生的,所以寫操作時(shí)HSTROBE 的下降沿反應(yīng)的是ARM_WR 的下降沿。