verilog学习笔记- 2)时序约束文件

目录

为什么要创建时序约束文件?

时序:

创建时序约束文件:


为什么要创建时序约束文件?

对于一些简单的工程时序的要求并不是特别的严格,添不添加时序约束文件影响不大。但是对于一些复杂的工程,涉及到高频时钟,多个时钟信号,跨多个时钟域等等时序比较混乱的工程添加时 序约束文件就很有必要了,不添加时序约束极有可能会导致功能不正常或者时而正常时而不正常。

时序:

简单的讲就是时钟与数据的关系,这里我们要引入“建立时间”和“保持时间”这 两个概念,大家要明白,FPGA 内部是有大量的触发器的,而“建立时间”和“保持时间”就是针对触发器来讲的。要想完成一次数据的正确采样,那么就必须满足“建立时间”和“保持时间”的要求,那么什么 是“建立时间”和“保持时间”呢,我们先看下图:

上图中的 Tsu 就是建立时间,它是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如 果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu 就是指这个最小的稳定时间。而 保持时间是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th 就是指这个最小的保持时间。

因此我们在开发工程时一定要注意这两个时间,切忌在数据亚稳态时对数据进行采样,那么采样的数 据就不准确。当然时序约束不仅仅如此,还需要考虑各个触发器的延时时间,例如数据需要从寄存器 1 传 向寄存器 2,那么假设在寄存器 1 进行触发时数据被准确采样,当数据从寄存器 1 出来是需要一定延时的, 延时完成后我们再经过组合逻辑处理又会进一步延时,再之后到达寄存器 2 进行采样,这个时候我们就需 要考虑寄存器 2 时钟的上升沿到来前我们的数据是否已经保持稳定并且能够满足建立时间,如果不满足那 么寄存器 2 极有可能是在数据处于亚稳态的时候对数据进行了采样那么数据是不准确。

创建时序约束文件:

点击 Tools 选中 TimeQuest Timing Analyer 如下图所示:

然后我们创建一个文件格式为.SDC 的约束文件,步骤如下图所示:

 

创建好 SDC 文件后我们回到工程,可以看到工程里已经出现一个空白的 SDC 文件,如下图所示:

接下来我们就可以在这个空白约束文件中编写约束语句了

我们在空白的 SDC 文件中输入:create_clock -name sys_clk -period 20.0 [get_ports sys_clk]。这条语句就 是创建一个时钟( create_clock),这个时钟的名字是 sys_clk(-name sys_clk,注意这里的名字是可以随意 起的,但是建议大家命名的时候可以一眼看出其含义),这个时钟的周期是 20ns(-period 20.0,这里大家 要注意如果没有约束占空比,那么默认 50%的占空比),映射到工程的 sys_clk 端口上(get_ports sys_clk, 这里映射的端口就是工程的实际端口了,这里代表输入的系统时钟)。这样我们就把输入时钟约束好了, 他就是一个严格的 50Mhz 标准时钟。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vizio<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值