咔咔特 发表于 2013-8-16 10:17:21

请教:66.67M的主频Xilinx MicroBlaze,指令周期竟然达到250ns

Xilinx Spartan6 搭建的MicroBlaze +PLB+外围IP 的嵌入式系统,MicroBlaze有Data Cache及Instruction Cache,系统时钟是66.666667MHz。用于采集ADC数据。

运行时,发现数据采集率极低,后查看指令周期,惊人的将近250纳秒,不到5MHZ呀,与66.666667MHz相差甚远。(系统时钟验证过,是66.666667MHz无误。)

本人初次使用FPGA来做项目,无甚经验,请各位指点和帮忙分析,谢谢!{:smile:}

zkf0100007 发表于 2013-8-16 12:55:21

没那么慢吧,你是怎么查看的 ?

咔咔特 发表于 2013-8-17 16:29:32

zkf0100007 发表于 2013-8-16 12:55 static/image/common/back.gif
没那么慢吧,你是怎么查看的 ?

I/O输出高低电平,用示波器抓取波形,计算时间,以及此时间内所执行的汇编指令数。平均算出大概每条指令的时间。

kevinstar888 发表于 2013-8-17 17:04:56

本帖最后由 kevinstar888 于 2013-8-17 17:07 编辑

{:titter:}

zchong 发表于 2013-8-17 17:22:47

1、建议直接用定时器测量;
2、IO本身有时候速度很慢,需要加大IO翻转之间的指令数,建议时间至少ms级;
3、cache增加了测试的复杂性,程序设计不当可能造成性能下降,建议关闭cache测试

mcupro 发表于 2013-8-18 17:12:19

指令周期和时钟周期不一定一样。比方说传统的8051,12个机器周期才运行一条指令。使用12M频率时钟时候指令周期才是1MHZ,12个机器周期运行了一条指令,周期/指令=12也就是CPI =12 。( CPI : CYCLE PER INSTRUCTION) 。

咔咔特 发表于 2013-8-18 23:21:29

zchong 发表于 2013-8-17 17:22 static/image/common/back.gif
1、建议直接用定时器测量;
2、IO本身有时候速度很慢,需要加大IO翻转之间的指令数,建议时间至少ms级;
3 ...

3:IO操作不涉及cashe
2:IO的速度10纳秒级别的,这个已经验证。
1:定时器测量,未验证过

zxq6 发表于 2013-8-19 00:02:38

你都用fpga了,有的工作就应该通过硬件完成

kallunjh 发表于 2014-4-22 17:11:33

本人现在遇到和你一样的问题,测microblaze GPIO频率只要5M左右 。请问你后来是怎么解决的?

licheng0620 发表于 2014-4-22 17:40:09

AD采样速度不能与主频相提并论的吧

kallunjh 发表于 2014-4-24 13:20:28

licheng0620 发表于 2014-4-22 17:40
AD采样速度不能与主频相提并论的吧

while (1)
{

       (*(volatile u32 *)((XPAR_LED_BASEADDR)) = (0x0));
      for (Delay = 0; Delay < 50000; Delay++);
      
      (*(volatile u32 *)((XPAR_LED_BASEADDR)) = (0xFFFFFFFF));
      for (Delay = 0; Delay < 50000; Delay++);
}


用示波器测的频率为62Hz, 换算成系统时钟也就6M多。输入时钟为50M ,为什么指令周期这么长?

yyts 发表于 2014-4-24 13:33:29

要不你这样试一下,执行100条,或1000条指使才翻转一次IO试一下.

stdio 发表于 2014-4-24 15:10:07

1.要看汇编代码来计算指令数
2.IO指令通过AHB/APB的时候,存在等待周期
3.我的方法:1000条NOP指令+一个IO指令
4.这种复杂的内核,影响速度的因素很多,CACHE、流水线、总线,以及中断等等,拿来做强实时的活,要慎重

楼主能不能晒晒你的测试代码看看?
页: [1]
查看完整版本: 请教:66.67M的主频Xilinx MicroBlaze,指令周期竟然达到250ns