0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA片内的工作频率该如何提高?

电子设计 ? 来源:电子设计 ? 作者:电子设计 ? 2020-10-30 12:31 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对于设计者来说,当然希望我们设计的电路的工作频率(在这里如无特别说明,工作频率指 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。

除此以外,在使用 EDA 工具设计时,软件是否稳定也是我们需要考虑的问题。比如:

1、500M 的芯片,跑不了 50M 的逻辑,EDA 工具都出现哪些设计问题?


2、为什么只是做了简单的逻辑,最终却导致布线拥堵?


3、使用在线逻辑分析仪,经常抓取不到自己想要的信号?

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22097

    浏览量

    620711
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于激光频率梳原理对深孔轮廓测量方法的探究

    摘要 本文针对深孔轮廓高精度测量需求,探究基于激光频率梳原理的测量方法。阐述方法测量原理、系统构成与测量步骤,通过实例分析其在深孔轮廓测量中的优势,为深孔
    的头像 发表于 06-04 11:17 ?239次阅读
    基于激光<b class='flag-5'>频率</b>梳原理对深孔<b class='flag-5'>内</b>轮廓测量方法的探究

    AFE5804工作频率为10M或者10M以上时,输出的FCLK满足要求,但LCLK就会变得很小,怎么解决?

    本人正在公司做超声设备的开发,使用的是TI公司08年推出的AFE5804,用Xilinx公司的FPGA控制芯片工作FPGA输出芯片工作
    发表于 02-13 07:15

    FPGA频率测量的三种方法

    1、FPGA频率测量? 频率测量在电子设计和测量领域中经常用到,因此对频率测量方法的研究在实际工程应用中具有重要意义。 通常的频率测量方法有
    的头像 发表于 01-09 09:37 ?832次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>频率</b>测量的三种方法

    EE-127:ADSP-21065LSDRAM控制器

    电子发烧友网站提供《EE-127:ADSP-21065LSDRAM控制器.pdf》资料免费下载
    发表于 01-06 15:45 ?0次下载
    EE-127:ADSP-21065L<b class='flag-5'>片</b><b class='flag-5'>内</b>SDRAM控制器

    ADSP-21161 SHARCSDRAM控制器

    电子发烧友网站提供《ADSP-21161 SHARCSDRAM控制器.pdf》资料免费下载
    发表于 01-03 15:04 ?0次下载
    ADSP-21161 SHARC<b class='flag-5'>片</b><b class='flag-5'>内</b>SDRAM控制器

    请问ADC32XX CLKP,CLKM;SYSREFP,SYSREFM如何配置?

    ,SYSREFM如何配置?是由FPGA产生还是由晶振,频率又是多少?ADC输出的数据同时还有两组信号,DCLK和FCLK,是否都必须接至FPGA,都有什么作用?谢谢。
    发表于 01-02 08:21

    当DSP与FPGA通讯的时候,XZCS0、XZCS6、XZCS7会影响ADS8556的工作吗?

    FPGA选的话,不用选信号,DSP只对FPGA写数据,现在的问题是当DSP与FPGA通讯的时候,XZCS0、XZCS6、XZCS7会影
    发表于 12-20 07:30

    ADS54J544个通道,通道BC的同步精度很差,而且是随机的,为什么?

    ADS54J544个通道,通道AB同步精度在几十ps,通道CD同步精度在几十ps,但是通道BC的同步精度很差,而且是随机的。目前使用的工作
    发表于 12-20 06:54

    是否可以使用TLC320AIC3262miniDSP_A进行FFT变换对ADC采样后的一组数据进行FFT?

    是否可以使用TLC320AIC3262miniDSP_A进行FFT变换对ADC采样后的一组数据进行FFT,通过主控器(FPGA)通过SPI读取转换后的各阶分量
    发表于 10-24 06:53

    配置和优化DAC348x的PLL

    电子发烧友网站提供《配置和优化DAC348x的PLL.pdf》资料免费下载
    发表于 10-18 10:36 ?0次下载
    配置和优化DAC348x的<b class='flag-5'>片</b><b class='flag-5'>内</b>PLL

    冷光驱动器最佳频率是多少

    冷光驱动器的最佳频率并不是一个固定的值,而是取决于多个因素,包括冷光的具体类型、所需的亮度、工作电压、环境条件(如温度和湿度)以及设备的整体设计等。以下是对冷光
    的头像 发表于 09-24 11:23 ?791次阅读

    提高高开关频率下更高负载的效率应用报告

    电子发烧友网站提供《提高高开关频率下更高负载的效率应用报告.pdf》资料免费下载
    发表于 09-13 09:33 ?0次下载
    <b class='flag-5'>提高</b>高开关<b class='flag-5'>频率</b>下更高负载的效率应用报告

    什么是DDR4内存的工作频率

    DDR4内存的工作频率是指DDR4内存条在运行时所能达到的速度,它是衡量DDR4内存性能的一个重要指标。DDR4内存作为目前广泛使用的内存类型之一,其工作频率经历了从最初的低
    的头像 发表于 09-04 12:45 ?4508次阅读

    实现多轴电机驱动系统的多C2000 PWM同步

    电子发烧友网站提供《实现多轴电机驱动系统的多C2000 PWM同步.pdf》资料免费下载
    发表于 09-03 09:25 ?2次下载
    实现多轴电机驱动系统<b class='flag-5'>内</b>的多<b class='flag-5'>片</b>C2000 PWM同步

    LLC电源转换器的工作频率

    LLC电源转换器的工作频率是一个关键参数,它直接影响到变换器的性能、效率和稳定性。然而,要详细阐述LLC电源转换器的工作频率,需要深入探讨其工作
    的头像 发表于 08-20 17:19 ?2420次阅读