问题背景
这段代码于我而言首次出现在利用FPGA生成PN码的序列当中。生成PN码,通常需要一个系统钟和一个码钟,系统钟是快钟如50MHz,码钟是慢钟5MHz。此时我们的想法是,用快钟捕获慢钟的边缘来作为一个很短时间(半个快钟周期,即0.01μs)的脉冲信号使能。
具体代码
这段代码可以捕获上边缘,注意理解最后一行代码是如何滑动的。
reg [1:0] tempa;
always @(posedge sysclk)
begin
if(reset)
begin
temp<=2'd0;
end
else
begin
temp<={ tempb[0],pnclk };
end
end
assign enable=( temp[0] & ~temp[1] );
这种写法的优点
显然,这样的写法用到的硬件资源少,并且所获取的边缘与快钟严格对齐,避免了采用不同时钟导致的异步问题。
基于FPGA的PN产生码器
关于这个话题,可看我的另外一篇文章,如果没有看到,那就是我还没写出来。😜