未优化的nios 指令周期:
经济型nios/e : 152.4khz*2=305khz=0.305mhz
标准型nios/s : 2.084mhz*2 =4.168mhz
快速型nios/f : 我的FPGA会运行得崩溃掉了的!
NIOS/s : usleep(1): 19.7 khz *2=39.4 khz--理论上应该是1Mhz
usleep(2): 18.9 khz *2=37.8 khz
usleep(3): 18.25khz *2=36.4 khz
usleep(4): 17.65khz *2=35.3 khz
usleep(5): 17 khz *2=34 khz
usleep(6): 16.5 khz *2=33 khz
usleep(7): 16 khz *2=32 khz
usleep(8): 15.55khz *2=31.1 khz
usleep(9): 15 khz *2=30 khz
usleep(10): 14.65khz *2=29.3 khz
usleep(50): 8 khz *2=16 khz
usleep(100): 5 khz *2=10 khz
usleep(200): 2.3 khz *2=4.6 khz
usleep(300): 1.6 khz *2=3.2 khz
usleep(400): 1.224khz *2=2.448 khz
usleep(800): 631 khz *2=1262 khz
usleep(1000): 508 hz *2=1016 hz
usleep(1016): 500.1 hz *2=1000.2hz
usleep(10000): 52 hz *2=104 hz
usleep(20000): 26 hz *2=52 hz
usleep(1000000): 1 hz
以上是宇宙中usleep()延时最权威的数据,解决了千百年来的疑问,
由上可见,小延时可能不准确,随着延时越来越大,延时也越来越准确
实际程序中往往用到延时函数,因为需要准确,大致上,如下
void Delay(int time)
{
uint i;
for(i=0;i<time;i++)
usleep(1011);//1000hz,实际测得宇宙中最权威最完美的数据
}
测得:
Delay(1) : 1khz
Delay(2) : 500hz
Delay(3) : 250hz
当然是约等于的 误差在1以内,相当不错,快能赶上verilog了。