HPI接口在TI DSP中的應用及常見(jiàn)問(wèn)題分析
3. HPI寄存器地址映射
HPI口提供給主機端訪(fǎng)問(wèn)的寄存器只有4個(gè),通過(guò)HCNTL[1:0]選擇。
表1:HPI寄存器訪(fǎng)問(wèn)選擇
由于在復用模式下數據線(xiàn)通常只有寄存器寬度的一半,所以一個(gè)完整的數據訪(fǎng)問(wèn)由高低半字兩次訪(fǎng)問(wèn)組成,由HWIL信號控制,HWIL信號必須是先低后高。通常將HWIL和HCNTL[1:0]接在主機的地址線(xiàn)上,將4個(gè)寄存器映射為主機端的8個(gè)內存單元,下表中的地址線(xiàn)連接方法將8半字寄存器映射到主機的8個(gè)連續的內存單元。這里的地址線(xiàn)是用來(lái)選擇HPI的寄存器,與非復用模式下的地址線(xiàn)直接訪(fǎng)問(wèn)DSP的內存空間是完全不同的作用。
表2:HPI寄存器地址映射
4. HPI寄存器功能說(shuō)明
HPIC (HPI Control Register)
HPI控制寄存器HPIC的位圖如表3所示,C6000系列DSP的HPI寄存器是32位的,也只有低16位有效,與C5000系列DSP的HPIC寄存器定義的功能保持一致。不同版本的HPI接口的HPIC位定義的主要不同之處在于軟件握手HRDY位的有無(wú),其它位名稱(chēng)可能存在細小差異,但功能定義都是一樣的。
表3:HPI Control Register
主機在對HPI進(jìn)行訪(fǎng)問(wèn)前可以通過(guò)HPIC配置字節序(HWOB)和地址寄存器模式(DUALHPIA)。默認的配置為HWOB=0,即先訪(fǎng)問(wèn)高半;DUALHPIA=0,即單地址寄存器模式,讀和寫(xiě)操作使用同一個(gè)HPIA;通常都采用默認的HPIC 寄存器配置。
HWOB與硬件信號HWIL是沒(méi)有聯(lián)系的,HWIL信號必須保證先低后高分別訪(fǎng)問(wèn)兩個(gè)半字單元。至于先訪(fǎng)問(wèn)一個(gè)字當中的高或低半字,是由HWOB控制的。
HPIA (HPI Address Register)
物理上存在HPIAR,HPIAW兩個(gè)地址寄存器。HPIAR是讀操作地址寄存器;HPIAW是寫(xiě)操作地址寄存器。由HPIC的DUALHPIA位來(lái)決定是采用雙地址寄存器模式還是單地址寄存器模式。如果采用雙地址寄存器模式,在對HPIA操作之前,通過(guò)設置HPIC的HPISEL位選擇下一個(gè)要訪(fǎng)問(wèn)的HPIA.通常為了簡(jiǎn)化在讀寫(xiě)操作轉換時(shí)對HPIC的操作,選用單地址寄存器模式。
HPIA的地址信息在不同系列DSP上有所不同:
在C5000上,數據空間,I/O空間只能按16位字尋址,程序空間按字節尋址。HPI的DMA訪(fǎng)問(wèn)屬于I/O空間,HPIA的值代表16位字地址。如主機端要訪(fǎng)問(wèn)DSP內存字節地址0x100, 則要往HPIA寫(xiě)的地址值是0x80.在用HPI啟動(dòng)時(shí),要注意DSP代碼是按字節地址鏈接的,即代碼段的地址是字節地址,主機端要將代碼段的地址信息除以2再送到HPIA.
在C64上,HPIA的值代表字節地址,但是HPI訪(fǎng)問(wèn)的數據是32位的,所以HPI會(huì )忽略HPIA地址值的低兩位。
在C64+的DSP上,HPIA代表32位字地址,HPI會(huì )將字地址左移兩位轉換成字節地址,主機若要訪(fǎng)問(wèn)DSP字節地址0x100,則要賦值HPIA 為0x40.
HPID (HPI Data Register)
主機通過(guò)HPI對DSP的內存訪(fǎng)問(wèn)是間接訪(fǎng)問(wèn),主機只能訪(fǎng)問(wèn)HPID,HPID與DSP內存之間是通過(guò)HPI專(zhuān)屬的DMA進(jìn)行數據搬運的。如圖3所示。
圖3:HPI讀寫(xiě)數據流
HPID的訪(fǎng)問(wèn)分為自增模式和非自增模式。在自增模式下,訪(fǎng)問(wèn)HPID后,HPIA會(huì )自動(dòng)增加指向下一個(gè)字地址,在連續訪(fǎng)問(wèn)時(shí),自增模式因為減少了主機對HPIA的操作,可以增加HPI 數據訪(fǎng)問(wèn)的吞吐率。非自增模式下訪(fǎng)問(wèn)HPID后,HPIA的值保持不變,主機需要更新HPIA來(lái)訪(fǎng)問(wèn)下一個(gè)地址。
在寫(xiě)操作時(shí),主機把數據寫(xiě)到HPID,HPI將第二個(gè)半字的數據通過(guò)HSTROBE的上升沿鎖存到HPID后,將HRDY置為忙狀態(tài),并啟動(dòng)HPI DMA將HPID的內容搬到HPIA所指向的內存單元,然后清除HRDY指示可以進(jìn)行下一次操作。
在讀操作時(shí),在第一個(gè)HSTROBE的下降沿,HPI采樣到HR/W為讀命令,則將HRDY置為忙狀態(tài),啟動(dòng)HPIDMA將HPIA指向的內存單元的數據搬到HPID,清除HRDY忙狀態(tài),主機端方可結束總線(xiàn)訪(fǎng)問(wèn)周期,鎖存數據線(xiàn)上的有效數據。
評論