微秒级延时函数
-
Perf-V这块板子的微秒级延时函数应该怎么实现呢?
-
@si 蜂鸟E203内联函数的具体使用方法可以查阅他们的书
-
@zhangyue 那对于Perf-V上的E203来说,这个就应该是这样的,对吧?
-
@zhangyue 感谢!
-
如果需要用C实现的话就要看你具体用哪个软核了,然后使用内联汇编让core跑数个空指令来度过一段时间。
下面给出一个参考void delay_10x(uint32_t cnt) { u32 i = 0; cnt *= 625; /* (600MHz:1000 loops = 16us),这里的600MHz是core的时钟频率,需求延时多久修改cnt即可 */ for (i = 0; i < cnt; i++) __asm__ __volatile__ ("nop"); }
-
如果用FPGA 实现的话,可以定义一个寄存器作为计数器使用,板子上有50Mhz的晶振,每个时钟周期的长度是20ns,需要延时多久就计数多少次这样
贴个博客上看到的代码参考一下
reg [23:0] count;
always @(posedge clk )
begin
if(count=24'd9_000_000)
count<=24'b0;
else
count<=count+1'b1;
end
always @(posedge clk )
begin
if(count==24'd9_000_000)
b<=a;
end