FPGA时序分析及时序约束常用方法(下篇)

一般常见的时序优化手段有:

1:关键路径插入寄存器
当一段代码里组合逻辑过多地时候很容易出现这个问题
2:打两拍
当模块之间的数据交互涉及到跨时钟域的时候,通常可以采用打两拍的方式来避免亚稳态的出现,这是一种非常有用的办法

    reg    [7:0]data_reg1;
    reg    [7:0]data_reg2;
	
    always@(posedge clk_50M or negedge rst_n)  	
	    if(!rst_n)
		    data_reg1 <= 8'b0;
		else
		    data_reg1 <= data;
	
	always@(posedge clk_50M or negedge rst_n)
	    if(!rst_n)
		    data_reg2 <= 8'b0;
		else
		    data_reg2 <= data_reg1;

3:避免一个模块驱动多个模块
这点事从模块设计的大框架上考虑的,如果实在是要用一个模块驱动多个模块,可以考虑将这个模块例化多次来实现,以多消耗一些硬件资源为代价换取较好的时序

猜你喜欢

转载自blog.csdn.net/jiyishizhe/article/details/103642839