《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > HPI方式自舉在TMS320VC5402 DSP芯片上實(shí)現(xiàn)
HPI方式自舉在TMS320VC5402 DSP芯片上實(shí)現(xiàn)
摘要: 當(dāng)前,,數(shù)字信號處理器(DSP)芯片以其強(qiáng)大的運(yùn)算能力在通信,、電子、圖像處理等各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,。使用DSP的系統(tǒng)可以按處理器使用的數(shù)目分為單處理器系統(tǒng)和多處理器系統(tǒng),。單DSP的系統(tǒng)盡管結(jié)構(gòu)簡單,但系統(tǒng)的功能將不可避免地有所限制,。由于DSP的控制功能不是非常強(qiáng)大,,在應(yīng)用中往往不得不把DSP作為目標(biāo)系統(tǒng)專門負(fù)責(zé)復(fù)雜的運(yùn)算,而另外使用一個(gè)主機(jī)(PC機(jī)或是單片機(jī))對整個(gè)系統(tǒng)的運(yùn)行實(shí)行控制,。所以,,在使用DSP的多處理器系統(tǒng)中,主機(jī)(單片機(jī)、PC機(jī),、另一個(gè)DSP芯片)與目標(biāo)系統(tǒng) DSP的數(shù)據(jù)交換就成為應(yīng)用系統(tǒng)設(shè)計(jì)中必須考慮的重要問題,。
關(guān)鍵詞: DSP TMS320VC5402 HPI Kernel VoIP
Abstract:
Key words :

  當(dāng)前,數(shù)字信號處理器(DSP)芯片以其強(qiáng)大的運(yùn)算能力在通信,、電子,、圖像處理等各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。使用DSP的系統(tǒng)可以按處理器使用的數(shù)目分為單處理器系統(tǒng)和多處理器系統(tǒng),。單DSP的系統(tǒng)盡管結(jié)構(gòu)簡單,,但系統(tǒng)的功能將不可避免地有所限制。由于DSP的控制功能不是非常強(qiáng)大,,在應(yīng)用中往往不得不把DSP作為目標(biāo)系統(tǒng)專門負(fù)責(zé)復(fù)雜的運(yùn)算,,而另外使用一個(gè)主機(jī)(PC機(jī)或是單片機(jī))對整個(gè)系統(tǒng)的運(yùn)行實(shí)行控制。所以,,在使用DSP的多處理器系統(tǒng)中,,主機(jī)(單片機(jī)、PC機(jī),、另一個(gè)DSP芯片)與目標(biāo)系統(tǒng) DSP的數(shù)據(jù)交換就成為應(yīng)用系統(tǒng)設(shè)計(jì)中必須考慮的重要問題,。

  1 主機(jī)接口的傳統(tǒng)解決方案

  解決主機(jī)與目標(biāo)系統(tǒng)的數(shù)據(jù)交換是一個(gè)非常復(fù)雜的問題。傳統(tǒng)的方式是采用 DMA(Direct Memory Access)或全局存儲(chǔ)器(Global Memory)完成多機(jī)系統(tǒng)中的數(shù)據(jù)共享,。在DMA方式下,,讀寫共享內(nèi)存必須要求其它處理器處于停止工作的狀態(tài),所以DMA共享存儲(chǔ)器的方式往往不為人所用,。全局存儲(chǔ)器是多個(gè)處理器共享的存儲(chǔ)器,。在使用全局存儲(chǔ)器的應(yīng)用系統(tǒng)中,DSP的地址空間被分成局部塊(Local Section)和全局塊(Global Section),。局部塊用于完成處理器自己的工作,,而全局塊則用來完成與其它處理器的通信工作。在TMS320C5X器件中,,使用全局存儲(chǔ)器分配寄存器GReg完成對全局內(nèi)存的管理工作,。GReg指定部分DSP內(nèi)存為全局內(nèi)存。比如,,TMS320C5x器件能夠分配全局?jǐn)?shù)據(jù)內(nèi)存空間,,并通過BR(Bus Request)和 hcs控制信號實(shí)現(xiàn)與該內(nèi)存的通信。當(dāng)需要尋址全局內(nèi)存空間時(shí),,BR和hcs信號變低電平,。于是外部邏輯進(jìn)行全局內(nèi)存控制權(quán)的裁決,裁決的結(jié)果將通過選通信號通知某個(gè)TMS320C5x 從而使該DSP現(xiàn)在就擁有對全局內(nèi)存的控制權(quán),。顯然,,使用全局內(nèi)存的方式來完成多DSP的共享數(shù)據(jù)通信是非常方便的,。但是,應(yīng)用系統(tǒng)往往由單片機(jī)作為主機(jī),,DSP作為目標(biāo)系統(tǒng)構(gòu)成,。由于當(dāng)前使用最多的單片機(jī)往往是8位機(jī),使用16位機(jī)的共享內(nèi)存完成主機(jī)與DSP的數(shù)據(jù)交換不是處理太復(fù)雜就是資源利用不充分,。為了解決DSP與低檔 8位主機(jī)的數(shù)據(jù)交換問題,,TI公司在TMS320C54x系列中使用了HPI接口。HPI將以往一些需片外實(shí)現(xiàn)的功能集成在片內(nèi),,簡化了與主機(jī)的連接,,同時(shí)主機(jī)可以達(dá)到很高的訪問速度。該HPI端口在TI TMS320C6x系列的器件中也得到了保持,,且功能有所增強(qiáng),。

  TI TMS320C6x系列的器件中也得到了保持,且功能有所增強(qiáng),。

  2 TMS320VC5402的HPI

  TMS320VC5402是TI公司的54X系列定點(diǎn)DSP,具有低功耗,、高性能的特點(diǎn),。

  CPU 增強(qiáng)的多總線結(jié)構(gòu),三條獨(dú)立的16bit數(shù)據(jù)存儲(chǔ)器總線和一條程序存儲(chǔ)器總線,;40bit運(yùn)算邏輯單元(ALU),,包括一個(gè)40bit的桶形移位器和兩個(gè)獨(dú)立的40bit累加器,17bit×17bit并行乘法器連接一個(gè)40bit的專用加法器,,可用來進(jìn)行非流水單周期乘/加(MAC)運(yùn)算;比較,、選擇和存儲(chǔ)單元(CSSU)用于Viterbi運(yùn)算器的加/比較選擇指數(shù)編碼器在一個(gè)周期里計(jì)算一個(gè)40bit累加器的指數(shù)值兩個(gè)地址發(fā)生器中有八個(gè)輔助寄存器和兩個(gè)輔助寄存器運(yùn)算單元(ARAUs)數(shù)據(jù)總線具有總線保持特性。

  存儲(chǔ)器 擴(kuò)展地址模式可最大尋址到1M×16bit外部程序空間,,4K×16bit片上ROM,,16K×16bit雙訪問片上RAM。

  指令集 支持單指令循環(huán)和塊循環(huán),,存儲(chǔ)塊移動(dòng)指令提供了高效的程序和數(shù)據(jù)存儲(chǔ)器管理,,支持32bit長字操作數(shù)指令,支持兩個(gè)或三個(gè)操作數(shù)讀指令,,支持并行存儲(chǔ)和并行加載的算術(shù)指令,、條件存儲(chǔ)指令和中斷快速返回,支持定點(diǎn)DSP C語言編譯器,。

  片上硬件資源 軟件可編程等待狀態(tài)發(fā)生器和可編程存儲(chǔ)單元轉(zhuǎn)換,,連接內(nèi)部振蕩器或外部時(shí)鐘源的鎖相環(huán)(PLL)時(shí)鐘發(fā)生器,兩個(gè)多通道緩沖串口(McBSPs),,增強(qiáng)型8bit并行主機(jī)接口(HPI8),,兩個(gè)16bit定時(shí)器,,6通道直接存儲(chǔ)器訪問(DMA)控制器。

  電源 低功耗,,工作電源有3.3V和1.8V(內(nèi)核),,用節(jié)電模式的IDLE1、IDLE2及IDLE3指令做功率控制,,可禁止CLKOUT信號,。

  速度 在3.3V供電(1.8V核心電壓)下單周期定點(diǎn)指令的執(zhí)行周期為10ns(100MIPS)。

  仿真 符合IEEE1149.1邊界掃描邏輯標(biāo)準(zhǔn)的片內(nèi)掃描仿真邏輯接口,。

  TMS320C54x系列DSP芯片中的HPI,,能夠順序傳送或隨機(jī)傳送數(shù)據(jù),產(chǎn)生HOST中斷和C54x中斷,,接口靈活,,并可通過DMA總線訪問片內(nèi)RAM。當(dāng)TMS320 C54X與主機(jī)(或主設(shè)備)交換信息時(shí),,HPI是主機(jī)的一個(gè)外圍設(shè)備,。HPI有8根數(shù)據(jù)線HD(0~7),在TMS320C54x與HOST傳送數(shù)據(jù)時(shí),,HPI能自動(dòng)將外部接口傳來的連續(xù)數(shù)據(jù)組合成16位數(shù)后傳送給DSP,。如果HOST和DSP競爭同一個(gè)地址,則HOST優(yōu)先,,DSP等待一個(gè)HPI周期,。

 

  TMS320C54x系列發(fā)展到TMS320VC5402的時(shí)候,其HPI已經(jīng)得到了增強(qiáng),,被稱為HPI-8,。和TMS320C54x系列前幾款芯片中的標(biāo)準(zhǔn)HPI相比,HPI-8在幾個(gè)方面有所不同,,見表1,。

表1 HPI-8和標(biāo)準(zhǔn)HPI的主要差別

HPI-8和標(biāo)準(zhǔn)HPI的主要差別

  HPI-8的使用是通過對HPIA、HPIC和HPID三個(gè)寄存器賦值實(shí)現(xiàn)的,。HPIA是地址寄存器,,HPIC是控制寄存器,而HPID是數(shù)據(jù)寄存器,。簡單地說,,HOST通過外部引腳HCNTL0和HCNTL1選中不同的寄存器,則當(dāng)前發(fā)送的8位數(shù)據(jù)就送到該寄存器,。在使用上,,由于HPIC是16位寄存器,而HPI-8是8位的數(shù)據(jù)寬度,,所以在HOST向HPIC寫數(shù)據(jù)時(shí),,需要發(fā)送兩個(gè)一樣的8位數(shù)據(jù),。而地址寄存器HPIA選擇后,直接向它寫數(shù)據(jù)就可以了,,但是要注意MSB和LSB的順序,。另外,HPIA具有自動(dòng)增長的功能,,在每寫入一個(gè)數(shù)據(jù)前和每寫入一個(gè)數(shù)據(jù)后,,HPIA會(huì)自動(dòng)加1。這樣,,如果使能了該功能,,只需設(shè)定一次HPIA即可實(shí)現(xiàn)連續(xù)數(shù)據(jù)塊的寫入和讀出。數(shù)據(jù)寄存器HPID,,嚴(yán)格說應(yīng)該叫做數(shù)據(jù)緩沖寄存器,,因?yàn)樽罱K數(shù)據(jù)是要寫到片內(nèi)RAM的。只是在實(shí)現(xiàn)上,,數(shù)據(jù)首先從HOST發(fā)到HPID中,,然后根據(jù)HPIA指定的地址,HPID中的數(shù)據(jù)再寫到片內(nèi)RAM的地址中,。不過對用戶而言,,該過程是透明的。

  3 使用HPI對DSP進(jìn)行自舉

  HPI是作為多機(jī)數(shù)據(jù)交換而出現(xiàn)的,,但是由于其功能特性,又產(chǎn)生了一種新的應(yīng)用--使用HPI對DSP進(jìn)行自舉,。實(shí)際上,,TMS320VC5x系列DSP在片內(nèi)固化的Bootloader程序中對HPI自舉提供了全面的支持。筆者在VOIP系統(tǒng)的開發(fā)中,,實(shí)現(xiàn)了使用HPI對DSP TMS320VC5402的自舉,,從而省掉了DSP的EPROM,使DSP只使用SRAM,,提高了處理速度,,并使HOST CPU具有更大的控制權(quán),很適合多處理器系統(tǒng),。對于計(jì)算機(jī)插卡式的DSP系統(tǒng),,程序可以從PC機(jī)的硬盤上獲取,從而減小了插卡版面空間占用,,提高了處理速度,。

  在實(shí)現(xiàn)上,需要解決以下幾個(gè)問題,。

  3.1 DSP片內(nèi)固化的Bootloader程序?qū)PI自舉的支持

  自舉從本質(zhì)上說就是在DSP啟動(dòng)后通過某種方式獲取運(yùn)行代碼并開始運(yùn)行,,這個(gè)過程是在固化在DSP片內(nèi)的Bootloader程序輔助下完成的,。在DSP上電以后,Bootloader程序按照一定的順序依次檢驗(yàn)何種自舉方式可用,,自舉方式包括HPI方式,、Serial EEPROM方式、標(biāo)準(zhǔn)Serial Port方式,、Parallel方式和I/O方式,。

  Bootloader查詢HPI方式是否可用是這樣進(jìn)行的:在啟動(dòng)以后,DSP片內(nèi)0x7f地址的值被置為0,,Bootloader不斷檢驗(yàn)0x7f地址處是否出現(xiàn)了可用的程序指針的跳轉(zhuǎn)地址,。當(dāng)其發(fā)現(xiàn)該地址內(nèi)的值不為0時(shí),即判定為DSP已由外部HOST CPU進(jìn)行了HPI自舉程序加載,,并按照該值跳轉(zhuǎn)PC指針,,開始運(yùn)行,從而完成HPI方式自舉,。

  3.2 突破4K的空間限制

  由于HPI-8的特性,,HOST能夠訪問所有的片內(nèi)RAM空間,對于TMS320VC5402來說,,其片內(nèi)RAM地址空間從0000H到3fffH,,一共4K。這已經(jīng)大大超過了標(biāo)準(zhǔn)HPI的2K的大小,,但是對于大多數(shù)DSP應(yīng)用程序來說,,片內(nèi)RAM除了放置程序代碼以外,很可能還需要留出一部分供數(shù)據(jù)空間使用,。實(shí)際上,,大部分代碼都可能放置在片外的程序空間,而這部分空間并不是HOST通過HPI-8所能夠訪問得到的,。所以需要使用某種技術(shù)突破4K的片內(nèi)RAM空間限制,。由于DSP程序本身是能夠訪問到所有DSP程序、數(shù)據(jù)空間的,,所以HOST可以首先放置一個(gè)體積不大于4K的程序到DSP內(nèi),,再由該程序和HOST協(xié)作完成超出片內(nèi)RAM的代碼的放置工作。

  一般將上述的首先放入DSP的程序稱為Kernel程序,,其功能比較簡單,,本身不超過4K,可以由HOST全部放入到TMS320VC5402的片內(nèi)RAM中,,并被啟動(dòng),。

  基于此種思路的流程圖如圖1所示。

流程圖

  3.3 程序代碼的定位

  編程序的時(shí)侯使用符號作為地址,,經(jīng)編譯,、鏈接后,,符號所表示的相對地址已經(jīng)轉(zhuǎn)化為絕對地址。要使程序能夠正常運(yùn)行,,需要將程序代碼寫到指定的位置--絕對地址,。在 HOST→Kernel→DSP應(yīng)用的HPI自舉方式中,HOST和Kernel需先后完成Kernel代碼和DSP應(yīng)用程序代碼的定位工作,。

  因此,,在HOST CPU的外存儲(chǔ)器中,至少需要保存DSP程序代碼和相應(yīng)的地址信息,。這些數(shù)據(jù)在由自舉程序?qū)懙紻SP后,,被拼接成正確的可執(zhí)行代碼、已初始化數(shù)據(jù)等,,并被正確定位,。一般來說,HOST CPU的外存儲(chǔ)器中的DSP自舉數(shù)據(jù)是HEX格式的,。雖然HEX格式有很多種,,但任何一種包含有地址等信息的16進(jìn)制HEX格式文件都是適用的。

 

  常見的HEX格式有ASCII,、Intel,、TI-Tagged等格式,如圖2所示,。

常見的HEX格式有ASCII

  在各種HEX格式中,,Intel格式相對來說比較適宜,因?yàn)樵贗ntel格式的HEX文件中,,代碼被分為每行一個(gè)塊,,這種分塊的最大長度固定,因此在DSP內(nèi)預(yù)留的緩沖區(qū)的大小容易計(jì)算,。Intel格式的HEX文件的格式為:BYTE1作為每塊的起始標(biāo)志,總是":",;BYTE2-3表示該塊中有效數(shù)據(jù)的長度,,最長為32個(gè)BYTE。這種有效數(shù)據(jù)可能是程序代碼,,也可能是擴(kuò)展地址信息,;BYTE4-7表示該塊內(nèi)代碼的起始地址;BYTE8-9是類型,,00表示程序代碼,,01表示結(jié)束,04表示擴(kuò)展地址信息,;BYTE10之后是代碼,,直到最后兩個(gè)BYTE,,表示校驗(yàn)位。校驗(yàn)位的值是該塊中先前數(shù)據(jù)值和的補(bǔ)碼,。

  根據(jù)選定的HEX格式,,CPU首先按照該格式的定義對Kernel的HEX數(shù)據(jù)進(jìn)行解釋,獲取各種信息后,,CPU將其在TMS320VC5402片內(nèi)RAM中組成可執(zhí)行DSP程序,。然后在CPU和kernel的共同作用下,對DSP應(yīng)用程序的HEX數(shù)據(jù)進(jìn)行解釋,,最后完成其在DSP中的拼接,、定位并啟動(dòng)DSP應(yīng)用程序--跳轉(zhuǎn)到DSP應(yīng)用程序的起始地址。

  4 系統(tǒng)軟硬件設(shè)計(jì)與實(shí)現(xiàn)

  4.1 系統(tǒng)框圖

  在筆者開發(fā)的VOIP系統(tǒng)中,,使用了HPI對DSP (TMS320VC5402)進(jìn)行自舉的功能,。其中相應(yīng)部分的框圖如圖3所示。

VOIP系統(tǒng)框圖

  對于PC機(jī)插卡的系統(tǒng),,該框圖更可以省略掉HPI以右的部分,,而直接使用PC機(jī)的CPU和硬盤作為相應(yīng)的控制和只讀存儲(chǔ)器件。這樣,,僅需要為DSP配備RAM即可使其正常運(yùn)行,。

  4.2 Kernel程序設(shè)計(jì)

  按照前面所說,kernel程序的作用是用于突破TMS320VC5402 4K片內(nèi)RAM空間限制的中間程序,,其功能無非就是按照和HOST CPU的某種約定,,獲取DSP程序代碼和相應(yīng)地址信息,在DSP所能夠訪問到的存儲(chǔ)器空間(片內(nèi)和片外)生成DSP程序代碼,。由于 Kernel的功能比較少,,故其可以做得非常小。其中關(guān)鍵的生成DSP程序代碼部分的代碼如下:

程序

  4.3 運(yùn)行流程

  按照前述的系統(tǒng)構(gòu)成,,首先將PC機(jī)上調(diào)試好的Kernel程序和DSP應(yīng)用程序(一般為COFF格式)轉(zhuǎn)換成HEX文件,,并通過串口將這些文件存放到CPU的Flash中,在存放過程中應(yīng)將HEX文件原樣保存,,以保留其中所有的信息,。在系統(tǒng)啟動(dòng)后,CPU從Flash中獲取Kernel的HEX數(shù)據(jù),,通過HPI將其在TMS320VC5402中組合出Kernel運(yùn)行程序并啟動(dòng),。然后,CPU從其Flash中獲取DSP應(yīng)用程序的HEX數(shù)據(jù),,通過HPI將其分塊放入TMS320VC5402,,并和已經(jīng)開始運(yùn)行的Kernel程序最終完成DSP引用程序的正確定位工作。最后啟動(dòng)DSP應(yīng)用程序。

  在實(shí)踐中發(fā)現(xiàn),,雖然HPI的設(shè)計(jì)初衷是為了和低速8位機(jī)接口進(jìn)行數(shù)據(jù)交換,,但是HPI本身的工作速度非常高。通過HPI方式加載一段不小于130K的DSP應(yīng)用程序代碼所需要的時(shí)間不超過3秒鐘,。

  TI系列DSP提供了如此豐富的應(yīng)用方式,,無疑給DSP系統(tǒng)開發(fā)者帶來了極大的方便。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。