微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 8051、ARM和DSP指令周期的测试与分析

8051、ARM和DSP指令周期的测试与分析

时间:04-19 来源: 点击:


图4 GPIO的P0.25脚输出波形3

  其中最重要的是要对通用输入/输出进行初始化和确定系统CPU时钟。其中系统的时钟通过PLL设定为100 MHz,而初始化 InitGpio() 的源程序为:

#include "DSP28_Device.h"
void InitGpio(void)
{ EALLOW;
  //多路复用器选为数字I/O
  GpioMuxRegs.GPAMUX.all=0x0000;
  //GPIOAO为输出,其余为输入
  GpioMuxRegs.GPADIR.all=0x0001;
  GpioMuxRegs.GPAQUAL.all=0x0000;
  EDIS;
}

  通过在主程序for(;;)的地方加断点,可以很容易找到上面主程序中循环部分程序编译后的汇编指令:

  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列为机器码,后面就是汇编语言程序。指令"MOV @32,#0xFFFF"使GPIO输出高电平,指令"MOV @32,#0"使GPIO输出低电平。其中含有6个使GPIOA0输出高电平的指令和3个使GPIOA0输出低电平的指令,系统的指令周期为10 ns,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SARAM中进行调试,可得GPIOA0的波形,如图5所示。其中高电平时间正好为60 ns。注意,由于3个低电平之后要进行跳转,故清空流水线的周期要长一些。


图5 TMS320F2812中GPIOA0的波形1

  为了观察乘法指令的周期,将上述循环部分的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;
}

  上述程序经过编译、链接后的汇编指令如下:

  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个指令周期(其中包括1个乘法指令),因为乘法指令也是单周期的,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SARAM中进行调试可得GPIOA0的波形,如图6所示。其中高电平时间正好为60 ns,而由于3个低电平之后要进行跳转,要清空流水线,而且还要为乘法做准备,因此保持低电平的时间比图5所需的时间要长。当采用数字式示波器观察时,如果探头采用×1档观察的波形不是很理想,则可以采用×10档,并配合调节探头的补偿旋钮。


图6 TMS320F2812中GPIOA0的波形2

4 三种微处理器的比较

  首先要强调的是,这几种微控制器都可以通过提高晶振的振荡频率来缩短指令周期,但是这些控制器的振荡频率是有一定限制的,例如单片机不超过40 MHz,而LPC2114的频率不超过60 MHz,TMS320F2812的最高频率为150 MHz。在同样的工作频率下,ARM指令运行的指令周期远远高于传统的单片机。 因为传统的单片机没有采用流水线机制,而ARM核和DSP都采用了流水线,但是由于访问外设和RAM等存储器要加一定的时钟周期,因此ARM不是真正可以实现单周期运行的,特别是不能实现单周期的乘法指令,而DSP可以实现真正的单周期乘法指令,速度要远远高于ARM微控制器。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top