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

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

3天内不再提示

如何提高FPGA的工作频率

FPGA设计论坛 ? 来源:未知 ? 2022-11-16 12:10 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如何提高电路工作频率

对于设计者来说,我们当然希望我们设计的电路的工作频率(在这里如无特别说明,工作频率指FPGA片内的工作频率)尽量高。我们也经常听说用资源换速度,用流水的方式可以提高工作频率,这确实是一个很重要的方法,今天我想进一步去分析该如何提高电路的工作频率。

我们先来分析下是什么影响了电路的工作频率。

我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关。在FPGA内部如果时钟走长线的话,clock skew很小,基本上可以忽略, 在这里为了简单起见,我们只考虑信号的传播时延的因素。

信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延(这样划分或许不是很准确,不过对分析问题来说应该是没有可以的),要提高电路的工作频率,我们就要在这三个时延中做文章,使其尽可能的小。

我们先来看开关时延,这个时延是由器件物理特性决定的,我们没有办法去改变,所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。

1.通过改变走线的方式减少时延。
altera的器件为例,我们在quartus里面的timing closure floorplan可以看到有很多条条块块,我们可以将条条块块按行和按列分,每一个条块代表1个LAB,每个LAB里有8个或者是10个LE。它们的走线时延的关系如下:同一个LAB中(最快) < 同列或者同行< 不同行且不同列。
我们通过给综合器加适当的约束(不可贪心,一般以加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语句去对命令进行译码,并触发相应的状态机,这样做下来这一个模块的频率就可以跑得比较高了。

总结:提高工作频率的本质就是要减少寄存器到寄存器的时延,最有效的方法就是避免出现大的组合逻辑,也就是要尽量去满足四输入的条件,减少LUT级联的数量。我们可以通过加约束、流水、切割状态的方法提高工作频率。



扫描二维码获取

更多精彩

FPGA设计论坛




欢迎关注至芯科技

至芯官网:www.zxopen.com

至芯科技技术论坛:www.fpgaw.com

至芯科技淘宝网址:

https://zxopen.taobao.com

至芯科技FPGA初级课程(B站):

https://space.bilibili.com/521850676

至芯科技FPGA在线课程(腾讯课堂):

https://zxopenbj.ke.qq.com/

至芯科技-FPGA 交流群(QQ):282124839






精彩推荐



至芯科技12年不忘初心、再度起航11月12日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询!
如何在FPGA设计中充分利用NoC资源?一招Get
FPGA从入门到高手
扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!



点个在看你最好看






原文标题:如何提高FPGA的工作频率

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

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

    关注

    1646

    文章

    22096

    浏览量

    620590

原文标题:如何提高FPGA的工作频率

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA上电工作,CYUSB3014工作异常,为什么?

    路电源。当FPGA工作,CYUSB3014会工作正常;当FPGA上电工作,CYUSB3014工作
    发表于 05-20 06:48

    FPGA是什么?应用领域、差分晶振作用及常用频率全面解析

    FPGA是什么?了解FPGA应用领域、差分晶振在FPGA中的作用、常用频率、典型案例及FCom差分振荡器解决方案,为高速通信、数据中心、工业控制提供高性能时钟支持。
    的头像 发表于 03-24 13:03 ?1782次阅读
    <b class='flag-5'>FPGA</b>是什么?应用领域、差分晶振作用及常用<b class='flag-5'>频率</b>全面解析

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

    本人正在公司做超声设备的开发,使用的是TI公司08年推出的AFE5804,用Xilinx公司的FPGA控制该芯片工作FPGA输出芯片工作需要的时钟信号,为差分信号,CLKP-CLK
    发表于 02-13 07:15

    FPGA频率测量的三种方法

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

    ADS1274采样频率怎么能提高呢?

    在ADS1274的数据手册第28页给出了在帧同步模式下,“准备好新数据的时间”(。Time for new data to be ready,这个时间最少也是127个采样周期,这样的话,采样频率怎么能提高呢??????????还是说我理解的有问题。希望高手解答一下。
    发表于 01-02 06:51

    请问DS90UB903Q的IIC工作频率必须为100KHz吗?

    问题:DS90UB903Q的IIC工作频率必须为100KHz吗? 问题发生条件:芯片配置:DS90UB903Q的工作电压为1.8V,VCCIO为3.3V;MODE=1,PDB=1;Rid=0ohm
    发表于 12-26 07:08

    使用FPGA驱动ADS7841芯片,采样频率是200ks/s,在DCKL输入的频率是多少才合适呢?

    这是我第一次接触AD芯片 我想使用FPGA驱动ADS7841芯片,我想要的采样频率是200ks/s,请问我我在DCKL输入的频率是多少才合适呢? 此外,如果有相关的FPGA驱动AD芯
    发表于 11-20 08:08

    FPGA基础知识及设计和执行FPGA应用所需的工具

    本文将首先介绍FPGA的基础知识,包括FPGA工作原理以及为什么要使用FPGA等,然后讨论设计和执行FPGA应用所需的工具。
    的头像 发表于 11-11 11:29 ?1918次阅读
    <b class='flag-5'>FPGA</b>基础知识及设计和执行<b class='flag-5'>FPGA</b>应用所需的工具

    TPA3118和TPA3116提高开关频率是否会影响芯片寿命?

    TPA3118和TPA3116提高开关频率是否会影响芯片寿命? 如果TPA3118提高开关频率,需要加散热器嘛? 虽然说TPA3118和3116不一样,散热的PAD不是朝上的,家散热
    发表于 10-12 06:59

    非晶纳米晶磁芯工作频率是多少

    非晶纳米晶磁芯的工作频率范围相对较广,通常适用于50Hz至100kHz的频率范围,且最佳频率范围在20kHz至50kHz之间。然而,也有资料指出,非晶纳米晶磁芯的
    的头像 发表于 10-09 09:15 ?3859次阅读

    怎么样提高verilog代码编写水平?

    ,共同进步。 欢迎加入FPGA技术微信交流群14群! 交流问题(一) Q:怎么样提高verilog代码编写水平?Cpu 从事DFT工作。目前仅限于写一些简单模块。自学的话如何提高ver
    发表于 09-25 20:05

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

    电子发烧友网站提供《提高高开关频率下更高负载的效率应用报告.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 ?4455次阅读

    LLC电源转换器的工作频率

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

    如何使用Copilot提高工作效率

    的商业变革阶段,全球的领导者们都在探寻一个共同的问题:我如何确定AI是否真正改善了人们的工作体验,提高工作效率?
    的头像 发表于 08-20 09:59 ?1091次阅读