FPGA时钟周期约束讲解

可编程逻辑

1358人已加入

描述

2 时钟周期约束

时钟周期约束是用于对时钟周期的约束,属于时序约束中最重要的约束之一。

本章主要讲解目前主流开发环境Vivado中的时钟约束命令。

a.create_clok

Vivado开发环境中使用create_clock创建时钟周期约束,具体格式如下:

create_clock-name -period -waveform {}[get_ports]

参数名称 含义
name 时钟名称
Period 时钟周期
waveform 波形参数,第一个参数为时钟的第一个上升沿时刻,第二个参数为时钟的第一个下降沿时刻
add 在同一时刻源上定义多个时钟使用

上述所说的时钟需是主时钟,主时钟有两种情况:一种是时钟由外部时钟源提供,通过硬件引脚引入FPGA,该时钟所对应的时钟为主时钟;另一种是高速收发器GTP的时钟引脚TXOUTCLK和RXOUTCLK,对于7系列FPGA,需要对GTP的两个时钟手动约束;对于UltraScale FPGA,只需对GTP的输入时钟约束即可,Vivado会自动对这两个时钟约束,Vivado软件会自动设置约束。

可以采用借助Tcl脚本方式确定主时钟是否为时钟周期约束的关键。

方式一:运行tcl指令report_clock_networks-name mainclock;

方式二:运行tcl指令check_timing-override_defaults no_clock;

高速收发器的时钟,可以通过以下方式进行约束:

# Define the clocks for the GTX blocks

create_clock -name gt0_txusrclk_i -period 12.8 [get_pinsmgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]

create_clock -name gt2_txusrclk_i -period 12.8 [get_pinsmgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]

create_clock -name gt4_txusrclk_i -period 12.8 [get_pinsmgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]

create_clock -name gt6_txusrclk_i -period 12.8 [get_pinsmgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]

当FPGA系统中有多个主时钟时,且这几个主时钟之间存在确定的相位关系时,需要用到-waveform参数。约束如下。

create_clock -name clk0-period 10.0 -waveform {0 5} [get_ports clk0]

create_clock -name clk1-period 8.0 -waveform {2 8} [get_ports clk1]

约束中的数字的单位默认是ns,若不写wavefrom参数,则默认是占空比为50%且第一个上升沿出现在0时刻。使用report_clocks指令可以查看约束是否生效。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分