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. D. Required Length

    D. Required Length 题意:给你一个长度n,一个数x,x每个后续状态可以由前一个状态乘以前一个状态的某一位上的数字得到,问最少多少步,能把x变成一个n位数.如果不能变成n位数,输出-1 ...

  2. QT - Day 1

    Date: 2021/3/12开始学习 教程视频: QT基本介绍: 跨平台图形界面引擎 优点  跨平台 接口简单,容易上手 一定程度上简化了内存回收 创建第一个QT程序  点击创建项目后,选择项目路径 ...

  3. Direct2D 旋转篇

    微软文档:Transforms 本篇通过官方文档学习,整理出来的demo,初始样本请先创建一个普通的desktop app. ID2D1SolidColorBrush* m_pOriginalShap ...

  4. 一个简单的Dockerfile多阶段构建go项目

    From golang:1.16-alpine3.13 AS builder WORKDIR /app COPY . . RUN go build -o main main.go From alpin ...

  5. html基础和js基础

    HTML基础 html文件结构 <!DOCTYPE html> 文档类型声明 <html lang="en"></html> 是html标签,称 ...

  6. mysql进阶优化2---day41

    # ### part1 索引树高度 # 1.表的数据量 数据量越大,树的高度就会变高,理论上三层索引树的高度最为理想,可以支持百万级别的数据量 解决:可以使用分表(横切,竖切),分库,增加缓存,解决数 ...

  7. 【ACM专项练习#02】输入整行字符串、输入值到vector、取输入整数的每一位

    输入整行字符串 平均绩点 题目描述 每门课的成绩分为A.B.C.D.F五个等级,为了计算平均绩点,规定A.B.C.D.F分别代表4分.3分.2分.1分.0分. 输入 有多组测试样例.每组输入数据占一行 ...

  8. [杂项] 抢单可能需要的API

    淘宝时间戳 http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp 京东库存查询 http://c0.3.cn/stock? ...

  9. Jmeter 之 forEach控制器

    1 添加方法: 线程组右键-> 添加 -> 逻辑控制器 ->ForEach控制器   2 作用: 可以更方便JMeter后置处理器提取出来的多组数据,也可以定义具有特定规则的数据,用 ...

  10. Java 类中属性的使用

    1 类中属性的使用: 2 * 属性(成员变量) 局部变量 3 * 1.相同点: 4 * 定义变量的个格式: 数据类型 变量名 = 变量值 5 * 先声明 后使用 6 * 变量都有其对应的作用域 7 * ...