请教: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 static/image/common/back.gif
没那么慢吧,你是怎么查看的 ?
I/O输出高低电平,用示波器抓取波形,计算时间,以及此时间内所执行的汇编指令数。平均算出大概每条指令的时间。 本帖最后由 kevinstar888 于 2013-8-17 17:07 编辑
{:titter:} 1、建议直接用定时器测量;
2、IO本身有时候速度很慢,需要加大IO翻转之间的指令数,建议时间至少ms级;
3、cache增加了测试的复杂性,程序设计不当可能造成性能下降,建议关闭cache测试 指令周期和时钟周期不一定一样。比方说传统的8051,12个机器周期才运行一条指令。使用12M频率时钟时候指令周期才是1MHZ,12个机器周期运行了一条指令,周期/指令=12也就是CPI =12 。( CPI : CYCLE PER INSTRUCTION) 。
zchong 发表于 2013-8-17 17:22 static/image/common/back.gif
1、建议直接用定时器测量;
2、IO本身有时候速度很慢,需要加大IO翻转之间的指令数,建议时间至少ms级;
3 ...
3:IO操作不涉及cashe
2:IO的速度10纳秒级别的,这个已经验证。
1:定时器测量,未验证过 你都用fpga了,有的工作就应该通过硬件完成 本人现在遇到和你一样的问题,测microblaze GPIO频率只要5M左右 。请问你后来是怎么解决的? AD采样速度不能与主频相提并论的吧 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 ,为什么指令周期这么长? 要不你这样试一下,执行100条,或1000条指使才翻转一次IO试一下. 1.要看汇编代码来计算指令数
2.IO指令通过AHB/APB的时候,存在等待周期
3.我的方法:1000条NOP指令+一个IO指令
4.这种复杂的内核,影响速度的因素很多,CACHE、流水线、总线,以及中断等等,拿来做强实时的活,要慎重
楼主能不能晒晒你的测试代码看看?
页:
[1]