FPGA设计过程中的时序部分在低速系统下可能涉及的比较少,甚至在某些情况下可以不进行约束,但是在高速系统下时序分析与时序约束则比较重要。时序分析与时序约束直接影响系统所能运行的频率以及稳定性,而FPGA的优势之一就是并行与高速,所以搞明白时序分析与时序约束是掌握FPGA的必备技能。这个版块主要是学习时序理论内容的笔记,更重的是要在K7平台上以300M时钟进行高速AD数据采集,并且数据是以DDR形式进行传输的,涉及了较多的内容,所以分多个章节进行学习。以下内容中可能会有错误与不足,希望大家能够指正。
先讲几个概念:
时序分析:时序分析的目的就是通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和始终延迟之间的关系,一个稳定良好的系统必然能够保证整个系统中所有的寄存器都能够正确的寄存数据。时钟和数据的传输路径以及其延迟关系是通过EAD软件经过布局布线后得到的。
时序约束 : 告知EAD软件设计需要达到怎样的时许指标,EAD软件根据时序约束的各个参数,尽力优化布局布线,来达到需要约束的设计指标。
我们写一段最简单的代码,看看他综合后的电路图,
always@(posedge clk )
begin
b<=a;
c<=b;
end
以下数据传输模型便是综合后的结果,我们大概分析一下。
时钟clk的第一个上升沿将a的值由D端锁存至Q端,clk的第二个上升沿将寄存器b的Q端数据(寄存器c的D端)锁存至寄存器c的Q端,理论时序图如下:
第二个上升沿将a的值锁存至寄存器b,第三个上升沿将寄存器b的值锁存至寄存器c。
实际上时序图如下:
传输过程中往往会有一定的延时存在,延时d1和d2的值和布局布线时的走线长度,寄存器间的组合逻辑长度等有关。寄存器能够正确寄存数据的条件是时钟边沿到来时,数据稳定了一定的时间。如果延时d1和d2过大,下一个边沿到来时数据已经在变化为下一个数据,那么将不能正确寄存这个数据,如果延时d1和d2过小,下一个边沿到来时数据还没有传过来,那么也不能正确寄存这个数据。所以时序约束和时序分析的目的就是在一定的系统时种下,通过添加约束条件,优化代码,来达到使每个寄存器都能正确锁存数据的状态。
这一节先讲到这里,下一节让我们看看高速系统下,时序不进行时序约束或者错误约束导致的结果。
时序约束(一)
最新推荐文章于 2024-02-24 13:45:00 发布