为了对工程的资源利用率进行优化,我们首先需要知道当前工程对资源的利用率情况。在Vivado下,我们可以查看工程的资源利用率情况,在下面这张图中,其罗列出了整个工程所使用的资源情况。首先,下面我们需要一一对LUT/LUTRAM/FF/DSP/IO/BUFG/MMCM这些英文所代表的含义作出解释:

LUT:Look-Up-Table,即查找表。

LUTRAM

-资源利用率中的LUT是指设计中消耗的所有LUT,包括用做逻辑函数发生器的LUT(SLICEL中的LUT),也包括用做存储单元的LUT(SLICEM中的LUT)

-资源利用率报告中的LUTRAM是指设计中消耗的SLICEM中的LUT(用做分布式RAM/ROM或移位寄存器)

FF:Flip-Flops,触发器

BRAM:Block RAM,储存单元

DSP:运算单元(DSP48E1)

IO:输入输出管脚

BUFG: BUFG是把局部时钟转为全局时钟,减少时钟延迟。.它可以驱动所有的IO和逻辑,

MMCM:(Mixed-Mode Clock Manager)混合模式时钟管理器

IBUFDS

IBUFDS原语用于将差分输入信号转化成标准单端信号,且可加入可选延迟。在IBUFDS原语中,输入信号为I、IB,一个为主,一个为从,二者相位相反。

MUX:F7AMUX, F7BMUX和 F8MUX三种复用器

为了更好的理解以上英文概念,我们先要知道FPGA中其内部结构。参考:xilinx官方文档UG474《7 Series FPGAs Configurable Logic Block》和White Paper《Xilinx 7 Series FPGAs:The Logical Advantage》。下表是一张Artix-7 FPGA CLB资源表:

在Xilinx 7系列的FPGA芯片中,其组成的基本单元为CLB(Configurable Logic Block)。CLB是实现时序逻辑组合逻辑电路的主要逻辑单元。一个CLB由两个Slice组成,每个Slice由4个6输入LUT、8个FF、复用器和算术进位单元组成。

同时SLICE有区分为二:SLICEL和SLICEM(没有看到缩写L/M全程,个人认为是Logic和Multiple缩写,从下面定义可以看出)。大约2/3的是SLICEL(只能用于logic),剩下的是SLICEM(还可以用于distributed RAMs/SRLs32/SRLs16)。

通过以上的分析,每个CLBs具体的资源配置如下:

好了,有了以上对Xilinx 7系列的FPGA芯片内部结构的基础认识。我们再来看看Vivado下那张资源利用率的图:

LUT:Look-Up-Table,即查找表。

LUT的作用是实现所有的逻辑函数,也就是类似于计算Y=A&B+C+D之类的算式结果! 下图是一个查找表功能表:

LUT的一个重要功能是逻辑函数发生器。本质上,逻辑函数发生器存储的是真值表(Truth Table)的内容,而真值表则是通过布尔表达式获得。在vivado中,打开网表文件,选择相应的LUT,在property窗口中可以看到真值表。

下图是一个6输入查找表内部结构:

6输入查找表内部结构

例子:对于4输入的LUT而言,实际上就是4位地址位,一位数据位的存储器,能够存储16位数据,所以我们在FPGA设计中可以用LUT组建分布式的RAM。

LUTRAM

-资源利用率中的LUT是指设计中消耗的所有LUT,包括用做逻辑函数发生器的LUT(SLICEL中的LUT),也包括用做存储单元的LUT(SLICEM中的LUT)

-资源利用率报告中的LUTRAM是指设计中消耗的SLICEM中的LUT(用做分布式RAM/ROM或移位寄存器)

FF:Flip-Flops,触发器

BRAM:Block RAM,储存单元

每个BRAM大小为36KB(RAMB36E1),由两个独立的18KB BRAM(RAMB18E1)构成。BRAM与查找表构成的分布式RAM的差异如表1.3所示。尽管BRAM可支持更多的功能,但这并不表明BRAM在任何场合都具有优势。对于一些小规模的数据存储,分布式RAM可获得与BRAM相媲美甚至比BRAM更好的性能(从功耗和速度两方面比较)。

DSP:运算单元(DSP48E1),7系列FPGA中运算单元为DSP48E1,它不仅可以实现逻辑运算,如与、或、异或,也可以实现算术运算,如加法、乘法、乘累加等。

IBUFDS

IBUFDS原语用于将差分输入信号转化成标准单端信号,且可加入可选延迟。在IBUFDS原语中,输入信号为I、IB,一个为主,一个为从,二者相位相反。

如iserdes.v模块中

IBUFDS #(

.DIFF_TERM("TRUE"), // Differential Termination

.IBUF_LOW_PWR("FALSE"), // Low power="TRUE", Highest performance="FALSE"

.IOSTANDARD("LVDS_25") // Specify the input I/O standard

) Dclk_IBUFDS_inst (

.O(Adc_DCLK_p), // Buffer output

.I(Adc_DCLK_0_p_pin), // Diff_p buffer input (connect directly to top-level port)

.IB(Adc_DCLK_0_n_pin) // Diff_n buffer input (connect directly to top-level port)

);

参考文献:https://www.cnblogs.com/xiaoxuesheng993/p/9187499.html

全局时钟网络(BUFG、BUFH)、区域时钟网络(BUFR、BUFMR)和IO时钟网络(BUFIO)

BUFG:全局时钟缓存器

BUFH:水平时钟缓存器

BUFIO:IO时钟缓存器

BUFR:区域时钟缓存器

BUFMR:多区域时钟缓存器

MMCM:混合模式时钟管理器

PLL:锁相环

参考文献:

https://blog.csdn.net/weixin_46062412/article/details/114992793?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-14.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-14.no_search_link

UG474的更多相关文章

  1. 基础002_V7-CLB

    一.综述 参考ug474.pdf: 7系列中,一个CLB包含两个slice: 每个CLB的资源: CLB可配置的主要功能: 二.主要功能 LUT是基本单元,例如选择器assign muxout =  ...

  2. FPGA基础学习(7) -- 内部结构之CLB

    目录 1. 总览 2. 可配置逻辑单元 2.1 6输入查找表(LUT6) 2.2 选择器(MUX) 2.3 进位链(Carry Chain) 2.4 触发器(Flip-Flop) 参考文献: 一直以来 ...

随机推荐

  1. ToneGenerator Init failed Crash 崩溃

    需求需要在扫码时产生一个短促的提示音, 搜了下像这样实现.测试时发现多次扫码后,会触发程序崩溃问题. 异常如下 java.lang.RuntimeException: Init failed at a ...

  2. MySQL 知识点总结(简易版)

    MySQL 总结(简易版) 基本语法 0. 1基本语法 # 登录MySQL $ mysql -u root -p12345612 # 退出MySQL数据库服务器 exit; -- 显示所有数据库 sh ...

  3. 【K哥爬虫普法】孤注一掷的爬虫er,究竟还要误入歧途多远?

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  4. 【0基础学爬虫】爬虫基础之自动化工具 Selenium 的使用

    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶.逆向相关文章,为实现从易到难全方位覆盖,特设[0基础学爬 ...

  5. C/C++ Npcap包实现数据嗅探

    npcap 是Nmap自带的一个数据包处理工具,Nmap底层就是使用这个包进行收发包的,该库,是可以进行二次开发的,不过使用C语言开发费劲,在进行渗透任务时,还是使用Python构建数据包高效,这东西 ...

  6. C++界面库(十几种,很全)

    C++界面库是用于GUI界面设计的工具包,可以帮助开发人员快速开发出美观.易用的界面.在选择C++界面库的时候,开发人员需要根据项目要求.使用场景.开发难易程度以及所适配的操作系统等因素进行综合考虑. ...

  7. 【动态内存】C语言动态内存使用常见错误及其避免方法(初学者避雷)

    C语言动态内存使用常见错误及其避免方法(初学者动态内存避雷手册) 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要 ...

  8. 自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人

    如今,大模型层出不穷,这为自然语言处理.计算机视觉.语音识别和其他领域的人工智能任务带来了重大的突破和进展.大模型通常指那些参数量庞大.层数深.拥有巨大的计算能力和数据训练集的模型. 但不能不承认的是 ...

  9. 零基础入门学习Java课堂笔记 ——day05

    面向对象(上) 面向过程:我打算列个计划表一步一步来 面向对象:我喜欢先分析分类,把复杂的问题简单化 1.什么是面向对象!!? 面向对象的本质就是:以类的方式组织代码,以对象的方式组织数据 封装 继承 ...

  10. .NET Core开发实战(第35课:MediatR:让领域事件处理更加优雅)--学习笔记

    35 | MediatR:让领域事件处理更加优雅 核心对象 IMediator INotification INotificationHandler 这两个与之前的 Request 的行为是不一样的, ...