IO口速度測(cè)試,使用以下程序測(cè)試高電平脈寬。
while(1)
{
P0 = 0xf;
P0 = 0x0;
}
同等條件下與其他MCU比較:
單片機(jī)/處理器
|
工作頻率
|
高脈沖寬度
|
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í)函數(shù),分別延時(shí)delay(1)、delay(2)、delay(3)、delay(4)。測(cè)試延時(shí)函數(shù)如下:
void delay(uchar cnt)
{
uchar i =0;
while(i < cnt)
{
i++;
}
}
由于delay()函數(shù)調(diào)用一次會(huì)有一些額外開銷(如賦初值等),所以我們通過(guò)不同延時(shí)值的實(shí)際延時(shí)差來(lái)看指令運(yùn)行的速度。換句話說(shuō),對(duì)前面的程序,可以通過(guò)每次delay()函數(shù)的差值來(lái)計(jì)算每多執(zhí)行一次i++和一次i
特權(quán)同學(xué)曾使用相同條件測(cè)試了51單片機(jī),通常11.0592MHz下工作的51單片機(jī)每多執(zhí)行一次i++和一次i
延時(shí)函數(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 |
簡(jiǎn)單的一些性能測(cè)試,發(fā)現(xiàn)這個(gè)51硬核還是有花頭的,至于穩(wěn)定性和可靠性上還需繼續(xù)驗(yàn)證和嘗試。當(dāng)然,本文的測(cè)試是使用了片內(nèi)的存儲(chǔ)器作為代碼和數(shù)據(jù)存儲(chǔ),實(shí)際速度性能和存儲(chǔ)器的性能關(guān)系非常大,是需要進(jìn)一步考核的項(xiàng)目。