本章目录:

  • 1. 查表法 (LUT)
  • 2. 可编程逻辑块 (CLB)
    • 2.1 补充
  • 3. 面积/速度问题
    • 3.1 面积(资源)优化
      • 3.1.1 面积优化意义:
      • 3.1.2 面积优化方法
    • 3.2 速度优化
      • 3.2.1 速度优化方法
  • 4. 为什么一般都时钟上升沿操作呢?
  • 声明

1. 查表法 (LUT)

查找表(look-up-table)简称为 LUT,LUT 本质上就是一个 RAM。目前 FPGA 中多使用 4 输入的 LUT,所以每一个 LUT 可以看成一个有 4 位地址线的 16x1 的RAM。 当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

2. 可编程逻辑块 (CLB)

CLB是指可编程逻辑功能块(Configurable Logic Blocks),顾名思义就是可编程的数字逻辑电路。CLB 是 FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个CLB 都包含一个可配置开关矩阵,此矩阵由 4 或 6 个输入、一些 选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或 RAM。在 Xilinx 公司的 FPGA 器件中,CLB 由多个(一般为 4 个或 2 个) 相同的 Slice和附加逻辑构成。每个 CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式 RAM 和分布式 ROM。

2.1 补充

Slice 是 Xilinx 公司定义的基本逻辑单位,一个 Slice 由两个 4输入的函数、进位 逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个 Slice 实现 2bit 全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4 输入函数发生 器用于实现 4 输入 LUT、分布式 RAM或 16 比特移位寄存器(Virtex-5 系列芯片的 Slice 中的两个输入函数为 6 输入,可以实现 6输入 LUT 或 64 比特移位寄存器);进位逻辑包括两条快速进位链,用于提高 CLB 模块的处理速度。

3. 面积/速度问题

3.1 面积(资源)优化

无论是在 ASIC 还是 FPGA 中,硬件设计资源即面积(Area)是一个重要的技术指标。

3.1.1 面积优化意义:

  1. 可使用规模更小的可编程器件,降低系统成本,提高性价比。
  2. 当耗用资源过多时会严重影响时序性能。
  3. 为后续技术升级留下更多的可编程资源。
  4. 资源耗用太多会使器件功耗显著上升。

3.1.2 面积优化方法

  1. 资源共享
    主要针对数据通路中耗费逻辑资源较多的模块,通过选择、复用的方式共享使用该模块,达到减少资源使用、优化面积的目的。并不是在任何情况下都能以此法实现资源优化,输入与门之类的模块使用资源共享是无意义的,有时甚至会增加资源的使用(多路选择器的面积显然要大于与门)。高级的 HDL 综合器,如 QuartusII 和 Synplify Pro 等,通过设置能自动识别设计中需要资源共享的逻辑结构,自动地进行资源共享。
  2. 逻辑优化
    使用优化后的逻辑进行设计,可以明显减少资源的占用。状态机的设计要尽可能简洁,不要搞出不必要的,多个状态对同一个数据做处理。if 语句中用单 bit 的标志位代替多 bit 的数据来进行条件判断。设计尽可能简洁,不要弄出冗余赋值。
  3. 串行化
    将原来耗用资源巨大、单时钟周期内完成的并行执行的逻辑块分割开,提取出相同的逻辑模块(一般为组合逻辑块),在时间上利用该逻辑模块,用多个时钟周期完成相同的功能,其代价是工作速度被大为降低。

3.2 速度优化

一般来说,速度优化比资源优化更重要,需要优先考虑。速度优化包括:FPGA 的结构特性、HDL 综合器性能、系统电路特性、PCB 制版情况等,也包括 Verilog 的编程风格。下面主要讨论电路结构方面的速度优化方法。

3.2.1 速度优化方法

  1. 流水线设计
    流水线(Pipelining)是一种在复杂组合逻辑之间添加寄存器的方法,是最常用的速度优化技术之一。它能显著地提高设计电路的运行速度上限。
  2. 寄存器配平
    寄存器配平 (Register Balancing)是使较长路径缩短,较短路径加长,使其达到平衡从而提高工作频率的一种技术。若设计中,若两个组合逻辑块的延时差别过大,若 T1>T2,则总体的工作频率 fmax 取决于T1, 即最大的延时模块。对不合理设计进行改进,即将原本设计中的组合逻辑 1 的部分逻辑转移到组合逻辑 2 中,使 t1≈t2,且 T1+T2=t1+t2, T1>t1 则总体的工作频率 fmax 提高。
  3. 关键路径法
    关键路径:指设计中从输入到输出经过的延时最长的逻辑路径。优化关键路径是提高设计工作速度的有效方法。EDA 工具中的综合器及设计分析器都提供关键路径的信息以便设计者改进设计。Quartus 中的静态时序分析工具可以帮助找到延时最长的关键路径。
  4. 乒乓操作法
    乒乓操作法是 FPGA 开发中的一种数据缓冲优化设计技术,可视作另一种形式的流水线技术。乒乓操作本质是使用 2 倍的硬件资源,通过将数据产生时间和数据使用时间重叠,解决一个数据生产效率低于数据使用效率的问题。是一种拿面积换性能的方法。通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流“无缝”地送到“数据流运算处理模块。
  5. 树形结构法
    若要实现 A+B+C+D。首先实现 AB=A+B,CD=C+D,将 AB/CD 锁存一个时钟周期再相加。树形结构法和上面面积优化提到的串行化是相反的。

4. 为什么一般都时钟上升沿操作呢?

这个是根据器件的物理特性所决定的,我们一般都是硅芯片,硅芯片用到了电容的充放电,充电的过程是比较快的,而放电的过程比较慢,这样,为了满足建立时间、保持时间的要求,所以上升沿比较容易满足,因此,一般情况下都采用上升沿。

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得收藏+评论!!!

【基础知识】~ LUT、CLB、面积/速度问题相关推荐

  1. python代码计算矩形面积_学习资料Python语言基础知识笔记以及答案

    01. Python语言基础知识等笔记: 02. Python作业答案: [例2-3]通过输入函数input()输入股票代码.股票名称.当天股票最高价和最低价,通过输出函数print()输出股票代码+ ...

  2. Xiaojie雷达之路---毫米波雷达基础知识---速度估计

    本篇文章主要是介绍毫米波雷达的基础知识中的速度估计,对于本篇文章主要回答4个问题 1. 雷达如何估计一个物体的速度 2. 如果有多个物体,距离雷达的距离一样,但是速度不一样,会发生什么情况 3. 两个 ...

  3. 【深度学习基础知识 - 21】加快模型训练速度的方法

    在深度学习任务中,虽然可以通过堆叠参数.设计更复杂的结构来提高模型的表征能力,但这也会导致模型的计算量增加,训练时间延长,大大降低模型的产出效率.这篇文章根据博主的经验简单介绍一些加快模型训练速度的方 ...

  4. 计算机基础知识整理大全_【干货整理】高中文言文基础知识大全,速度收藏!...

    今天和大家分享的是 高中文言文基础知识大全 高中文言文基础知识大全 文言文是以古汉语文雅的口语为基础的书面形式,在远古时代文言文与平常的口语的差异微乎其微.现今文言文是中国古代的一种书面语言组成的文章 ...

  5. 微型计算机硬件中访问速度最快的,习题一计算机基础知识.doc.doc

    习题一计算机基础知识.doc.doc 习题一 计算机基础知识 选择题 1.微型计算机系统包括 . A.主机和外设 B. 硬件系统和软件系统 C. 主机和各种应用软件 D. 运算器.控制器和存储器 2. ...

  6. 初学者必须要知道的FPGA基础知识

    初学者必须要知道的FPGA基础知识 一.FPGA是什么? 在<FPGA至简设计原理与应用>一书里是这样描述的:『FPGA的全称为Field-Programmable Gate Array, ...

  7. FPGA基础知识|芯片设计基础知识

    FPGA 基础知识 可查看原文:FPGA基础知识 1.查找表 LUT 和编程方式第一部分: 查找表 LUT FPGA 是在 PAL.GAL.EPLD.CPLD 等可编程器件的基础上进一步发展的产物.它 ...

  8. 学习 FPGA之前的基础知识

    在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门.所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的.但小编认为,若能先结合& ...

  9. Deep learning:一(基础知识_1)

    前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下m ...

最新文章

  1. DISCUZ X2更换域名注意事项
  2. 详解MTK系统中字符转换问题
  3. 你好,同学!在云端学习最潮的技术吧!
  4. C++资源库不完全版本
  5. oracle宕机原因排查,oracle不定期的出现宕机的问题诊断
  6. MFC开发IM-第十八篇、如何设置编辑框的内容
  7. win10应用商店打不开_为何win10应用商店不能下载itunes
  8. Google网络硬盘(GDrive):千呼万唤不出来
  9. matlab 查找字符串数组,Matlab之字符串数组查找
  10. 单片机电流检测电路图大全(四款模拟电路设计原理图详解) - 信号处理电子电路图
  11. 什么是证券市场?证券市场有哪些组成
  12. Word中替换手动换行符的处理
  13. 阿里云服务器的购买以及使用
  14. 高斯判别算法GDA(吴恩达机器学习c#实践,高斯模板上同心椭圆马氏距离画法,三)
  15. 医院信息化-4 趋势与技术应用
  16. Win7系统设置共享打印机出现0x000006d9错误怎么办?
  17. 道闸系统服务器功能,道闸系统_停车场自动道闸系统 - 九鼎智能
  18. 一鸣心所向:日增3倍+粉丝量?
  19. 正则匹配过滤空格字符串
  20. 2019年PMP考试报名费用介绍

热门文章

  1. 在Word中巧改厘米标尺(转)
  2. laravel excel导入导出box/spout
  3. 华为交换机配置mac地址白名单接入
  4. IDEA使用archetype创建Maven项目(只有两个archetype)
  5. 2021.07.13 我们是这样崩的
  6. 程序员鄙视链至今还存在,你咋想不通呢?看完给你理清思绪
  7. CONCATENATE示例
  8. XStream分析(2)
  9. UP Meta—Web3.0世界创新型元宇宙金融协议
  10. 【Unity VR开发】结合VRTK4.0:瞬移点