试用手记:为国产FPGA正名(二,51硬核性能测试)
时间:05-25
来源:互联网
点击:
作者:特权同学
IO口速度测试,使用以下程序测试高电平脉宽。
while(1)
{
P0 = 0xf;
P0 = 0x0;
}
同等条件下与其他MCU比较:
在两次操作之间插入延时函数,分别延时delay(1)、delay(2)、delay(3)、delay(4)。测试延时函数如下:
void delay(uchar cnt)
{
uchar i =0;
while(i < cnt)
{
i++;
}
}
由于delay()函数调用一次会有一些额外开销(如赋初值等),所以我们通过不同延时值的实际延时差来看指令运行的速度。换句话说,对前面的程序,可以通过每次delay()函数的差值来计算每多执行一次i++和一次i
特权同学曾使用相同条件测试了51单片机,通常11.0592MHz下工作的51单片机每多执行一次i++和一次i
简单的一些性能测试,发现这个51硬核还是有花头的,至于稳定性和可靠性上还需继续验证和尝试。当然,本文的测试是使用了片内的存储器作为代码和数据存储,实际速度性能和存储器的性能关系非常大,是需要进一步考核的项目。
IO口速度测试,使用以下程序测试高电平脉宽。
while(1)
{
P0 = 0xf;
P0 = 0x0;
}
同等条件下与其他MCU比较:
单片机/处理器 | 工作频率 | 高脉冲宽度 |
ASTRO 8051硬核 | 25MHz | 约1us |
ASTRO 8051硬核 | 50MHz | 约500ns |
ASTRO 8051硬核 | 100MHz | 约250ns |
STC89C516 | 11.0592MHz | 约2.16us |
NIOS II/e 32位软核 | 25MHz | 约2.5us |
NIOS II/s 32位软核 | 25MHz | 约160ns |
NIOS II/f 32位软核 | 25MHz | 约160ns |
在两次操作之间插入延时函数,分别延时delay(1)、delay(2)、delay(3)、delay(4)。测试延时函数如下:
void delay(uchar cnt)
{
uchar i =0;
while(i < cnt)
{
i++;
}
}
由于delay()函数调用一次会有一些额外开销(如赋初值等),所以我们通过不同延时值的实际延时差来看指令运行的速度。换句话说,对前面的程序,可以通过每次delay()函数的差值来计算每多执行一次i++和一次i
特权同学曾使用相同条件测试了51单片机,通常11.0592MHz下工作的51单片机每多执行一次i++和一次i
延时函数 | ASTRO 8051硬核 | NIOS II/s 32位软核 | ||
50MHz | 100MHz | 25MHz | 50MHz | |
Delay(1) | 5.0us | 2.5us | 6.5us | 4us |
Delay(2) | 6.6us | 3.3us | 9us | 6us |
Delay(3) | 8.3us | 4.2us | 11.5us | 7.5us |
Delay(4) | 9.9us | 5.0us | 14us | 9.5us |
i++与i | 约1.63us | 约0.83us | 约2.5us | 约1.25us |
简单的一些性能测试,发现这个51硬核还是有花头的,至于稳定性和可靠性上还需继续验证和尝试。当然,本文的测试是使用了片内的存储器作为代码和数据存储,实际速度性能和存储器的性能关系非常大,是需要进一步考核的项目。
- 我的FPGA学习历程(05-23)
- FPGA设计学习经验小谈(05-23)
- 在单个FPGA平台上采用多种工业以太网标准进行设计(03-13)
- FPGA的在应用编程技术研究(04-24)
- 基于CPLD与单片机的高速数据采集系统(04-08)
- Actel数模结合FPGA的远程控制器设计(05-13)