This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

菜鸟:C6748的一个机器周期是多少个时钟周期?



以经过PLL之后产生的SYSCLK1时钟为准,

1、一个机器周期等于多少个PLL0_SYSCLK1的周期?

2、然后 语句 for(i=10000000;i>0;i--) ;  执行一次空的循环 , 又需要多少个机器周期?

3、C6748的最大375M/475M是指PLL0_SYSCLK1吧?

我算了一下,我的for(i=10000000;i>0;i--) ; 循环一次(注意不是10000000次),大概需要0.75ms,是不是有点儿慢啊

  • 更正一下是0.75us.

  • 1. 一个机器周期等于一个PLL0_SYSCLK1.

    2. 根据汇编窗口里这句循环语句对应的汇编代码算一下。

    3. 是的。

    4. 0.75us是怎么算出来的?这段代码是放在片外还是片内执行的?

  • baokun hu 说:
    2、然后 语句 for(i=10000000;i>0;i--) ;  执行一次空的循环 , 又需要多少个机器周期?

    我想这个链接应该是你关心的:

    http://processors.wiki.ti.com/index.php/Profile_clock_in_CCS

  • for(;;)

    {

    // 延时
    Delay(0x00FFFFFF);
    GPIOPinWrite(SOC_GPIO_0_REGS, 61, GPIO_PIN_HIGH); 
    // 延时
    Delay(0x00FFFFFF);
    GPIOPinWrite(SOC_GPIO_0_REGS, 61, GPIO_PIN_LOW); 
    }

    void Delay(unsigned int n)
    {
        unsigned int i;

        for(i=n;i>0;i--);
    }

    然后用示波器量了一下相应引脚,高低电平的时间各为12.6s,而Delay(0x00FFFFFF);相当于循环了16777215次,对应一次时间为0.75us,因为12.6s时间比较长,所以误差应该不大。

    我是通过UART2将程序下载到DSP的RAM里面来跑的(加密芯片还没解锁JTAG,先试试程序能不能运行),我在.ini文件里设置DDR2的参数了,具体下载到DSP的内部RAM里面,还是DDR2的接口DRAM里面我也不清楚,新手。

  • 你的程序跑在哪是由工程里的cmd文件决定的!

    芯片的效率要充分利用芯片的架构优化,这样比没有任何意义。C6000有8个功能单元,代码经过编译器的优化,理论最高效率可以达到一个周期运行8条指令。不加优化选项编译,无论是什么处理器,最多就是一条。

    这样比的结果就是看谁的主频高,内部总线delay,而且结果可能X86还没有单片机快。