资料介绍
对于设计者来说,当然希望我们设计的电路的工作频率(在这里如无特别说明,工作频率指 FPGA 片内的工作频率)尽量高。我们也经常听说用资源换速度,用流水的方式可以提高工作频率,这确实是一个很重要的方法,今天我想进一步去分析该如何提高电路的工作频率。我们先来分析下是什么影响了电路的工作频率。我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及 clock skew 有关。在 FPGA 内部如果时钟走长线的话,clock skew 很小,基本上可以忽略, 在这里为了简单起见,我们只考虑信号的传播时延的因素。信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延(这样划分或许不是很准确,不过对分析问题来说应该是没有可以的),要提高电路的工作频率,我们就要在这三个时延中做文章,使其尽可能的小。我们先来看开关时延,这个时延是由器件物理特性决定的,我们没有办法去改变,所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。 1. 通过改变走线的方式减少时延。我们通过给综合器加适当的约束(不可贪心,一般以加 5%裕量较为合适,比如电路工作在 100Mhz,则加约束加到 105Mhz 就可以了,贪心效果反而不好,且极大增加综合时间)可以将相关的逻辑在布线时尽量布的靠近一点,从而减少走线的时延。(注:约束的实现不完全是通过改进布局布线方式去提高工作频率,还有其它的改进措施) 2. 通过减少组合逻辑的减少时延。我们知道,目前大部分 FPGA 都基于 4 输入 LUT 的,如果一个输出对应的判断条件大于四输入的话就要由多个 LUT 级联才能完成,这样就引入一级组合逻辑时延,我们要减少组合逻辑,无非就是要输入条件尽可能的少,这样就可以级联的 LUT 更少,从而减少了组合逻辑引起的时延。我们平时听说的流水就是一种通过切割大的组合逻辑(在其中插入一级或多级 D 触发器,从而使寄存器与寄存器之间的组合逻辑减少)来提高工作频率的方法。比如一个 32 位的计数器,该计数器的进位链很长,必然会降低工作频率,我们可以将其分割成 4 位和 8 位的计数,每当 4 位的计数器计到 15 后触发一次 8 位的计数器,这样就实现了计数器的切割,也提高了工作频率。在状态机中,一般也要将大的计数器移到状态机外,因为计数器这东西一般是经常是大于 4 输入的,如果再和其它条件一起做为状态的跳变判据的话,必然会增加 LUT 的级联,从而增大组合逻辑。以一个 6 输入的计数器为例,我们原希望当计数器计到 111100 后状态跳变,现在我们将计数器放到状态机外,当计数器计到 111011 后产生个 enable 信号去触发状态跳变,这样就将组合逻辑减少了。上面说的都是可以通过流水的方式切割组合逻辑的情况,但是有些情况下我们是很难去切割组合逻辑的,在这些情况下我们又该怎么做呢?状态机就是这么一个例子,我们不能通过往状态译码组合逻辑中加入流水。如果我们的设计中有一个几十个状态的状态机,它的状态译码逻辑将非常之巨大,毫无疑问,这极有可能是设计中的关键路径。那我们该怎么做呢?还是老思路,减少组合逻辑。我们可以对状态的输出进行分析,对它们进行重新分类,并根据这个重新定义成一组组小状态机,通过对输入进行选择 (case 语句)并去触发相应的小状态机,从而实现了将大的状态机切割成小的状态机。在 ATA6 的规范中(硬盘的标准),输入的命令大概有 20 十种,每一个命令又对应很多种状态,如果用一个大的状态机(状态套状态)去做那是不可想象的,我们可以通过 case 语句去对命令进行译码,并触发相应的状态机,这样做下来这一个模块的频率就可以跑得比较高了。提高 FPGA 工作频率的本质,就是要减少寄存器到寄存器的时延,最有效的方法就是避免出现大的组合逻辑,也就是要尽量去满足四输入的条件,减少 LUT 级联的数量。我们可以通过加约束、流水、切割状态的方法提高工作频率。 FPGA 设计需要多大容量的芯片,设计需要跑多快?这是经常困扰工程师的两大问题。对于前者,我们还可以选用一个较大的芯片实现原型,待原型完成再选用大小合适的芯片;对于后者,通常我们需要预先有一个较精确的预估,就像我们的设计能跑 50M、100M 还是 150M。
- 基于FPGA的电压频率可调波形发生器 3次下载
- 学会Zynq(22)XADC测量片内温度与电源电压
- 基于FPGA的多图片动态显示VGA系统 27次下载
- 如何使用FPGA实现基于修正Rife算法的正弦波频率估计 7次下载
- 如何使用FPGA实现改进的载波频率相位联合估计方案 15次下载
- 如何使用FPGA实现H.264帧内预测 8次下载
- 如何使用单片机和FPGA实现任意频率发生器的设计 12次下载
- 使用FPGA经常会碰到哪些问题应该如何解决 14次下载
- FPGA经常有哪些常见警告应该如何解决 9次下载
- 如何使用XILINX FPGA进行片上嵌入式系统的用户IP开发 13次下载
- 通过过采样提高SOC单片机片内A_D分辨率
- 采用片内PLL实现实速扫描测试的方案
- FPGA在洗片机控制系统中的应用
- Ray-space 数据片内和片间相关性压缩分析
- FPGA在洗片机控制系统中的应用
- fpga全称是什么?fpga的工作原理是什么? 1116次阅读
- fpga芯片工作原理 fpga芯片有哪些型号 1092次阅读
- 检波器工作频率和自然频率的关系 465次阅读
- 片内和片间非均匀性是什么?如何计算?有什么作用呢? 1305次阅读
- 基于多片FPGA多路复用(TDM)科普 1573次阅读
- 该如何提高电路的工作频率 4551次阅读
- 集成单片PLL频率合成器芯片的原理、结构特点及应用分析 5706次阅读
- 电阻应变片工作原理_电阻应变片的类型 2.4w次阅读
- 基于FPGA器件的内块存储器资源功能验证方法设计详解 1654次阅读
- 如何利用片内RAM单元直接转换BCD 码与 BIN 数据 3641次阅读
- 电机刹车片工作原理 1.6w次阅读
- 基于FPGA的压控晶振同步频率控制系统的研究与设计 4948次阅读
- 基于单片机和FPGA的频率特性测试仪的设计 2363次阅读
- 基于FPGA的心电监护仪的片上系统的设计 1941次阅读
- 基于FPGA的宽频超声波电源频率跟踪系统设计 2832次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多