深圳市瑞申电子有限公司

深圳市瑞申电子有限公司是一家10年专业大功率电感生产加工厂商,主要以大功率,大电流、扁平线圈电感、平面变压器设计、生产、销售工厂。设计、绕线、组装、检测、包装、出货等全制程的工艺流程!拥有完整、科学的质量管理体系。专业技术团队10人,我们的诚信、实力和产品质量获得业界的认可。欢迎各界朋友莅临参观、指导和业务洽谈。 ...

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

时间:2015-03-28 14:24:21 点击:

在实时嵌入式控制系统中,指令周期对系统的性能有至关重要的影变压器与电感器设计手册响。介绍几种最常用的微控制器的工作机制,采用一段循环语句功率电感对这几种微控制器的指令周期进行测试,并进行分析比较。分析结论对系统控制器的选择有一定的指导作用。

关键词 指令周期测试 AT89S51 LPC2114 TMS320F2812

  在实时控制系统中,选择微控制器的指标时最重要的是计算速度的问题。指令周期是反映计算速度的一个重要指标,为此本文对三种最具代表性的微控制器(AT89S51单片机、ARM7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和测试。为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置位和清零,通过观察GPIO口的波形变化得到整个循环的周期。为了将整个循环的周期与具体的每一条指令的指令周期对应起来,通过C语言源程序得到汇编语言指令来计算每一条汇编语言的指令周期。

1 AT89S51工作机制及指令周一体电感期的测试

  AT89S51单片机的时钟采用内部方式,时钟发生器对振荡脉冲进行2分频。由于时钟周期为振荡周期的两倍(时钟周期=振荡周期P1+振荡周期P2),而1个机器周期含有6个时钟,因此1个机器周期包括12个晶振的振荡周期。取石英晶振的振荡频率为11.059 2 MHz,则单片机的机器周期为12/11.059 2=1.085 1 μs。51系列单片机的指令周期一般含1绕行电感~4个机器周期,多数指令为单周期指令,有2周期和4周期指令。

  为了观察指令周期,对单片机的P1口的最低位进行循环置位操作和清除操作。源程序如下:

#include<reg51.h>
main() {
  while(1) {
    P1=0x01;
    P1=0x00;
  }
}

  采用KEIL uVISION2进行编译、链接,生成可执行文件。当调用该集成环境中的Debug时,可以得到上述源程序混合模式的反汇编代码:

    2:main()
    3: {
    4:while(1)
    5:{
    6:P1=0x01;
  0x000F759001MOVP1(0x90),#0x01
    7:P1=0x00;
  0x0012 E4CLRA
  0x0013 F590MOVP1(0x90),A
    8:}
  0x001580EDSJMPmain (C:0003)

  其中斜体的代码为C源程序,正体的代码为斜体C源程序对应的汇编语言代码。每行汇编代码的第1列为该代码在存储器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。所有指令共占用6个机器周期(其中“MOV P1(0x90),#0x01”占用2个机器周期,“CLR A”和“MOV P1(0x90),A”各占用1个机器周期,最后一个跳转指令占用2个机器周期),则总的循环周期为6×机器周期=6×1.085 1 μs=6.51 μs。

按此在新窗口浏览图片
图1 P1口最低位的波形

  将编译、链接生成的可执行文件下载到AT89S51的Flash中执行可以得到P1口最低位的波形,如图1所示。整个循环周期为6.1 μs,与上面的分析完全一致。

2 LPC2114工作机制及指令周期的测试

  LPC2114是基于ARM7TDMI核的可加密的单片机,具有零等待128 KB的片内Flash,16 KB的SRAM。时钟频率可达60 MHz(晶振的频率为11.059 2 MHz,时钟频率设置为11.059 2×4 =44.236 8 MHz,片内外设频率为时钟频率的1/4,即晶振的频率)。ARM7TDMI核通过使用三级流水线和大量使用内部寄存器来提高指令流的执行速度,能提供0.9 MIPS/MHz的指令执行速度,即指令周期为1/(0.9×44.236 8)=0.025 12 μs,约为25 ns。

  为了观察指令周期,将LPC2114中GPIO的P0.25脚设置为输出口,并对其进行循环的置位操作和清除操作。C源程序如下:

  #include"config.h"
  //P0.25引脚输出
  #defineLEDCON0x02000000
  intmain(void)
  {//设置所有引脚连接GPIO
    PINSEL0 = 0x00000000;
    PINSEL1 = 0x00000000;
    //设置LED4控制口为输出
    IO0DIR = LEDCON;
    while(1)
    {IO0SET = LEDCON;
      IO0CLR = LEDCON;
    }
  return(0);
}

  采用ADS1.2进行编译、链接,生成可执行文件。当调用AXD Debugger时,可以得到上述源程序的反汇编代码:

  main[0xe5功率电感器9f1020]ldrr1,0x40000248 大功率电感厂家 |大电流电感工厂

  • FPGA中软FIFO设计和实现
    摘要:在现代电路设计中,一个系统往往包含了多个时钟,如何在异步时钟间传递数据成为一个很重要的问题,而使用异步FIFO可以有效地解决这个问题。异步FIFO是一种在电子系统中得到广泛应用的器件,文中介绍了
  • 宽带数字接收机的研究及实现
    1 引言 软件无线电是一种基于高速、高精度A/D转换器与高速FPGA/DSP器件,并以软件为核心的崭新体系结构。受A/D转换器制约,直接采样处理射频信号有一定难度,因此目前普遍采用中频数字化方案:射频
  • 功率电感:电源设计中的电容应用(一)
    电源往往是我们在电路设计过程中最容易忽略的环节。其实,作为一款优秀的设计,电源设计应当是很重要的,它很大程度影响了整个系统的性能和成本。 这里,只介绍一下电路板电源设计中的电容使用情况。这往往又
  • 大功率电感