基于Xlinx的时序分析与约束(4)----主时钟约束

news2024/11/18 3:28:36

主时钟约束语法

        主时钟约束,就是我们对主时钟(Primary Clock)的时钟周期进行约束(告诉综合工具布局布线的标准),这个约束是我们用的最多的约束了,也是最重要的约束。

        主时钟必须与一个网表对象相连,该对象代表了所有时钟边沿的开始点,并且在时钟树中向下传递;也可以说,主时钟的源点定义了0时刻,Vivado靠此来计算时钟延迟和不确定性 ;vivado会忽略所有时钟树上从主时钟上游的单元到主时钟之间的延时!

        主时钟通常有两个来源:(1)板级时钟(主要是晶振)通过输入端口进入FPGA;(2)FPGA的GT收发器的输出管脚(如恢复时钟)。

        主时钟只能通过create_clock命令来定义,且必须放在约束的开始,这是因为其它时序约束几乎都要参考主时钟。其基本语法如下:

create_clock -name <clock_name> -period <period> -waveform {<rise_time><fall_time>} [get_ports <port_name>]

  • -name: 由设计者指定的主时钟名称,用于标识定义的主时钟,若不指定,则会默认使用<port_name>作为主时钟名称
  • -period:是定义的主时钟周期,单位ns,取值必须大于0
  • -waveform :{<rise_time><fall_time>}分别代表时钟的上升沿和下降沿,用于指定占空比和时钟相位,单位为ns;若不指定,则时钟占空比默认为50%且第一个上升沿为0时刻
  • get_ports表示定义的主时钟的物理节点是FPGA的物理引脚;而GT收发器的引脚则使用get_pins来定义

例1:引脚输入的主时钟约束

        下图是一个从引脚sysclk进入FPGA的主时钟,其时钟周期为10ns,占空比50%且不存在相移。

        根据主时钟约束的语法,其应该被约束为:

create_clock -period 10 [get_ports sysclk] 

        该语句定义了名为sysclk的物理节点产生的时钟sysclk,其时钟周期为10ns、占空比为50%(没有定义时的默认占空比)。需要注意的是,这个实例省去了主时钟的名称,以及省去了用 -waveform参数来描述其占空比与相位关系。

        类似的,假设有一个外部时钟devclk通过ClkIn进入FPGA作为主时钟,其周期为10ns,占空比25%,相移90度。该时钟根据语法应该被约束为:

create_clock -name devclk -period 10 -waveform {2.5 5} [get_ports ClkIn]

        该语句定义了名为ClkIn的物理节点产生的时钟devclk ,其时钟周期为10ns、占空比为50%,第一个上升沿在时刻2.5ns而第一个下降沿则在时刻5ns。


例2:高速收发器GT的恢复时钟

        时钟源由高速收发器gt0提供,如下图所示:

        进入FPGA,之后经过混合时钟管理单元MMCM生成其他时钟,以gt0发出的时钟为主时钟,其他生成时钟都有一个共同的时钟源,使用如下命令定义: 

 create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

        该语句定义了名为gt0/RXOUTCLK的物理节点产生的时钟rxclk,其时钟周期为3.33ns、占空比为50%(默认情况下的占空比)。


例3:差分时钟约束

        差分时钟是指时钟是以差分形式(P端与N端)一起进入FGPA的时钟,比如差分晶振等,这种情况只需要约束差分时钟的P端即可,N端可以被vivado自动识别到。如果同时约束了正、负两端,反而会导致未知错误。

        像上图这种差分时钟就可以这样约束(仅约束了P端):

create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p] 


主时钟约束实战

        在了解了主时钟约束的语法后,我们接着来学习一下,如何具体地在vivado中使用它。

        我们首先新建一个简单的工程,并实现以下代码(一个简单的两拍寄存器):

module test(
	input		sys_clk,
	input		in,
	output		out
);

assign out = out_rr;

reg out_r,out_rr;

always @(posedge sys_clk)begin
	out_r <= in;
	out_rr <= out_r;
end

endmodule

        由于vivado中的时序约束语句都是保存在XDC文件中,所以我们新建一个XDC文件用来保存我们的时序约束语句,步骤如下:


        要实现主时钟约束的方法有好几种,但是不管是哪一种,最终的目的都是要把上面学到的主时钟约束语句给写入到XDC文件(timing.xdc)中去。

方法一:在Tcl窗口直接输入

        直接在Tcl Console窗口输入主时钟约束语句:

create_clock -period 10.000 -name sysclk -waveform {0.000 5.000} [get_ports sys_clk] 

        然后点击vivado左上角的保存约束按钮,将其保存到对应的XDC文件中:

        此时,再打开timing.xdc文件,就已经出现了主时钟约束语句:


方法二:GUI界面输入

        可能有时候不太记得主时钟约束语句的语法,没有关系,我们可以使用GUI界面来创建该语句。

        GUI界面使用简单方便,是个非常好的人机交互。在创建了XDC文件后,把工程综合完成,点击 edit timing constraints,打开时序约束编辑界面:

        左侧是约束分类区,展示了各种各样的时序约束;右侧是对应的约束编辑区 ;下方是已有的约束的展示区域。

        先选择左侧的“create clock”后点击约束编辑区的+号,编辑一条新的主时钟约束语句(信息对应着填一下就可以了,没啥好说的):

        此时vivado左侧的保存约束按钮又可以按下了,按下将这一条语句保存:

        此时,再打开timing.xdc文件,就已经出现了主时钟约束语句:


  • 📣博客主页:wuzhikai.blog.csdn.net
  • 📣本文由 孤独的单刀 原创,首发于CSDN平台🐵
  • 📣您有任何问题,都可以在评论区和我交流📞!
  • 📣创作不易,您的支持是我持续更新的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

seo综合查询,怎么看网站在移动端权重高低

移动权重就是指在手机、IPAD等的流量&#xff0c;数值越大流量越多。 未来百度流量一定会更倾向于移动端&#xff0c;移动端搜索将是百度搜索引擎的主要阵地。这一点和用户上网习惯有关系&#xff0c;因为移动网络无处不在。 那么怎么看网站在移动端权重高低&#xff1f;最…

Office选装 + Visio安装

一.Office选装 这里我以装Word、Excel和Powerpoint为例 第一步&#xff1a;下载office tool plus 下载地址&#xff1a;https://otp.landian.vip/zh-cn/ 打开网址后&#xff0c;点击红色的立即下载&#xff0c;进入文件存放页面&#xff1b; 第二步&#xff1a;选择其中一个下…

STM32F103C8T6平衡车

链接&#xff1a;https://pan.baidu.com/s/1WJ9otyE9LuO6Kh5gyQ0Tug?pwd8888 提取码&#xff1a;8888 #define BIN2_Pin GPIO_PIN_12 #define BIN2_GPIO_Port GPIOB #define BIN1_Pin GPIO_PIN_13 #define BIN1_GPIO_Port GPIOB #define AIN1_Pin GPIO_PIN_14 #define AIN1_…

CSS知识点1

CSS:层叠样式表 1.行内样式&#xff1a;<h1 style"background-color: aqua;">Hellocss</h1> 仅对当前标签有效 2.内部样式&#xff1a;写在title处 对当前页面有效 3.外部标签&#xff1a;<link rel"stylesheet" href"./js/main…

干货分享丨超详细的200G QSFP56光模块知识

随着数据中心的快速发展&#xff0c;在100G光模块不足以满足日益增长的网络升级要求而400G还未普及的情况下&#xff0c;200G QSFP56光模块成为了200G以太网部署的主流解决方案。接下来&#xff0c;就由易天光通信为你详细介绍一下200G QSFP56光模块。 200G QSFP56光模块是40G…

供应Biotin-PEG-acid,Biotin-PEG-COOH,生物素-聚乙二醇-羧基

含有生物素和羧酸的线性杂双功能PEG试剂化学试剂Biotin-PEG-acid /Biotin-PEG-COOH其英文名为&#xff0c;它所属分类为Biotin PEG Carboxylic acid PEG。 peg试剂的分子量均可定制&#xff0c;有&#xff1a;生物素-PEG1-羧基、Biotin-PEG2-COOH、生物素-peg3.4-羧基、Biotin…

python代码~创意圣诞树

2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 圣诞节(Christmas)本身是一个宗教节&#xff0c;用来庆祝耶稣的诞辰&#xff0c;因而又名耶诞节 Hope all your Christmas dreams come true!    愿你所有的圣诞梦想都成真!    Hope you enjoy the happiness o…

Express 基本使用(简)

前一篇内容讲到Express框架的安装以及对Express项目的目录文件有一定的认识了解之后&#xff0c;使用Express创建了最基本的一个Web服务器&#xff0c;接下来进行对Express框架的一些内容来做一个基本的使用&#xff1b; 创建 Web 服务器 node 或 nodemon 执行app.js文件&#…

贪心法算法

目录 一 算法简介 1&#xff09;算法案例引入 2&#xff09;算法思想 3&#xff09;算法概念 4&#xff09; 算法求解的问题的特征 5&#xff09;算法应用 二 算法常见问题 1&#xff09;活动安排问题&#xff08;区间调度问题&#xff09; 今年暑假不AC 2&#xff…

【QT】信号与槽

信号与槽 信号(Signal) 与 槽(Slot) 是Qt中对象之间的通信方式&#xff0c;可以用一个简单的栗子说明&#xff1a;当我们想要开灯时&#xff0c;按下开关发出指令&#xff0c;这就是信号&#xff1b;而灯泡接收到电流变化&#xff0c;发出光亮&#xff0c;这就是响应(槽)。 我…

通过cmd指令创建vue项目

通过cmd指令创建vue项目 基础材料&#xff1a; 已安装node.js 已安装 npm&#xff08;安装node.js后会自带安装npm&#xff09; 首先通过node –v和npm –v确保他们都安装了&#xff0c;能够看见版本号就表示ok 然后通过指令安装vue脚手架 npm install -g vue/cli5.0.8 安…

QTableView表格控件区域选择-自绘选择区域

一、概述 最近优化了一个小功能&#xff0c;主要是模仿excel相关的操作&#xff0c;觉得还挺不错的&#xff0c;因此在这里进行了整理&#xff0c;分享给有需要的朋友。今天主要是说一下区域选择这项功能&#xff0c;Qt自带的表格控件是具有区域选择功能的&#xff0c;但是他并…

【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

内容简介 Linux技术专题&#xff0c;主要介绍相关&#xff0c;针对于Linux开发和知识体系的必备开发技能以及基础常识&#xff0c;是开发者必备的知识体系和方法论。 什么是用户、用户组 Linux用户 Linux系统是一个多用户多任务的分时操作系统&#xff0c;任何一个要使用系统资…

如何制作mp3音频文件?分享制作mp3的简单方法

MP3 对每个人来说都不是一个陌生的名字&#xff0c;因为它是全球排名第一的主流音乐格式。听过上千首MP3歌曲&#xff0c;你知道自己可以制作MP3文件吗&#xff1f;如果答案是否定的&#xff0c;那么您很幸运能找到这篇文章&#xff0c;因为它将通过向您介绍一个免费且简单的解…

产险精算GLM案例2

这是北美产险精算学会CAS网站上的一个案例&#xff0c;对案例略作修改后进行验证。 原始数据是一个简单的分组数据&#xff1a; ClassAOITerrExposureClaims1Low1762Medium1108443High11791054Low2130625Medium2126826High21291207Low3143848Medium31261019High34046 &#x…

从入门到项目实战 - Vue 列表渲染

Vue 列表渲染上一节&#xff1a;《Vue 条件渲染 》| 下一节&#xff1a;《Vue 数据的单向和双向绑定 》jcLee95 邮箱 &#xff1a;291148484163.com CSDN 主页&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址&#xff1a;https://blog.c…

【Linux技术专题系列】「必备基础知识」一起探索(用户、用户组与文件权限)

内容简介 Linux技术专题&#xff0c;主要介绍相关&#xff0c;针对于Linux开发和知识体系的必备开发技能以及基础常识&#xff0c;是开发者必备的知识体系和方法论。 什么是用户、用户组 Linux用户 Linux系统是一个多用户多任务的分时操作系统&#xff0c;任何一个要使用系统资…

【OpenFeign】【源码+图解】【五】创建FeignClient接口的代理(上)

【OpenFeign】【源码图解】【四】FeignClient实例工具类ReflectiveFeign 目录6. 创建FeignClient接口的代理6.1 收集方法的元数据6.1.1 方法上基础信息6.1.2 方法所在类的注解信息6.1.3 方法上的注解信息6.1.3.1 uri6.1.3.2 produces6.1.3.3 consumes6.1.3.4 headersRequestMap…

认识 TEE OS

了解 TEE OS 关于本文&#xff0c;是一篇会议纪要&#xff0c;会议主题是《从 Linux Kernel 角度看 TEE》&#xff0c;主讲人是周贺贺。它适用于嵌入式系统开发/驱动开发/内核设计/安全业务设计从业者&#xff0c;目的是让自己掌握 TEE 基本概念&#xff0c;知道大系统软件架构…

目标检测之YOLOv1算法分析

网络结构 卷积层池化层全连接层 输入448∗448448*448448∗448大小的图片 输出7∗7∗307*7*307∗7∗30的张量 30维张量包括20个对象的概率&#xff0c;2个bounding box的置信度及其位置&#xff08;一个bounding box位置信息需要四个值&#xff0c;两个bounding box总需要8个…