|
|
| <!--插入廣告JS代碼--> |
摘 要:本文以基于3G 技術(shù)的移動(dòng)自組織網(wǎng)(MANET)的研究為背景,用現(xiàn)在較為流行的高速USB接口與DSP的主機(jī)接口HPI相連接,成功地解決了MANET移動(dòng)終端與主機(jī)之間的數(shù)據(jù)交換問(wèn)題。本文在介紹了TI公司DSP芯片TMS320C6416和CYPRESS公司的USB接口控制芯片CY7C68013特點(diǎn)以后,介紹了兩者連接的一種硬件設(shè)計(jì)以及USB芯片的固件的編寫和調(diào)試。
關(guān)鍵詞:移動(dòng)自組織網(wǎng);HPI接口;USB接口;固件;波形描述符一、引言
當(dāng)前,數(shù)字信號(hào)處理器(DSP) 芯片以其強(qiáng)大的運(yùn)算能力在通信、電子、圖像處理等各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。使用DSP的系統(tǒng)可以按處理器使用的數(shù)目分為單處理器系統(tǒng)和多處理器系統(tǒng)。單 DSP的系統(tǒng)盡管結(jié)構(gòu)簡(jiǎn)單,但系統(tǒng)的功能將不可避免地有所限制。在使用DSP的多處理器系統(tǒng)中,由于DSP的控制功能不是非常強(qiáng)大,因此往往把DSP作為一個(gè)相對(duì)獨(dú)立的子系統(tǒng)專門負(fù)責(zé)復(fù)雜的運(yùn)算,而另外使用一個(gè)主機(jī)(PC機(jī)或是單片機(jī))對(duì)整個(gè)系統(tǒng)的運(yùn)行進(jìn)行控制。所以,在使用DSP的多處理器系統(tǒng)中,主機(jī) (單片機(jī)、PC機(jī)或另一個(gè)DSP芯片)與子系統(tǒng) DSP的數(shù)據(jù)交互就成為應(yīng)用系統(tǒng)設(shè)計(jì)中必須考慮的重要問(wèn)題。
在基于3G 技術(shù)的移動(dòng)自組織網(wǎng)的研究項(xiàng)目中需要設(shè)計(jì)一個(gè)MANET移動(dòng)終端,該移動(dòng)終端由一臺(tái)PC(或PDA)和一個(gè)無(wú)線收發(fā)設(shè)備組成。無(wú)線收發(fā)設(shè)備完成物理層和 MAC層的數(shù)據(jù)處理,其中DSP完成部分物理層的解調(diào)功能和MAC層的協(xié)議數(shù)據(jù)處理功能;而網(wǎng)絡(luò)層和網(wǎng)絡(luò)層以上的部分由PC機(jī)或PDA承擔(dān)。這樣就需要設(shè)計(jì)一個(gè)接口完成DSP與主機(jī)之間的數(shù)據(jù)交互。由于USB接口具有熱插拔、速度快(包括低、中、高模式)和外設(shè)容量大(理論上可掛接127個(gè)設(shè)備)等特點(diǎn),使其成為PC機(jī)的外圍設(shè)備擴(kuò)展中應(yīng)用日益廣泛的接口標(biāo)準(zhǔn)。因此我們選擇了USB作為無(wú)線收發(fā)設(shè)備和PC機(jī)之間的接口方式。結(jié)合MANET移動(dòng)終端的實(shí)際需要,我們?cè)O(shè)計(jì)了DSP芯片與PC機(jī)之間進(jìn)行通信的接口。該接口通過(guò)TI公司的TMS320C6416(7E3)DSP芯片(以下簡(jiǎn)稱DSP6416)的 HPI-16總線與CYPRESS公司的FX2系列的CY7C68013相連,可使PC機(jī)通過(guò)USB2.0接口實(shí)時(shí)地與DSP進(jìn)行數(shù)據(jù)交互,從而將DSP 從數(shù)據(jù)傳輸中解放了出來(lái),解決了MAC層與網(wǎng)絡(luò)層之間的數(shù)據(jù)交互問(wèn)題。
二、背景知識(shí)
1.USB協(xié)議
USB總線是INTEL、NEC、MICROSOFT、IBM等公司于1995年聯(lián)合提出的一種串行總線規(guī)范。為了適應(yīng)高速數(shù)據(jù)傳輸?shù)男枰@些公司又于2000年4月在原協(xié)議1.1版本的基礎(chǔ)上制定了USB2.0協(xié)議規(guī)范,使其傳輸速度可高達(dá)480Mbps。
由于USB協(xié)議非常復(fù)雜,開發(fā)者不可能直接在USB底層協(xié)議的基礎(chǔ)上進(jìn)行開發(fā)。目前,市場(chǎng)上已經(jīng)有許多對(duì)USB協(xié)議進(jìn)行了封裝的接口芯片,如:National Semiconductor公司的USBN9602、Phillips公司的PDIUSBD12等。本項(xiàng)目中選用的是CYPRESS公司帶單片機(jī)內(nèi)核的FX2系列USB接口芯片CY7C68013。
2.芯片介紹
(1)DSP芯片
DSP6416是 TI公司的TMS320C6000系列DSP中一款性能極高的定點(diǎn)DSP芯片。它是TI公司基于第二代、高性能的超常指令集結(jié)構(gòu)(VelociTI.2TM)而研發(fā)的一款DSP。在工作時(shí)鐘為720 MHz時(shí),其最高處理能力能夠達(dá)到5 760 MIPS,并且具有極強(qiáng)的并行處理能力,因此在高速DSP處理應(yīng)用領(lǐng)域中具有不可替代的卓越性能。
(2)DSP芯片的主機(jī)接口(HPI)
DSP6416芯片的主機(jī)接口是一個(gè)16/32 bit寬度的、由主機(jī)直接訪問(wèn)DSP存儲(chǔ)空間的并行端口。HPI與DSP存儲(chǔ)空間的連接是通過(guò)DMA或者增強(qiáng)性DMA(EDMA)控制器完成的。借助專門的地址寄存器(HPIA)、數(shù)據(jù)寄存器(HPID)和控制寄存器(HPIC),通過(guò)DMA或EDMA輔助通道,主機(jī)可對(duì)DSP的存儲(chǔ)空間進(jìn)行直接訪問(wèn)。
(3)USB接口芯片
本項(xiàng)目中采用的USB接口芯片CY7C68013屬于Cypress公司的FX2系列產(chǎn)品。EZUSB FX2是Cypress生產(chǎn)的世界上第一個(gè)USB2.0的集成微控制器。其性能詳見參考文獻(xiàn)[3]。
CY7C68013與外設(shè)有主/從兩種接口方式:可編程接口GPIF和 Slave FIFO。可編程接口GPIF是主機(jī)方式,可以由軟件編寫讀寫控制時(shí)序,靈活方便,幾乎可以和所有8/16 bit接口的控制器、存儲(chǔ)器和總線進(jìn)行無(wú)縫連接。Slave FIFO方式是從機(jī)方式,外部控制器可以像對(duì)待普通FIFO一樣對(duì)FX2內(nèi)的多個(gè)緩沖區(qū)進(jìn)行讀寫。Slave FIFO接口也可以靈活配置以適應(yīng)不同的需要。在本項(xiàng)目的設(shè)計(jì)中,我們采用的是可編程接口GPIF方式。
三、接口的設(shè)計(jì)與調(diào)試
1.基本工作流程
在本系統(tǒng)中,無(wú)線收發(fā)設(shè)備中的DSP 與主機(jī)之間的接口主要由3個(gè)部分組成:主機(jī)(能夠支持USB2.0協(xié)議的PC機(jī)),內(nèi)含一個(gè)51核及高速緩存的USB接口芯片(CY7C68013)和高速DSP芯片(TMS320C6416-7E3),如圖1所示。其基本工作流程是:當(dāng)USB設(shè)備插入計(jì)算機(jī)時(shí),計(jì)算機(jī)和USB設(shè)備之間會(huì)產(chǎn)生一個(gè)枚舉過(guò)程:計(jì)算機(jī)檢測(cè)到有設(shè)備插入,自動(dòng)發(fā)出查詢請(qǐng)求;USB設(shè)備回應(yīng)這個(gè)請(qǐng)求,送出設(shè)備的Vendor ID和Product ID;計(jì)算機(jī)根據(jù)這兩個(gè)ID裝載相應(yīng)的設(shè)備驅(qū)動(dòng)程序,完成枚舉過(guò)程。枚舉過(guò)程結(jié)束后即可以進(jìn)行數(shù)據(jù)的交互,在接收數(shù)據(jù)即DSP有數(shù)據(jù)要傳送給PC機(jī)時(shí),它首先向FX2發(fā)送一個(gè)硬件中斷信號(hào),F(xiàn)X2接收到該中斷后,啟動(dòng)接收程序,并通過(guò)HPI接口設(shè)置DSP6416的HPIC寄存器的HINT標(biāo)志位(將其置 1),使DSP下一次仍然可以通過(guò)該位發(fā)出中斷;然后通過(guò)端口6將固定長(zhǎng)度(512字節(jié))的數(shù)據(jù)讀入FIFO;在端口6讀取數(shù)據(jù)的過(guò)程中為了保證較高的傳輸速度,F(xiàn)X2中的CPU是不干預(yù)該過(guò)程的,當(dāng)FIFO中的數(shù)據(jù)達(dá)到一定數(shù)量后FX2自動(dòng)將數(shù)據(jù)打包傳送給USB總線;在發(fā)送數(shù)據(jù)即PC機(jī)有數(shù)據(jù)要發(fā)送時(shí),它將數(shù)據(jù)包直接傳給FX2,F(xiàn)X2收到后,按指定的字節(jié)長(zhǎng)度將數(shù)據(jù)讀到發(fā)送端口2的FIFO中,然后自動(dòng)啟動(dòng)GPIF,將數(shù)據(jù)傳送給DSP,接下來(lái) FX2通過(guò)HPI接口設(shè)置DSP6416的HPIC寄存器中的DSPINT位(將其置1),向DSP6416發(fā)起中斷,通知DSP6416有數(shù)據(jù)包到。同樣,為保證較高的傳輸速度,在發(fā)送數(shù)據(jù)時(shí)FX2的CPU也是不進(jìn)行干預(yù)的。

2.硬件電路設(shè)計(jì)及原理
由于DSP的HPI接口是主從模式的,且DSP作為從模式,因此CY7C68013須以主模式參與連接,這樣我們選擇可編程控制接口GPIF方式與DSP HPI的接口進(jìn)行連接。電路設(shè)計(jì)原理圖如圖2所示。
圖中兩個(gè)芯片的管腳說(shuō)明請(qǐng)參見參考文獻(xiàn)[2]和[3],具體的電路連接方面不是很復(fù)雜,但是有幾點(diǎn)需要說(shuō)明:
(1) 該電路中,我們采用的是CY7C68013的56 SSOP管腳封裝的芯片進(jìn)行設(shè)計(jì)的,但是建議在固件和驅(qū)動(dòng)沒(méi)有進(jìn)行調(diào)試或沒(méi)有調(diào)試經(jīng)驗(yàn)的情況下最好使用100或128管腳封裝的芯片,因?yàn)檫@兩種封裝的芯片帶有串口,這在固件和驅(qū)動(dòng)的調(diào)試中可以通過(guò)串口進(jìn)行單步調(diào)試,這樣會(huì)在調(diào)試過(guò)程中減少很多不必要的麻煩;
(2)FX2有3種啟動(dòng)后的固件加載方式:① 通過(guò)主機(jī)的驅(qū)動(dòng)進(jìn)行加載;②通過(guò)I2C總線外掛E2PROM加載;③通過(guò)外掛存儲(chǔ)器ROM進(jìn)行加載。我們?cè)谠撛O(shè)計(jì)中采用的是第一種方式,所以SCL和SDA兩個(gè)管腳應(yīng)該上拉;
(3)為了更好地與各種不同的接口進(jìn)行無(wú)縫連接,CY7C68013提供了多個(gè)輸入和輸出控制管腳,這些管腳在讀寫時(shí)的時(shí)序都可以在固件中編程實(shí)現(xiàn),使得GPIF方式使用起來(lái)極為方便靈活。在該設(shè)計(jì)中,HCNTL[0-1]和HINT這些輸入控制邏輯信號(hào)連接至PA0~PA2輸入管腳上;HHWIL、 HDS1和H/#R,這些輸出邏輯信號(hào)連接至CTL0~CTL2輸出管腳上;HRDY與68013的RDY0專門與Ready信號(hào)連接的管腳相連;
(4)由于沒(méi)有地址和數(shù)據(jù)總線復(fù)用的情況,所以DSP6416的#HAS管腳應(yīng)上拉;
(5)DSP6416的HPI接口有32 bit和16 bit兩種工作模式,其工作模式的選擇是通過(guò)芯片在復(fù)位時(shí)讀取HD5管腳的電平來(lái)決定的。當(dāng)HD5為高電平時(shí),DSP工作于HPI32模式下;當(dāng)HD5 為低時(shí),DSP工作于HPI16模式下。為使DSP工作于HPI16模式,應(yīng)將HD5管腳下拉。
3.固件程序設(shè)計(jì)與調(diào)試
(1)固件的設(shè)計(jì)
固件是在USB 接口芯片加電后,由其它設(shè)備加載到CY7C68013中并在其中運(yùn)行完成接口數(shù)據(jù)傳送功能的一段程序。在本接口中采用的是由PC機(jī)通過(guò)USB接口加載固件的方式(在前面已經(jīng)提到)。固件的功能主要包括:①加載后于主機(jī)驅(qū)動(dòng)配合完成接口設(shè)備的第二次枚舉;②處理與DSP6416的HPI接口的數(shù)據(jù)交換;③處理與主機(jī)之間的USB接口的數(shù)據(jù)交換。
在68013芯片中數(shù)據(jù)的交換是通過(guò)不同的數(shù)據(jù)端口來(lái)實(shí)現(xiàn)的。FX2一共有十幾個(gè)端口可以使用,其中0端口是控制端口,用于傳送主機(jī)驅(qū)動(dòng)命令;
端口1有2個(gè),一個(gè)是輸入端口一個(gè)是輸出端口;余下的是幾個(gè)通用的數(shù)據(jù)端口,端口2、4、6、8,這幾個(gè)端口的性質(zhì)(包括輸入或輸出、端口緩沖區(qū)大塊數(shù)和大小等)參數(shù)需要在固件中進(jìn)行配置的。本例中的端口配置如表1所示。
固件程序的編寫主要分幾個(gè)大的模塊:
1) 主模塊,主要完成設(shè)備的初始化、固件運(yùn)行后的“重新枚舉”、進(jìn)入循環(huán)不斷接收PC機(jī)發(fā)送的一些命令并等待數(shù)據(jù)的傳送;
2) 數(shù)據(jù)收發(fā)模塊,主要完成初始化數(shù)據(jù)傳送端口,并且處理0端口發(fā)出的命令。當(dāng)輸出端口有數(shù)據(jù)時(shí)把數(shù)據(jù)通過(guò)GPIF按照給定的時(shí)序把數(shù)據(jù)傳送到預(yù)先指定的 DSP存儲(chǔ)空間,并向DSP發(fā)出中斷,通知它有數(shù)據(jù)包到;當(dāng)收到DSP有數(shù)據(jù)要傳入的中斷時(shí),啟動(dòng)GPIF的HPI接收時(shí)序,把DSP中的數(shù)據(jù)接收到輸入端口的緩沖區(qū),并通知PC機(jī),PC機(jī)通過(guò)USB接口將數(shù)據(jù)取走,接著清除DSP中HPI端口的控制寄存器的中斷標(biāo)志位;
3) GPIF模塊,主要是對(duì)DSP6416 HPI接口的時(shí)序進(jìn)行編程,使得自己與DSP之間的接口時(shí)序完全與DSP HPI的時(shí)序相一致,這種時(shí)序的編程具體來(lái)說(shuō)就是設(shè)定一個(gè)個(gè)波形描述符,每個(gè)波形包含有S0~S6七個(gè)有效狀態(tài)和一個(gè)空閑狀態(tài)。一共有4個(gè)波形描述符:兩個(gè)單字的寫時(shí)序(前后兩個(gè)字的寫時(shí)序不一樣)、一個(gè)批量數(shù)據(jù)的讀時(shí)序、一個(gè)批量數(shù)據(jù)的寫時(shí)序。GPIF波形描述符的編程一般使用Cypress公司提供的 GPIFTOOL工具進(jìn)行配置;
4)設(shè)備描述模塊,該模塊唯一的功能就是提供主機(jī)啟動(dòng)在重新枚舉設(shè)備時(shí)所需要的VID和PID以及其它一些必要的設(shè)備描述符。這個(gè)模塊的格式是基本固定的,除了VID和PID外一般不需要改動(dòng)。
在固件的編寫中關(guān)鍵的是GPIF波形描述符的編寫。波形描述符的編寫首先必須弄清楚HPI的讀寫時(shí)序,設(shè)置好輸入和輸出控制信號(hào)。
以下以HPI16接口的批量數(shù)據(jù)讀時(shí)序?yàn)槔谐霾糠植ㄐ蚊枋龇脑创a(包括控制信號(hào)的設(shè)置以及時(shí)序的編程)供大家參考。GPIF波形圖的具體編程參見參考文獻(xiàn)[4]。

固件程序框圖如圖3所示。
(2)固件的調(diào)試
一般固件的調(diào)試方法很多,我們采用的是用Cypress公司提供的EZ USB Control Panel與TI公司的CCS加上DSP的仿真器聯(lián)合進(jìn)行調(diào)試的。如果用100或128管腳的CY7C68013芯片,可以通過(guò)串口用Keil C進(jìn)行固件加載后的單步調(diào)試,這樣會(huì)方便很多。
調(diào)試的大致過(guò)程為:首先啟動(dòng)Control Panel和CCS,然后在CCS中將預(yù)先約定的數(shù)據(jù)收發(fā)緩存去清零,接著通過(guò)Control Panel下載固件到CY7C68013中,重新枚舉后,在Control Panel中通過(guò)0端口設(shè)置所要傳輸?shù)淖止?jié)數(shù)和要傳輸?shù)臄?shù)據(jù)在DSP中的首地址,接著向端口2發(fā)送數(shù)據(jù),在CCS中通過(guò)內(nèi)存地址查看工具查看從首地址開始的內(nèi)存地址內(nèi)容,看DSP對(duì)應(yīng)的地址中是否有剛才寫入的數(shù)據(jù)。如果有,說(shuō)明固件的數(shù)據(jù)發(fā)送已經(jīng)沒(méi)有問(wèn)題了。接著再通過(guò)端口0設(shè)置讀入首地址,在CCS中運(yùn)行HPI中斷出發(fā)程序,通過(guò)DSP向FX2發(fā)起中斷,固件收到中斷后會(huì)自動(dòng)運(yùn)行中斷服務(wù)程序,從端口6中讀入一批長(zhǎng)度為512字節(jié)的數(shù)據(jù),如果讀入的數(shù)據(jù)與DSP中對(duì)應(yīng)的地址中的數(shù)據(jù)一致說(shuō)明固件的數(shù)據(jù)接收也通過(guò)了。剩下的工作就是在和驅(qū)動(dòng)的調(diào)試中與驅(qū)動(dòng)之間的傳輸協(xié)議的調(diào)試了。
四、結(jié)束語(yǔ)
在基于TD -SCDMA的MANET移動(dòng)終端的具體實(shí)現(xiàn)中,用CY7C68013芯片將DSP的HPI與主機(jī)的USB接口進(jìn)行連接,既很好地利用了該芯片接口可編程靈活和外圍電路簡(jiǎn)單的特點(diǎn),而且也提高了數(shù)據(jù)傳輸?shù)姆(wěn)定性和速度。運(yùn)用DSP芯片提供的HPI接口進(jìn)行MAC層與網(wǎng)絡(luò)層的數(shù)據(jù)傳送,使得DSP基本無(wú)需參與這部分?jǐn)?shù)據(jù)的傳輸,從而減輕了DSP的負(fù)擔(dān)。目前,該技術(shù)已經(jīng)成功的應(yīng)用到具體項(xiàng)目中,并取得了良好的效果。
參考文獻(xiàn)
[1]TMS320C6000 DSP Host Port Interface(HPI)Reference Guide (Literature Number:SPRU578)[Z].Texas Instruments Incorporated,2003.
[2] TMS320C6414, TMS320C6415, TMS320C6416 Fixed-Point Digital Signal Processors (Revised) [Z].Texas Instruments Incorporated,2003 .
[3]CY7C68013EZ-USB FX2TMUSB Microcontroller High-speed USB Peripheral Controller[Z].Cypress Semiconductor Corporation,2002.
[4]EZ-USB FX2 Technical Reference Manual[Z].Cypress Semiconductor Corporation,2002.
[5]許永和. EZ-USB FX 系列單片機(jī)USB外圍設(shè)計(jì)和應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2002.