[DSP]/DSP280x2008. 1. 30. 01:31

[TMS320F2808]성능 테스트 - GPIO 토글링 테스트

[TMS320F2808]성능 테스트 - GPIO 토글링 테스트


GPIO 토글테스트로 TMS320F2808의 성능 테스트를 해보았다. 단순 페리 속도로 CPU의 성능을 테스트 하기는 좀 그렇지만... 아무래도 주로 MPU로 하는 일들이 GPIO로 제어하는 일이 많으므로 [다른 MCU속도 측정 결과] 비교를 위해 GPIO테스트를 해보면 편하다.

일단 가장 간단히 GPIO를 단순히 비트 XOR시켜 속도를 측정했다. TMS320F2808 @20Mhz에서 RAM에 올려 100Mhz코어로 설정.
#define LED0_TOGGLE()  (GpioDataRegs.GPADAT.bit.GPIO6 ^= 1)

측정 결과 대략 180ns (2.94Mhz)가 나온다.
컴파일러의 옵션에 따라 차이는 있겠지만 100Mhz라기에는 좀... 느리다.
어셈블 코드를 보니 역시... 옵티마이즈가 전혀 안되어 있다. 루프도는데 이렇게 무식하게...



TMS320에는 GPIO Toggle Register가 있으므로 이걸 이용해 보자. 역시.. 3줄이면 된다.
테스트 결과 GPIO 토글 속도는 100ns(5.5Mhz) 가 출력된다.



이제야 어느정도 정상 출력되는것 같다.

컴파일 옵션을 최적화해서 테스트 하니 70ns(7.13Mhz) 까지 출력된다.
Posted by nexp

댓글을 달아 주세요

[8051]2006. 6. 13. 20:33

Aduc841 속도 측정 - Aduc841, 8051, AVR 속도 비교

Aduc841 속도 측정 - Aduc841, 8051, AVR 속도 비교

Aduc841 301ns @20Mhz



같은 코드로 측정시 AVR (316ns)과 비교 해서 300ns이므로 AVR에 비해 코드 효율이 좀 떨어지는것 같다. 하지만 기존 8051에 비해서는 상당한 속도향상을 보이고 있다. AVR속도 측정 참고

Standard 8051(11.0592Mhz) P1 On/Off 출력. (4.3us)



Atmega128(16Mhz) PB On/Off 출력. (316ns)

Posted by nexp

댓글을 달아 주세요

[AVR]/AVR_EVM2006. 6. 12. 20:21

Atmega128을 이용하여 CPU실행속도 측정 테스트

Atmega128을 이용하여 CPU실행속도 측정 테스트

단순히 포트 On/Off만을 이용하여 실행 속도를 테스트 하였다.

int main(void)
{

    DDRB = 0xFF;

    while(1)
    {

        PORTB ^= 0xFF;

    }

    return 0;
}

8FEF ldi r24,lo8(-1)

87BB out 55-0x20,r24

L17:

88B3    in r24,56-0x20

8095     com r24 ;$FF-r24

88BB     out 56-0x20,r24

FCCF     rjmp .L17 ;(2cycle)

포트를 On/Off 하기위해 5cycle의 CPU클럭이 필요 하므로

1CPU 클럭 : 1/16Mhz = 62ns

On/Off주가 : 62ns x 5 = 310ns




실제 오실로스코프 확인 결과
Atmega128(16Mhz) PD On/Off 출력. (316ns)




AVR(atmega163 8Mhz) P1 On/Off 출력. (6.36us)



(8051, Aduc841 속도 측정 테스트 참고)
Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STR72006. 6. 2. 15:03

STR7 클럭 시스템 및 GPIO속도 테스트

STR7 클럭 시스템 및 GPIO속도 테스트


STR7 GPIO 토글로 플래시 메모리에서 테스트 했다.
 
4Mhz x 4 = 48Mhz :
375ns(1.3Mhz)
 
오버클럭으로..
4Mhz x 4 = 64Mhz :
281ns(1.77Mz)

 
[다른 MCU속도 측정 결과] 에 비교하면 AVR보다 조금 빠르군..

 
테스트 코드  
GPIO_Config(GPIO1, (0x01<<10), GPIO_OUT_PP);

 while(1)
 {
  GPIO1->PD ^= (0x01<<10);
 }
}
 
PLL 셋팅 
void PLL_init(void)
{
 //Configure the Clock
 RCCU_PLL2Config(RCCU_PLL2_Mul_16, RCCU_Div_1);
 RCCU_USBCLKConfig(RCCU_PLL2_Output);
 
 //PLL configuration
 RCCU_Div2Config(DISABLE);        // 4M(INPUT CLOCK) /1 = 4M
 RCCU_PLL1Config (RCCU_PLL1_Mul_16 , RCCU_Div_1 );    // Configure the PLL1 (4 * 12 , /1)
  RCCU_RCLKSourceConfig ( RCCU_PLL1_Output ) ;   // Select PLL1_Output as RCLK clock(48MHz)
 RCCU_MCLKConfig ( RCCU_DEFAULT );        // Configure MCLK(48MHz) = RCLK
 RCCU_FCLKConfig ( RCCU_DEFAULT );        //RCCU_RCLK_2 Configure FCLK(24MHz) = RCLK /1
 RCCU_PCLKConfig ( RCCU_DEFAULT );        // Configure PCLK(48MHz) = RCLK /1
}


STR7 블럭다이어 그램
GPIO는 APB2에 연결되어 있다.



클럭 시스템



최대 클럭 설정
GPIO의 PLCK최대 클럭은 33Mhz로 그리 높지는 않다..

Posted by nexp

댓글을 달아 주세요