所谓时钟树为FPGA内部资源, 分 : 全局时钟树, 区域时钟树 , IO时钟树
原则上优先使用全局时钟树, 在GT接口上使用IO时钟树, 一般工具也会对GT时钟加以限制;
时钟树使用方式
正确的物理连接
FPGA会由物理管脚专门用于全局时钟设置, 通过查询数据手册可以在PCB设计阶段进行确认,当外部时钟接入此管脚时 ,工具会自动占有全局时钟树资源, 当接入普通信号时不会分配时钟树资源;
恰当的代码描述
原语的使用, 即BUFG的使用,可以将PLL的输出等内部时钟进行全局时钟资源的分配;
IO时钟资源需要参考相应接口手册, 以ultrascale 的GTH为例, 其JESD204 的时钟方案针对不同的子类会由不同的专用时钟方案, 和时钟BUF的使用;
需要注意对时钟树上的时钟信号进行任何逻辑操作产生的新信号将不再时钟树上
跨时钟问题的原理与单时钟域避免隐患一样, 即避开不稳定态;
两级采样
高频采低频使用两级采样保证设计行为的正确性和一致性;
低频采高频,则高频时钟域内必须保证其输出信号在一个大于低频周期的时间内保持不变确保不会漏采样;
握手
正常握手逻辑, 需要注意A的握手信号需要在A寄存器输出不变的一个时钟周期后在拉高并保持至少一个B的周期(考虑Skew最好2个)以保证B的顺利采样和数据稳定;
异步FIFO
需注意FIFO的数据平衡,保证 写速率 == 读速率;

压控振荡器VCO输出的信号为整个锁相环最终的输出信号, 该信号会经过一个整数分频器分频后反馈给鉴相器PD(也是鉴频器), PD比较该反馈信号与输入的本振信号, 如有差别 PD输出差别信号 , 该差别经过低通滤波器LF滤波形成控制VCO频率变化的控制电压, 在该电压的控制下VCO输出信号 的频率或相位会改变, 新的输出如果和本振信号相等则PLL进入锁定;
时钟输入, 输出端口
同一时刻只能有一个CLKIN使能, 但是可以有多个CLKOUT输出;
CLKIN必须是连续时钟信号 , 否则PLL会不断失锁;
CLKIN的频率必须是符合对应器件PLL的时钟频率范围要求;
CLKIN的占空比最好接近50%;
CLKOUT可以有多个输出, 原理是VCO的输出CLKMID会扇出多路, 每一路都有一个分频器和移相器用以产生CLKOUT;
CLKMID的频率根据器件有一定的范围限制, 具体参数查看相应参数;
CLKMID扇出路径上的分频移相系数有限制, 所以各路CLKOUT具有相关性, 要产生两个完全不相关的CLKOUT需要两个PLL;
CLKOUT频率受是时钟树资源限制,其频率和移相精度也有一定限制;
PLL锁定指示端口
PLL中的CLKMID针对CLKIN有一定时间的锁定延迟;
LOCKED信号指示锁定. LOCKED == 0 失锁, LOCKED == 1锁定;
同步复位
同步复位 : 复位信号在时钟边沿到来时刻为有效,则执行一次复位, 同步复位为瞬间态, 离散;
优点:
缺点:
异步复位
异步复位 : 复位信号立即执行, 无关时钟信号的有效边沿,异步复位具有持续性, 连续性;
优点:
缺点:(异步信号有效与时钟边沿靠近的一系列问题)
容易导致亚稳态;
大面积逻辑时因为路径延迟, 导致逻辑功能混乱;
易受到毛刺干扰;
纯粹的异步复位别用, 尽量使用同步复位;
资源紧张使用低电平有效的异步复位, 同步释放;
同步信号同步复位
always@(posedge clk)
begin
if(rst)
<statement>;
else
<statement>;
end
同步信号异步复位
always@(posedge clk , negedge rst)
begin
if(!rst)
<statement>;
else
<statement>;
end
异步信号同步复位
先对异步复位信号进行同步化处理, 在使用同步复位的方式进行复位;
always@(posedge clk)
begin
temp_rst<= a_rst;
b_rst <= temp_rst;
end
always@(posedge clk)
begin
if(b_rst)
<statement>;
else
<statement>;
end
异步信号异步复位
always@(posedge clk)
begin
temp_rst<= a_rst;
b_rst <= temp_rst;
end
always@(posedge clk,negedge b_rst)
begin
if(!b_rst)
<statement>;
else
<statement>;
end
复位的高扇出的解决方案
寄存器的复制
//同步信号的复制 ,复制若干个类R寄存器
always@(posedge clk)
begin
rst <= reset;
end
//异步信号的复制
//temp0 , temp1两级采样, temp2位类R寄存器
always@(posedge clk)
begin
temp0 <= rst;
temp1 <= temp0;
temp2 <= temp1;
end
正确利用全局时钟树
时钟树可以保证信号到达FPGA不同触发器的时间差尽可能小,但不保证消耗最短的资源; 那么全局时钟树上的信号群延迟就会比较大, 那么复位信号使用全局时钟树也会存在群延迟, 此时为保证系统稳定性需要对时钟引入一个相同的群延迟;
BUFG resetOnTree(.O(rst),.I(reset));
BUFG clockOnTree(.O(clk),.I(clock));
//rst clk 即可用于设计
//异步信号
always@(posedge clock)
begin
temp_rst<= a_rst;
b_rst <= temp_rst;
end
BUFG resetOnTree(.O(rst),.I(b_rst));
BUFG clockOnTree(.O(clk),.I(clock));
//此时clock不能是在时钟树上的时钟;
//如果clock已经上树, 那么为抵消复位系统引入的延迟可以使用不带BUFG的反馈回路的PLL
本文为个人读书笔记,仅作记录之用
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,: