<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 8051、ARM和DSP指令周期的測試與分析方法

8051、ARM和DSP指令周期的測試與分析方法

作者: 時(shí)間:2012-05-24 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257487.htm

3 TMS320F2812工作機制及測試

TMS320F2812是TI公司的一款用于控制的高性能和高性?xún)r(jià)比的32位定點(diǎn)芯片。該芯片最高可在150 MHz主頻下工作(本文將其設置到100 MHz),并帶有18K×16位0等待周期片上SRAM和128K×16位片上Flash(存取時(shí)間為36 ns)。TMS320F2812采用哈佛總線(xiàn)結構,即在同一個(gè)時(shí)鐘周期內可同時(shí)進(jìn)行一次取指令、讀數據和寫(xiě)數據的操作,同時(shí)TMS320F2812還通過(guò)采用8級流水線(xiàn)來(lái)提高系統指令的執行速度。

為了觀(guān)察,對TMS320F2812的GPIOA0進(jìn)行循環(huán)的置位操作和清除操作。C源程序如下:

#include 28_Device.h
void main(void) {
  InitSysCtrl();/*初始化系統*/
  DINT;/*關(guān)中斷*/
  IER = 0x0000;
  IFR = 0x0000;
  InitPieCtrl();/*初始化PIE控制寄存器*/
  InitPieVectTable();/*初始化PIE矢量表*/
  InitGpio();/*初始化EV*/
  EINT;
  ERTM;
  for(;;) {
    GpioDataRegs.GPADAT.all=0xFFFF;
    GpioDataRegs.GPADAT.all=0xFFFF;
    GpioDataRegs.GPADAT.all=0xFFFF;
    GpioDataRegs.GPADAT.all=0x0000;
    GpioDataRegs.GPADAT.all=0x0000;
    GpioDataRegs.GPADAT.all=0x0000;
  }
}



圖4 GPIO的P0.25腳輸出波形3

其中最重要的是要對通用輸入/輸出進(jìn)行初始化和確定系統CPU時(shí)鐘。其中系統的時(shí)鐘通過(guò)PLL設定為100 MHz,而初始化 InitGpio() 的源程序為:

#include 28_Device.h
void InitGpio(void)
{ EALLOW;
  //多路復用器選為數字I/O
  GpioMuxRegs.GPAMUX.all=0x0000;
  //GPIOAO為輸出,其余為輸入
  GpioMuxRegs.GPADIR.all=0x0001;
  GpioMuxRegs.GPAQUAL.all=0x0000;
  EDIS;
}

通過(guò)在主程序for(;;)的地方加斷點(diǎn),可以很容易找到上面主程序中循環(huán)部分程序編譯后的匯編指令:

  3F8011 L1:
  3F8011761FMOVWDP,#0x01C3
  3F8013 2820 MOV@32,#0xFFFF
  3F8015 2820 MOV@32,#0xFFFF
  3F8017 2820 MOV@32,#0xFFFF
  3F8019 2820 MOV@32,#0xFFFF
  3F801B 2820 MOV@32,#0xFFFF
  3F801D 2820 MOV@32,#0xFFFF
  3F801F 2B20 MOV@32,#0
  3F8020 2B20 MOV@32,#0
  3F8021 2B20 MOV@32,#0
  3F8022 6FEF SBL1,UNC

其中第1列為程序在RAM中的位置,第2列為機器碼,后面就是匯編語(yǔ)言程序。指令“MOV @32,#0xFFFF”使GPIO輸出高電平,指令“MOV @32,#0”使GPIO輸出低電平。其中含有6個(gè)使GPIOA0輸出高電平的指令和3個(gè)使GPIOA0輸出低電平的指令,系統的為10 ns,因此循環(huán)周期中保持高電平的時(shí)間為60 ns。通過(guò)將該程序放在H0 SARAM中進(jìn)行調試,可得GPIOA0的波形,如圖5所示。其中高電平時(shí)間正好為60 ns。注意,由于3個(gè)低電平之后要進(jìn)行跳轉,故清空流水線(xiàn)的周期要長(cháng)一些。


圖5 TMS320F2812中GPIOA0的波形1

為了觀(guān)察乘法指令的周期,將上述循環(huán)部分的C源程序修改為:

for(;;)
{Uint16 test1,test2,test3;
  test1=0x1234; test2=0x2345;
  GpioDataRegs.GPADAT.all=0xFFFF;
  GpioDataRegs.GPADAT.all=0xFFFF;
  GpioDataRegs.GPADAT.all=0xFFFF;
  test3=test1*test2;
  GpioDataRegs.GPADAT.all=0x0000;
  GpioDataRegs.GPADAT.all=0x0000;
  GpioDataRegs.GPADAT.all=0x0000;
}

上述程序經(jīng)過(guò)編譯、鏈接后的匯編指令如下:

  3F8012L1:
  3F80122841MOV*-SP[1],#0x1234
  3F8014 2842 MOV*-SP[2],#0x2345
  3F8016 761F MOVWDP,#0x01C3
  3F8018 2820 MOV@32,#0xFFFF
  3F801A 2820 MOV@32,#0xFFFF
  3F801C 2820 MOV@32,#0xFFFF
  3F801E 2D42 MOVT,*-SP[2]
  3F801F 1241 MPYACC,T,*-SP[1]
  3F8020 9643 MOV*-SP[3],AL
  3F8021 2B20 MOV@32,#0
  3F8022 2B20 MOV@32,#0
  3F8023 2B20 MOV@32,#0
  3F8024 6FEE SBL1,UNC

其中使GPIOA0為高電平的指令仍然為6個(gè)指令周期(其中包括1個(gè)乘法指令),因為乘法指令也是單周期的,因此循環(huán)周期中保持高電平的時(shí)間為60 ns。通過(guò)將該程序放在H0 SARAM中進(jìn)行調試可得GPIOA0的波形,如圖6所示。其中高電平時(shí)間正好為60 ns,而由于3個(gè)低電平之后要進(jìn)行跳轉,要清空流水線(xiàn),而且還要為乘法做準備,因此保持低電平的時(shí)間比圖5所需的時(shí)間要長(cháng)。當采用數字式示波器觀(guān)察時(shí),如果探頭采用×1檔觀(guān)察的波形不是很理想,則可以采用×10檔,并配合調節探頭的補償旋鈕。



圖6 TMS320F2812中GPIOA0的波形2

4、 三種微處理器的比較

首先要強調的是,這幾種微控制器都可以通過(guò)提高晶振的振蕩頻率來(lái)縮短指令周期,但是這些控制器的振蕩頻率是有一定限制的,例如單片機不超過(guò)40 MHz,而LPC2114的頻率不超過(guò)60 MHz,TMS320F2812的最高頻率為150 MHz。在同樣的工作頻率下,指令運行的指令周期遠遠高于傳統的單片機。因為傳統的單片機沒(méi)有采用流水線(xiàn)機制,而核和DSP都采用了流水線(xiàn),但是由于訪(fǎng)問(wèn)外設和RAM等存儲器要加一定的時(shí)鐘周期,因此不是真正可以實(shí)現單周期運行的,特別是不能實(shí)現單周期的乘法指令,而DSP可以實(shí)現真正的單周期乘法指令,速度要遠遠高于A(yíng)RM微控制器。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: DSP 指令周期 ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>