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 |
在兩次操作之間插入延時函數(shù),分別延時delay(1)、delay(2)、delay(3)、delay(4)。測試延時函數(shù)如下:
void delay(uchar cnt)
{
uchar i =0;
while(i < cnt)
{
i++;
}
}
由于delay()函數(shù)調(diào)用一次會有一些額外開銷(如賦初值等),所以我們通過不同延時值的實際延時差來看指令運行的速度。換句話說,對前面的程序,可以通過每次delay()函數(shù)的差值來計算每多執(zhí)行一次i++和一次i
特權同學曾使用相同條件測試了51單片機,通常11.0592MHz下工作的51單片機每多執(zhí)行一次i++和一次i
延時函數(shù)
|
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 |
簡單的一些性能測試,發(fā)現(xiàn)這個51硬核還是有花頭的,至于穩(wěn)定性和可靠性上還需繼續(xù)驗證和嘗試。當然,本文的測試是使用了片內(nèi)的存儲器作為代碼和數(shù)據(jù)存儲,實際速度性能和存儲器的性能關系非常大,是需要進一步考核的項目。