FPGA时序分析和时序约束
- 1时序分析和时序约束
- 2例子分析
-
- 2.1实现代码
- 2.2时序分析的基本模型
1时序分析和时序约束
时序分析的目的:
通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟的关系。一个良好的设计系统,必然能够保证整个系统中的所有寄存器都能够正确的寄存数据。
数据和时钟路径是由EDA软件,通过对特定器件布局布线得到的。
时序约束的目的:
(1)告知EDA软件,本设计需要达到怎样的时序指标,然后EDA软件会根据时序的各个参数,尽量优化布局,以达到该指标。
(2)协助EDA软件进行分析设计的时序路径,以产生相应的时序报告。
2例子分析
2.1实现代码
`timescale 1ns / 1ps
//
module top(
input sys_clk,
input [0:0] a,
input [0:0] b,
output reg [0:0] c
);
reg [0:0] a_reg;
reg [0:0] b_reg;
wire [0:0] c_wire;
always@(posedge sys_clk)
begin
a_reg<=a;
b_reg<=b;
end
assign c_wire=a_reg & b_reg;
always@(posedge sys_clk)
begin
c<=c_wire;
end
endmodule
2.2时序分析的基本模型
D触发器需要用到DFF,与门需要用到LUT。
延迟产生原因:
(1)内部连线走线延迟;
(2)组合逻辑电路延迟。
Tco:时钟上升沿到达D触发器的D端 到 数据输出到Q端的延迟。
Tsu:寄存器稳定数据的建立时间,由目的寄存器自身的特性决定。在时钟信号的上升沿到达时钟接口时,触发器的数据输入端(D)必须提前N纳秒稳定下来,否则无法保证数据正确存储。也就是说,D触发器D端口的数据必须比时钟上升沿提前Nns到达D触发器的端口。
为了保证正确接收数据,内部连线走线延迟+组合逻辑电路延迟必须小于sys_clk- Tsu。如下图所示。
例子分析:
a=1,b=1;间隔一定的时间,a变成0;
图中,a_reg_D指的是寄存器a的D端,a_reg_Q指的是寄存器a的Q端。