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. 【OpenGL ES】绘制魔方

    1 前言 ​ 在立方体贴图(6张图)中,绘制了一个立方体,贴了 6 张图,本文的魔方案例,将实现绘制 27个立方体,贴 162 张图.贴图图片如下: ​ 说明:inside.png 为魔方内部色块,用 ...

  2. Java使用ConcurrentHashMap实现简单的内存式缓存

    需求说明: 实际项目中我打算把用户和组织信息放到缓存中,基于此提出以下几点需求: 1.数据存储在内存中: 2.允许以键值对的方式存储对象类数据并带有过期策略: 3.不限制内存使用,但cache也不能给 ...

  3. java+文件实现的超市管理系统

    一.需求 1.使用java语言实现系统 2.数据存储使用io读写文件 3.超市的商品管理+销售功能 二.效果 商品列表 商品增删改查 购买 三.说明 1.开发工具/技术 java  eclipse 2 ...

  4. 修改centos7虚拟机的用户密码

    在忘记原密码无法登录桌面的情况下,修改centos7的用户密码 非常规启动,进入编辑启动菜单 在启动GRUB菜单中选择编辑选项,按键e进入编辑; 找到linux16开头的一行,在该行中寻找ro的所在地 ...

  5. Fasfdfs搭建

    目录 介绍 参考 tracker-server: storage-server: group: meta data: 部署 FastDfs服务架构图 本地部署服务 安装 libfastcommon 和 ...

  6. Inertial Explorer Xpress 学习笔记

    KEY WORDS: Coordinate Updates (CUPTs) Zero Velocity Updates (ZUPTs) Google Protocol Buffer (GPB)  是一 ...

  7. C#与C互操作

    C#给C++传递char**(转载) extern "C" _declspec(dllexport)void GetResult(char* a,char** pBuf) { sp ...

  8. Codeforces Round 922 (Div. 2)(A~D)补题

    A题考虑贪心,要使使用的砖头越多,每块转的k应尽可能小,最小取2,最后可能多出来,多出来的就是最后一块k=3,我们一行内用到的砖头就是\(\frac{m}{2}\)下取整,然后乘以行数就是答案. #i ...

  9. PetriCrode ---Code Genreation for Colored Petri Nets Annotated with Pragmatics

    1. PetriCode lets users generate code from CPN  models annotated with pragmatics ,PetriCode allows t ...

  10. 一键Run带你体验扩散模型的魅力

    本文分享自华为云社区<爆圈Sora横空出世,AGI通用人工智能时代真的要来了吗?一键Run带你体验扩散模型的魅力!>,作者: 码上开花_Lancer. Sora这几天的爆炸性新闻,让所有人 ...