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