FPGA中的面积优化

一、优化的意义

面积优化,就是在实现预定功能的情况下,使用更小的面积。通过优化,可以使设计能够运行在资源较少的平台上,节约成本,也可以为其他设计提供面积资源。

二、操作符平衡

对于复杂逻辑操作,输入到输出的对称性越好,往往中间逻辑就越少,面积越小。一般优化中,可以将不关注中间信号的设计的逻辑优化掉,实现对称结构。

三、打破设计流水

流水设计可以提高时序余量,同样需要消耗面积资源。去除这些缓存器,降低设计的频率,即可实现面积的优化。

四、资源共享

(1)互斥操作的共享

对于不会同时出现的操作,其共用单元可以共享,方法有很多,简单的就是使用控制信号切换模块的工作模式。

(2)表达式共享

将可以写成一样结构的表达式用括号连接起来。

(3)逻辑功能模块共享

某些逻辑功能相同的模块,可以进行共享,但是控制逻辑可能会复杂一些。

五、复位对设计面积的影响

能不用复位最好不用,优先使用异步复位,其次使用同步复位。三者的资源消耗依次增加。

六、器件角度的面积节约

(1)使用原语设计

可以直接调用数字电路的结构,降低面积的使用率。

(2)使用触发器控制端口

某些复位信号可以作为输入来实现某些功能。

(3)多路选择器优化

每个LAB自带的信号有:时钟、时钟使能、异步清零、异步加载、同步清零、同步加载。

1️⃣时钟和时钟使能

时钟用于驱动LAB中的寄存器,时钟使能则是驱动数据。但是一般不要使用这些低扇出的信号,对LAB的使用率产生消极的影响。

2️⃣异步加载和异步清零

异步清零可以使用全局或者普通布线资源,二异步加载只能使用普通布线资源。两者同样控制LAB内部的寄存器。

3️⃣同步清零和加载

在LAB中,同步信号一般全局使用。

了解了LAB常用的信号,然后看一下多路选择器的实现:

①二进制多路选择器(case):二进制编码的选择器

②多路复用选择器(case 状态机 IF):采用独热编码的选择器

③带优先级多路选择器(IF):由比较器组成的选择器。

上面三种结构中,资源消耗依次增加。

如果想进一步缩小资源消耗,则可以使用LAB的全局资源实现选择。

七、小结

想要节约面积,就必须尽可能地利用资源。从简单的从大到小的顺序调整,到人为的共享,再到结构的改变,还有硬件结构资源的利用,都是在不断地提高资源使用频率。对于某些设计的资源紧张时,可以考虑这些方法进行设计简化。

FPGA中的面积优化的更多相关文章

  1. FPGA 设计怎样进行面积优化(逻辑资源占用量优化)

    FPGA面积优化 1 对于速度要求不是非常高的情况下,我们能够把流水线设计成迭代的形式,从而反复利用FPGA功能同样的资源. 2 对于控制逻辑小于共享逻辑时,控制逻辑资源能够用来复用,比如FIR滤波器 ...

  2. FPGA中改善时序性能的方法_advanced FPGA design

    本文内容摘自<advanced FPGA design>对应中文版是 <高级FPGA设计,结构,实现,和优化>第一章中的内容 FPGA中改善时序,我相信也是大家最关心的话题之一 ...

  3. FPGA中竞争冒险问题的研究

    什么是竞争冒险? 1 引言     现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能. FPGA可以替代其他PLD或者各种中小规模数 ...

  4. 巧用FPGA中资源

    随着FPGA的广泛应用,所含的资源也越来越丰富,从基本的逻辑单元.DSP资源和RAM块,甚至CPU硬核都能集成在一块芯片中.在做FPGA设计时,如果针对FPGA中资源进行HDL代码编写,对设计的资源利 ...

  5. FPGA中的delay与latency

    delay和latency都有延迟的意义,在FPGA中二者又有具体的区别. latency出现在时序逻辑电路中,表示数据从输入到输出有效经过的时间,通常以时钟周期为单位. delay出现在组合逻辑电路 ...

  6. FPGA中的INOUT接口和高阻态

    除了输入输出端口,FPGA中还有另一种端口叫做inout端口.如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接.但是,有时候半双工通信就能满足我们的要求,理论上 ...

  7. FPGA中的时序分析(四)

    常用约束语句说明 关于Fmax      上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...

  8. 浅谈iOS中的视图优化

    引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为 ...

  9. Visual C++中的编译器优化

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Visual C++中的编译器优化.

  10. 【转】关于FPGA中建立时间和保持时间的探讨

      时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...

随机推荐

  1. java 注解结合 spring aop 实现自动输出日志

    auto-log auto-log 是一款为 java 设计的自动日志监控框架. 创作目的 经常会写一些工具,有时候手动加一些日志很麻烦,引入 spring 又过于大材小用. 所以希望从从简到繁实现一 ...

  2. 【Unity3D】边缘检测特效

    1 边缘检测原理 ​ 边缘检测的原理是:检测每个像素周围的像素亮度差,如果亮度差异较大,就将该像素识别为边缘,并进行边缘着色. ​ 本文完整资源见→Unity3D边缘检测特效. ​ 使用过卷积神经网络 ...

  3. 易语言连接Mysql

    最近在写游戏的辅助工具研究了下易语言,下面就说下如何连接Mysql. .版本 2 .支持库 mysql .支持库 spec Mysql句柄 = 连接MySql ("127.0.0.1&quo ...

  4. html中iframe调用兄弟iframe中的js方法

    问题说明 最近工作中碰到一个页面有一个主iframe A,用于操作主要业务元素.其中有一个弹出框里面也嵌入了一个iframe B, 此时,我需要在B中调用A中JS的指定方法.下面咱们来通过例子还原一下 ...

  5. 硬件开发笔记(五): 硬件开发基本流程,制作一个USB转RS232的模块(四):创建CON连接器件封装并关联原理图元器件

    前言   有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的.为了更好的表述封装设计过程,本文描述了一个创建CON标准连接件封装,创建 ...

  6. ZYNQ核心板及其底板开源啦!

    Hello-FPGA ZYNQ 设计开源啦! 开源ZYNQ核心板 + 底板 硬件设计.软件设计,软件设计使用裸机演示,演示了如何使用AXI DMA等关键dma 模块 欢迎加QQ 讨论 94755958 ...

  7. 【Azure 应用服务】Function App中的函数(Functions)删除问题

    问题描述 Function App 中的函数如何删除问题 问题分析 1)在Function App的门户上,点击"Delete"进行删除 2) 进入Function App的高级管 ...

  8. 一次生产环境OOM排查

    一.背景 前几天下午飞书告警群里报起了java.lang.OutOfMemoryError: unable to create new native thread告警,看见后艾特了对应的项目负责人但是 ...

  9. Python 潮流周刊第 40 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  10. 以Servlet来解释 抽象实现类

    在 Java Servlet API 中: Servlet 接口定义了一个 Servlet 的基本行为.这个接口是抽象的,因为它包含抽象方法,比如 service(), init(), 和 destr ...