概述
一、跨时钟域处理
在进行FPGA设计过程中,经常会遇到跨时钟域问题,若由快时钟域向慢时钟域进行转换时,需先把快时钟域的信号进行拉长处理,再进行慢时钟域的跨越,处理方法如下:
usr_clk_w 频率 > sclk 频率
reg f_start = 0;
reg [2:0] f_start_cnt;
always @(posedge usr_clk_w)
begin
if(frame_start)
f_start <= 1;
else if(f_start_cnt == 3'd3)
f_start <= 0;
else
f_start <= f_start;
end
always @(posedge usr_clk_w)
begin
if(frame_start)
f_start_cnt <= 0;
else if(f_start_cnt == 3'd3)
f_start_cnt <= 0;
else if(f_start)
f_start_cnt <= f_start_cnt + 1;
else
f_start_cnt <= f_start_cnt;
end
reg f_start_dly1;
reg f_start_dly2;
wire fs_start;
always @(posedge sclk)
begin
f_start_dly1 <= f_start;
f_start_dly2 <= f_start_dly1;
end
assign fs_start = f_start_dly1 && (!f_start_dly2);
二、时钟上升沿/下降沿
在设计中,如非必要,最好不要使用时钟下降沿触发的设计方法,原因有以下几个方面:
1.大多数FPGA里面的Flip Flops资源都是上升沿触发的,如果在Verilog代码采用下降沿触发的话 ,综合的时候会在CLK输入信号前面综合出一个反相器,这个反相器会对时钟信号的质量产生影响。
2.集成电路设计的书中有对晶振的描述,外部晶振产生的时钟信号上升沿的时间几乎是一样的,但是每个周期的下降沿的时间却无法保证完全一致,这与工艺有很大关系,所以采用下降沿触发有可能存在风险。
最后
以上就是高挑小白菜为你收集整理的FPGA设计过程中的心得总结与经验一、跨时钟域处理二、时钟上升沿/下降沿的全部内容,希望文章能够帮你解决FPGA设计过程中的心得总结与经验一、跨时钟域处理二、时钟上升沿/下降沿所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复