FPGA的时钟质量对设计的影响】的更多相关文章

小梅哥编写,未经许可严禁用于任何商业用途 近期,一直在调试使用Verilog编写的以太网发送摄像头数据到电脑的工程(以下简称以太网图传).该工程基于今年设计的一款FPGA教学板AC620.AC620上有一个百兆以太网接口和一个通用CMOS摄像头接口,因此非常适合实现以太网图传功能.CMOS摄像头接口没有什么好说的,就是IO而已,这里先重点介绍下以太网接口. 以太网接口使用了一片10/100M自适应以太网收发器(PHY),型号为RTL8201.该芯片和FPGA采用标准的MII接口进行连接.什么是M…
1 引言    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免.如果对跨时钟域带来的亚稳态.采样丢失.潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行.本文总结出了几种同步策略来解决跨时钟域问题. 2 异步设计中的亚稳态    触发器是FPGA设计中最常用的基本器件.触发器工作过程中存在数据的建立(setup)和保持(hold)时间.对于使用上升沿触发的触…
文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域. 2. 亚稳态 触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器的数据输入端口上数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规.存在这个时序违规是因为建立时间要求和保持时间要求被违反了,此时触发器内部…
基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发送邮件获取. XPT2046是一款设计用于移动电话.个人数字助理.便携式一起.付款中断设备.触摸屏显示器等设备的4线制电阻触摸屏控制器.该芯片实质为一个多通道ADC+电压输出芯片,通过在不同时刻对电阻触摸屏的两组不同电极上分别施加电压,然后测量另一组电极上的电压值,从而获取触摸点的X或Y位置坐标,进…
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了预期的逻辑功能.xilinx fpga内的全局时钟资源可以很好的优化时钟的性能,因此在设计时要尽可能多的使用fpga内部的时钟资源.xilinx fpga内部的全局时钟采用全铜工艺实现,配合专用时钟缓冲和驱动结构,可以使进入全局时钟网络的时钟到达fpga内部各个逻辑单元的抖动和延迟最小.全局时钟资源…
在第一个独立开发的FPGA项目中,使用了Altera平台的三速以太网IP,工作在100M模式下,外部输入的PHY时钟频率为25MHz. 由于在前期没有注意这个外部输入的时钟,导致最后不得不在板子上飞线,完成以太网的调试.这篇文章主要讲讲在做FPGA开发的时候,如何考虑时钟资源的评估!? 1 .使用的时钟频率和相位变化范围?是用DCM还是PLL? 2.设计中使用到的IP核需要多种时钟域吗?用到了多时钟,它们在期间上怎么选择和分布? FPGA上时钟资源有全局时钟资源,水平时钟资源.垂直时钟资源,区域…
对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路基于时钟触发沿设计,对时钟的周期.占空比.延时和抖动提出了更高的要求.为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟. FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元…
1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法写入bit 1,只能写入bit 0,所以写入数据之前要将原来的数据擦除(FFh),遇到写入bit 1的情况不作处理.W25Q128BV的特征为如下图所示: 2.SPI FLASH的基本结构 W25Q128BV由Block0~Block255共256个Block组成,容量大小为256*64KB=256…
FPGA跨时钟数据传输,是我们经常遇到的问题的,下面给出一种跨时钟握手操作的电路结构.先上图 先对与其他人的结构,这个结构最大的特点是使用 req 从低到高或者高到低的变化 来表示DIN数据有效并开始传输.并且同过判断 req与ack信号是否相等就可以判断传输是否完成.当req !=ack时表示正在传输,不可以发起新的传输操作.当req=ack时表示传输完成,可以开始新的传输过程. 并且这样的结构在req传输发生亚稳态时也可以有效的传输信号,可以适应任意时钟域之间的数据传输.仿真图如下 代码:…
自旋转移扭矩磁阻随机存取存储器(STT-MRAM)是一种持久性存储技术,可利用各种工业标准接口提供性能,持久性和耐用性. Everspin推出了STT-MRAM产品,该产品利用称为JE-DDR4的JEDEC标准DDR4接口的变体,它包含了对完整系统支持所需的独特功能.本文将帮助工程师了解Xilinx FPGA控制器的Everspin STT-DDR4设计指南 2.启用ST-DDR4为了使设计人员能够快速集成ST-DDR4支持,该过程从Xilinx Vivado开发环境中生成的现有8Gb DDR4…
利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力 Accelerating DSP Design Productivity with UltraScale and UltraScale+ FPGAs and MPSoCs 由于其固有的灵活性,Xilinx fpga和soc是高性能或多通道数字信号处理(DSP)应用的理想选择,可以利用硬件并行性.Xilinx FPGA和SOC将这种处理带宽与全面的解决方案相结合,包括为硬件设计师.软件开发人员和系统架构师提供…
一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计分类 说明: 1.外挂PHY也可以实现光通信,这里为了和不外挂PHY进行区分,所以就不进行演示: 2.这里的TCP协议都不是用硬件语言实现的,因为本人觉得,利用FPGA进行通信的主要目的就是进行高速传输,TCP协议的复杂程度通过上面分析大家应该会了解,单纯论代码量来说就应该是UDP协议的几倍,如果你…
1 假设FPGA设计,包括不同的频率的时钟,它会发出涉及异步时钟. 我们需要一些方法来使时钟同步,从而保证FPGA可靠性设计. 2 在建立和保持时间所构成的有效时间窗体内,数据输入到触发器进行转换. 假设数据的到达时间不满足建立或者保持时间就会产生时序冲突. 此时触发器的输出就有可能停留在非逻辑0 或1 的范围内(这个状态叫做准稳态).从而造成逻辑错误. 3 假设异步时钟的相位不可以全然对齐就有可能引起2中所述的故障,并且这样的故障是不可再现的,也无法通过仿真发现. 4 解决方法,即时钟同步问题…
目录 1. 常见问题 2. 常见的复位方式 3. 合理的复位设计 3.1 复位电平 3.2 异步复位同步化 3.3 恰到好处的复位 4. 补充 4.1 所谓的上电初始化 参考文献 一开始接触到FPGA,肯定都知道"复位",即简单又复杂.简单是因为初学时,只需要按照固定的套路--按键开关复位,见寄存器就先低电平复位一次,这样一般情况可以解决99%的问题,甚至简单的设计,就不可能有问题.复杂是因为复位本身是对大规模的硬件单元进行一种操作,必须要结核底层的设计来考虑问题. 1. 常见问题 自…
FPGA项目设计中,通常会遇到多时钟处理.即一个PLL输出多个时钟,根据条件选择合适的时钟用作系统时钟.方案一: 外部晶振时钟进入PLL,由PLL输出多个时钟,MUX根据外部条件选择时钟输出做为系统使用. 方案在时钟频率比较低的情况下是可行的.设计时注意MUX使用组合逻辑实现的,注意case语句中default选项必须有输出,否则会出现锁存器. 当输出时钟频率较高时,这种方案的时序约束就比较麻烦.除了使用creat_clock命令约束PLL输入时钟,使用creat_generate_clock约…
博客:blog.shinelee.me | 博客园 | CSDN 写在前面 论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:https://arxiv.org/abs/1606.02228 github地址:https://github.com/ducha-aiki/caffenet-benchmark 在这篇文章中,作者在ImageNet上做了大量实验,对比卷积神经网络架构中各项超参数选择的影响,对如何优化网络性能很有启发…
时钟架构总览 7系的FPGA使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种的时钟需求.Clock Management Tiles(CMT)提供了时钟合成(Clock frequency synthesis),倾斜矫正(deskew),过滤抖动(jitter filtering)功能.非时钟资源,例如本地布线,不建议使用在时钟设计中. 全局时钟树(Global clock tree)可以驱动device中的所有同步原件(synchronous eleme…
reference:http://www.21ic.com/app/eda/201808/798483.htm https://www.milstd1553.com/ [导读] 摘 要: 提出一种将FPGA与PowerPC芯片结合,实现MIL-STD-1553B通信模块的技术方案.详细讨论了该系统的结构.1553B总线协议在FPGA上的实现以及系统的软件结构等关键技术.该系统方案与采用专用的协议芯片实现1553总线接口的方法相比,具有更灵活.成本更低.可移植性好等特点.关键词: MIL-STD-…
7系列FPGA中包含了多达24个CMT(时钟管理单元)(实际上V7常见只有20个),MMCM和PLL均为时钟综合器,对外部输入时钟.内部时钟进行处理,生成需要的低抖动时钟.PLL是MMCM的功能子集,也是基于MMCM的.其中MMCM包含的额外特性有: 输入多路复用器从IBUFG,BUFG,BUFR,BUFH,GTs(CLKIN only)或互连(不推荐)中选择其一 作为参考和反馈时钟,每个时钟输入都经过一个可编程的计数器(D).相位频率检测器(PFD)比较输入(参考)时钟和反馈时钟的上升边缘的相…
燃气灶控制器的设计与实现 一.引述 本次实验所用可编程器件型号为MAXII EPM1270T144C5(其引脚表见本人另一博文:可编程实验板EPM1270T144C5使用说明),通过可编程实验板实现一个基本的模拟燃气灶. 二.设计课题的基本要求 1. 燃气灶的控制按键有三个:点火/关闭按键 BTN7.火力调节按键 BTN6(火力增大) 和 BTN5(火力减小) 2. 用 8×8 双色点阵模拟显示燃气灶的灶眼,用如图 1 所示的四个点阵显示状态分别表示火力的四个档位,从左到右依次为微火.小火.中火…
上一次设计的动态扫描数码管显示电路模型如上,这是一个32位并行数据[31:0]disp_num选通输出并行数据[7:0]select和[7:0]段选的电路.因此需要输出16个信号 而在开发板上的电路与这个的接口不同,如下: 这个开发板设计的fpga只有有三个输出,接到2片级联的74HC595芯片上,并行输出段选和位选数据. 这三个输出分别为:DIO(串行数据),SCLK(与74HC595匹配的时钟信号),RCLK(锁存器使能信号) 因此,想要在这片开发板上控制数码管显示,就得修改代码. 在上一次…
有些东西当你习以为常而不去深思熟虑的时候,致命的错误就会因此埋下!      FPGA开发中难免会遇到跨时钟域处理的问题,而对于单比特信号,我会不假思索的回答:打两拍不久解决了吗?但是事实时,这佯作的前提条件是:信号A从clk1进入到clk2的时候,clk1的是一个慢时钟,而clk2是一个快时钟.这样在快时钟域把信号A延迟两排,总能采样到稳定的数据. 但是如果是一个快时钟信号进入到一个慢时钟域中,上面的做法就不一定成立!单比特信号A在快时钟周期内2个clk保持稳定,但是快时钟域内2个clk的时钟…
一.典型方法 典型方法即双锁存器法,第一个锁存器可能出现亚稳态,但是第二个锁存器出现亚稳态的几率已经降到非常小,双锁存器虽然不能完全根除亚稳态的出现(事实上所有电路都无法根除,只能尽可能降低亚稳态的出现),但是基本能够在很大程度上减小这种几率.最后的一个D触发器和逻辑电路组成的是一个采沿(上升沿,修改一下就能采集下降沿)电路,即当第二个锁存器的输出中出现1个上升沿,那么最后的逻辑输出就会产生1个clock的高电平脉冲 二.结绳法 1.结绳法1:利用数据的边沿作时钟(例子中上升沿).(可以将脉冲无…
Roguelike game自1980年以来,就占据着游戏市场中很大的份额,而现如今的很多游戏中,也加入了Roguelike元素来起到更好的效果.我们知道Roguelike game中有着一些看似任性的设定,本身又较为硬核,画面更是比较古老.甚至一些当今时代的Roguelike game的画面也是比不上与其同期的大部分游戏的,那么Roguelike元素到底有什么特别的地方呢?为什么会有这么多的爱好者为其付诸几百.上千小时的时间去游玩呢? Roguelike元素的核心与特点 1.Roguelike…
一.实验任务 利用四个数码管显示59秒计时器. 二.代码实现 将开发板的48M晶振分频出1M,然后计数器累加,将计数器结果显示在数码管上.低位逢十进一,第二位逢五进一,依次构成59秒计时器. 部分代码展示: module cnt59(clk,rst_n,dataout,en); input clk,rst_n; :] dataout; :] en;//COM使能输出 :] dataout;//各段数据输出 :] en; :] cnt_scan;//扫描频率计数器 :] dataout_buf;…
利用C++学习内容,通过windows自带函数实现一个简易的时钟 #include<iostream> #include<windows.h> //延时与清屏头文件 using namespace std; class time { public: time(){year=0;month=0;day=0;hour=0;minute=0;sec=0;}//默认构造函数 time(int y,int mo,int d,int h ,int m,int s):year(y),month(…
原创 by DeeZeng FPGA 的 CLK pin 是否可以用作普通输入 ,输出或双向IO 使用?    这些专用Clock input pin 是否可以当作 inout用,需要看FPGA是否支持. 像cyclone V的CLK in 同时支持 作为普通的 inout 而有些FPGA则不支持   那我们可以如何确认是否支持呢? 可以查看 FPGA 的pinout Excel 数据表 https://www.intel.com/content/www/us/en/programmable/s…
C6678->SRIO和Virtex6->FPGA   设计的板子到了SRIO调试阶段了,在板子上,一片V6和两片6678通过4XSRIO互联,中间没有Switch,总算搞定了相互之间的通信. 首先,感谢Ti论坛提供的SRIO程序范例,但是其硬件平台是EVM板,更多的只能用于loopback测试,但是可以在其基础上修改. 1.初始化DSP的SRIO,主要是对SerDes进行配置,然后是Lane和Speed的配置,最后需要等待FPGA的LinK建立,我们在建立时候碰到一点困难,每次建立并不都是4…
http://www.fpga.com.cn/advance/skill/speed.htm http://www.fpga.com.cn/advance/skill/design_skill3.htm 时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义. 1.1 建立时间与保持时间 建立时间(Tsu:…
FPGA重要设计思想   1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一.这里我来举一个多相滤波器抽取的例子: 抽取之后,两路数据以二分频的速度进行处理即可 4.流水线设计(在fir滤波器中表现很突出,一个时钟输出一个数据) 流水线设计可以从某种程度上提高系统频率..前提是:设计可以分为若干步骤进行处理,而且整个数据处理的过程是单向的,即没有反馈或者逆运算.前一个步骤的输…