當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.引言TMS320VC5402(簡(jiǎn)稱(chēng)VC5402)是TI公司的DSP處理器,具有高級(jí)的數(shù)據(jù)處理結(jié)構(gòu)和豐富的片內(nèi)資源。但是VC5402 DSP內(nèi)部不具有可編程的非易失片內(nèi)存儲(chǔ)器,所以為了保存程序代碼和參數(shù)表,一般情況下要外擴(kuò)一片存儲(chǔ)器。

1.引言

TMS320VC5402(簡(jiǎn)稱(chēng)VC5402)是TI公司的DSP處理器,具有高級(jí)的數(shù)據(jù)處理結(jié)構(gòu)和豐富的片內(nèi)資源。但是VC5402 DSP內(nèi)部不具有可編程的非易失片內(nèi)存儲(chǔ)器,所以為了保存程序代碼和參數(shù)表,一般情況下要外擴(kuò)一片存儲(chǔ)器。VC5402可用的通用輸入輸出口(I/O port)少,軟件上對(duì)I/O口的控制不靈活,沒(méi)有對(duì)I/O口按位控制的指令,且具有流水線(xiàn)延遲。多不具有通用的通信接口如UART接口,CAN總線(xiàn)接口等,對(duì)控制的支持功能較少。AVR(Advanced RISC Architecture)單片機(jī)是ATMEL公司的flash型單片機(jī),廣泛應(yīng)用于數(shù)據(jù)處理和控制領(lǐng)域,具有豐富的片內(nèi)資源和靈活的接口形式。片內(nèi)往往集成了幾十kB乃至幾百kB的flash存儲(chǔ)器,每個(gè)端口幾乎都可以通過(guò)軟件設(shè)置為通用的I/O口和具有特殊功能的端口。將AVR單片機(jī)和VC5402處理器相結(jié)合,發(fā)揮各自的優(yōu)點(diǎn)將是一個(gè)很好的設(shè)計(jì)方案。本文詳細(xì)描述了AVR型單片機(jī)ATMEL64L和VC5402的HPI接口的硬件設(shè)計(jì)原理和軟件設(shè)計(jì)構(gòu)架,同時(shí)詳細(xì)闡述了VC5402 HPI形式的bootloader方法及AVR實(shí)現(xiàn)方法。

2.  硬件設(shè)計(jì)原理

2.1. VC5402的HPI接口

VC5402的HPI接口是一個(gè)增強(qiáng)版的8位并行的HPI接口簡(jiǎn)稱(chēng)為HPI-8[1]。在 HPI-8接口中VC5402是從機(jī)。主機(jī)可以訪(fǎng)問(wèn)VC5402中位于0x60~0x3FFF存儲(chǔ)器空間的片內(nèi)存儲(chǔ)器,這一區(qū)域是VC5402用戶(hù)可用的所有的片內(nèi)存儲(chǔ)器資源。主機(jī)通過(guò)兩個(gè)寄存器:地址寄存器(HPIA)和數(shù)據(jù)寄存器(HPID)訪(fǎng)問(wèn)VC5402內(nèi)部的存儲(chǔ)器。還有一個(gè)控制寄存器(HPIC)包含有控制和狀態(tài)信息。HCNTL[0..1]是HPIA、HPID和HPIC的選址信號(hào)。同時(shí),VC5402對(duì) HCNTL[0..1]=“01”設(shè)置了特殊的訪(fǎng)問(wèn)模式以加快主機(jī)訪(fǎng)問(wèn)片內(nèi)存儲(chǔ)器的速度。此時(shí)主機(jī)讀寫(xiě)HPID的內(nèi)容不用每次設(shè)置HPIA,當(dāng)主機(jī)讀 HPID時(shí)VC5402將當(dāng)前HPIA所指出的片內(nèi)存儲(chǔ)器的數(shù)據(jù)傳送到HPID寄存器,同時(shí)HPIA的內(nèi)容減1,當(dāng)主機(jī)寫(xiě)HPID時(shí)DSP先將當(dāng)前 HPIA的內(nèi)容加1,然后由此時(shí)HPIA所指出的片內(nèi)存儲(chǔ)器的數(shù)據(jù)傳送到HPID寄存器。由此可見(jiàn)此種方式比較適合于主機(jī)訪(fǎng)問(wèn)DSP內(nèi)部的連續(xù)存儲(chǔ)器空間。由于DSP內(nèi)部是按著16位的數(shù)據(jù)進(jìn)行組織,所以主機(jī)通過(guò)8位的HPI口進(jìn)行讀寫(xiě)操作都必須由兩次操作組成,在兩次操作中由HBIL信號(hào)標(biāo)明高低位字節(jié)。

2.2. ATMEL64L簡(jiǎn)介

AVR單片機(jī)是ATMEL公司的8位高性能的低功耗微控制器。具有高級(jí)的精簡(jiǎn)指令集結(jié)構(gòu),絕大多數(shù)指令都是單周期指令,執(zhí)行速度快。ATMEL64L是 Atmega103的升級(jí)版,具有64k字節(jié)在線(xiàn)可編程的flash存儲(chǔ)器,可用于存儲(chǔ)程序和固定的數(shù)據(jù)。具有2k字節(jié)的EEPROM,位于數(shù)據(jù)區(qū),可用于保存參數(shù)表。具有4k字節(jié)的SRAM,為動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)建立了可能。豐富的指令集、大容量而多樣的存儲(chǔ)器結(jié)構(gòu)增加了ATMEL64L程序設(shè)計(jì)的靈活性。另外ATMEL64L還具有豐富的片內(nèi)外設(shè),諸如:USART、SPI、定時(shí)器/計(jì)數(shù)器、PWM通道、在片的模擬比較器等,提供了豐富的通信及控制資源。

2.3. 硬件設(shè)計(jì)實(shí)現(xiàn)

ATMEL64L和TMS320VC5402的HPI-8接口的硬件設(shè)計(jì)關(guān)鍵在于實(shí)現(xiàn)HPI-8接口的邏輯時(shí)序。我們研究ATMEL64L外部數(shù)據(jù)空間的讀寫(xiě)時(shí)序[2]和HPI-8接口時(shí)序[1]發(fā)現(xiàn):AVR的ALE信號(hào)在下降沿鎖存低8位地址信號(hào)(DA7:0),而HAS信號(hào)也是在下降沿鎖存HCNTL[0..1]、HBIL和HRW信號(hào)。在 AVR的WR信號(hào)的上升沿?cái)?shù)據(jù)總線(xiàn)上的數(shù)據(jù)DA7:0已處于有效狀態(tài),在RD信號(hào)的上升沿來(lái)臨時(shí)數(shù)據(jù)總線(xiàn)的數(shù)據(jù)DA7:0必須處于有效狀態(tài),同時(shí)HPI- 8的兩個(gè)數(shù)據(jù)存儲(chǔ)信號(hào)HDS1和HDS2均是在上升沿將相應(yīng)的寄存器內(nèi)容設(shè)置到HD[7..0]上或是將HD[7..0]的數(shù)據(jù)鎖存到相應(yīng)的寄存器。由此可見(jiàn)HPI-8的重要控制線(xiàn)均可以和AVR相應(yīng)的控制線(xiàn)直接相連而不需要其他邏輯電路。設(shè)計(jì)的電路原理圖見(jiàn)圖1。


               圖1 電路原理圖

當(dāng)DSP退出復(fù)位狀態(tài)后,30個(gè)有效時(shí)鐘周期內(nèi)觸發(fā)了一個(gè)有效的DSP中斷2,則DSP將僅進(jìn)入HPI的 bootloader加載方式。原理圖中將HINT引腳和DSP INT2引腳直接相連就是為了DSP復(fù)位后實(shí)時(shí)的觸發(fā)DSP INT2中斷。VC5402通過(guò)ATMEL64L的INT2中斷申請(qǐng)加載DSP程序

3.HPI bootloader方式的實(shí)現(xiàn)

3.1. DSP bootloader方式簡(jiǎn)介

DSP的bootloader模式就是將DSP的程序代碼和參數(shù)表由存儲(chǔ)位置移動(dòng)到運(yùn)行位置。之所以采用這一方式主要出于以下幾方面的考慮:

1.DSP系統(tǒng)的運(yùn)行速度很快,如果程序代碼存儲(chǔ)在訪(fǎng)問(wèn)速度較慢的非易失存儲(chǔ)器,將嚴(yán)重影響數(shù)據(jù)處理的速度。為提高效率有必要將程序代碼移動(dòng)到快速的存儲(chǔ)空間[3]。

2.將程序代碼存儲(chǔ)位置和運(yùn)行位置分開(kāi)將有利于軟件的在線(xiàn)升級(jí)。

VC5402的片內(nèi)ROM存儲(chǔ)器0xF800~0xFBFF中有TI公司固化的bootloader程序[3][4]。當(dāng)VC5402處于微計(jì)算機(jī)模式時(shí),其復(fù)位后首先執(zhí)行bootloader程序。Bootloader程序依次掃描各種加載方式,當(dāng)某一種方式滿(mǎn)足時(shí),程序停止掃描,開(kāi)始以此種方式加載DSP程序。這里我只介紹HPI方式的bootloader,其他方式的bootloader加載方法請(qǐng)參考[5-7]。當(dāng)DSP查詢(xún)到有INT2中斷發(fā)生時(shí)就進(jìn)入HPI方式的bootloader,清零0x007F存儲(chǔ)器單元,設(shè)置HINT信號(hào)向主機(jī)發(fā)送中斷請(qǐng)求。查詢(xún) 0x007F單元的內(nèi)容是否為零,當(dāng)不為零時(shí)表明DSP程序加載完畢。將0x007F單元的內(nèi)容作為程序的入口地址開(kāi)始執(zhí)行加載的DSP程序。

3.2.HPI bootloader方式的軟件實(shí)現(xiàn)框架

通過(guò)CCS將DSP源程序編譯連接成COFF文件格式得到.out文件。然后,由.out文件獲得DSP代碼的二進(jìn)制文件。在A(yíng)VR的C語(yǔ)言編輯環(huán)境ICCAVR V6.30C中采用下述方法將DSP的代碼數(shù)據(jù)配置到AVR flash空間。要注意const關(guān)鍵字使用。

  /* dsp vector section data. start address = 0x1000, length = 0x78 */
const unsigned int vector[120]={0xF073,0x3000,…,0xF495};

當(dāng)DSP進(jìn)入HPI Bootloader方式時(shí),AVR的外部中斷2產(chǎn)生。AVR響應(yīng)外部中斷2傳輸完相應(yīng)的數(shù)據(jù)段到DSP對(duì)應(yīng)的片內(nèi)存儲(chǔ)器后要撤銷(xiāo)DSP的中斷申請(qǐng)。軟件框架如下:

#pragma interrupt_handler int2_isr:4
void int2_isr(void)
{
unsigned int number;
HPIAL = 0x0f;
HPIAH = 0xff;
for(number=0;number<120;number++)    /* 傳送vector數(shù)據(jù)段 */
{
             AUTOWL = vector[number]>>8;
   AUTOWH = vector[number];
}
……                                      /* 傳送其他數(shù)據(jù)段 */
  HPIAL = 0x00;                          /* 設(shè)置DSP程序入口地址 */
HPIAH = 0x7f;
WRITEL = 0x30;
WRITEH = 0x00;
while(((PIND & 0x04)==0x00))        /* 撤銷(xiāo)DSP的中斷申請(qǐng) */
         {
HPICL = 0x0;
HPICH = 0x8;
    }
  }

4. 通信軟件設(shè)計(jì)框架

4.1. 主控器AVR命令的發(fā)布

AVR是主控器,DSP是從機(jī)。AVR和DSP之間通過(guò)DSP內(nèi)部存儲(chǔ)器的命令緩沖區(qū)和響應(yīng)標(biāo)識(shí)緩沖區(qū)交換信息。AVR觸發(fā)DSP的HPI中斷通知DSP 有新的命令,DSP通過(guò)向響應(yīng)標(biāo)識(shí)緩沖區(qū)寫(xiě)入不同的內(nèi)容向AVR表明DSP所處的狀態(tài)。AVR通過(guò)查詢(xún)的方式確定DSP的處理狀態(tài)。

AVR發(fā)布命令的程序框架:
          HPIAL = 0x00;
              HPIAH = 0x60;
              WRITEL = orderhighbyte;
              WRITEH = orderlowbyte;  /* 向命令緩沖區(qū)0x60寫(xiě)入命令*/
              HPIAL = 0x00;
              HPIAH = 0x61;
              WRITEL = orderhighparameter;
              WRITEH = orderlowparameter; /*向命令緩沖區(qū)0x61寫(xiě)入命令參數(shù)*/
              HPICL = 0x0;                   /*觸發(fā)DSP中斷*/
             HPICH = 0x4;
dsphpidata = 0x00;
HPIAL = 0x00;
HPIAH = 0x62;
while((dsphpidata != 0xaa)) /*判斷響應(yīng)標(biāo)識(shí)區(qū)0x62內(nèi)容是否為0xaaaa*/
              {
                dsphpidata = READL;
              dsphpidata = READH;
              }
……

4.2. DSP對(duì)主控器命令的執(zhí)行

AVR發(fā)給DSP的命令由DSP在HPI中斷中處理。DSP需要設(shè)置命令和響應(yīng)緩沖區(qū)、處理響應(yīng)的命令和設(shè)置響應(yīng)標(biāo)志等工作。軟件設(shè)計(jì)框架如下:

interrupt void HPINT_isr(void);
#pragma DATA_SECTION(orderbuffer,"order_sec")   /* 設(shè)置命令和響應(yīng)緩沖區(qū) */
volatile unsigned int orderbuffer[8];
……
interrupt void HPINT_isr(void)
{
         switch(order[0])
         {
              case order1:              /* 處理命令1 */
                 ……
                 orderbuffer[2] = 0xaaaa;     /* 處理完命令1,設(shè)置響應(yīng)標(biāo)志 */
              break;
              ……
          }
}

5. 結(jié)論

1)  本文詳細(xì)分析了AVR和TMS320VC5402 HPI接口通信軟硬件設(shè)計(jì),給出了硬件設(shè)計(jì)原理圖和軟件設(shè)計(jì)框架。實(shí)際測(cè)試表明該系統(tǒng)設(shè)計(jì)方案運(yùn)行可靠。

2)  利用AVR控制功能強(qiáng)、集成flash存儲(chǔ)器和DSP運(yùn)算功能強(qiáng)、程序代碼配置靈活的特點(diǎn),形成AVR和DSP之間優(yōu)勢(shì)互補(bǔ),是一個(gè)可以選擇的合理的系統(tǒng)設(shè)計(jì)方案。

3)  有些DSP芯片內(nèi)部集成的bootloader程序通過(guò)HPI口只能配置內(nèi)部存儲(chǔ)器,對(duì)于DSP程序比較大的系統(tǒng)僅僅利用集成的bootloader程序不能完成全部加載工作。此時(shí)用戶(hù)可以自行設(shè)計(jì)一個(gè)bootloader程序,將大的DSP程序加載到外部存儲(chǔ)器空間。

6.參考文獻(xiàn)
[1] Texas Instruments Inc. TMS320C54x DSP Reference Set Volume 5: Enhanced Peripherals. P182~287
[2] Atmel Incorporation. ATMEL64/ATMEL64L preliminary.
[3] Texas Instruments. TMS320VC5402 and TMS320UC5402 Bootloader.
[4] Texas Instruments. TMS320VC5402 FIXED POINT DIGITAL SIGNAL PROCESSOR data sheet.
[5] Texas Instruments. A Practical Application of the TMS320C54x Host Port Interface(HPI).
[6] 李忠,李峰. DSP編程的幾個(gè)關(guān)鍵問(wèn)題. 電子技術(shù)應(yīng)用, 2003,1:15-17.
[7] 香勇,施克仁. TMS320C54x的加載引導(dǎo). 國(guó)外電子元器件, 2003,3:4-7.

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉