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