发布时间:2022-08-19 13:59
文章目录
系列目录与传送门
概述
设计中内部存储资源的使用
FPGA 中的存储资源
块 RAM
拆分块RAM
同步操作
字节宽写使能
错误检测和纠正
FIFO控制器
分布式内存(DRAM)
典型的用户设计利用
无穷小基块的代价
对设备资源的影响
Block RAM 阵列的功率优化
功耗的重要性
未使用的 Block RAM
使用 XST(xilinx synthesis tools) 推断 RAM
使用 CORE Generator 构建 RAM
结论
《从底层结构开始学习FPGA》目录与传送门
本文主要翻译自《WP377----Xilinx 7 Series FPGAs Embedded Memory Advantages》,浅蓝色字体为本人理解。
Xilinx 7系列FPGA具有灵活的内部存储资源架构,可以可配置为各种不同的尺寸。本文详细解释了这一特性,并阐述了如何进行资源与性能之间的权衡取舍。
不同的用户可能需要不同容量的RAM来构建他们的特定应用。所以FGPA底层的RAM基块大小就是一个有意思的话题。如果太大,则不够灵活,难以满足小容量的应用,当然可以直接用大容量RAM来实现小容量应用,但这难免造成大量的资源浪费;如果基块太小,则中等或者大型RAM应用会需要大量的小型RAM来构成,小型RAM为了普适性,也会配备同样的信号输入接口,这样一来则会大大消耗FPGA内部的布线资源,甚至会造成布线拥挤和时序问题。
几乎所有在 FPGA 中构建的设计都需要使用一定大小的内部存储器资源来存储系数、缓冲数据以及各种其他用途。典型系统需要小型、中型和大型存储器阵列的组合来满足它们的所有要求,存储器的整体功耗因此成为设计的主要关注点。
在设计FPGA时,重要的是要创建满足大多数客户需求的器件。如果 FPGA是用适合一个应用的小型、中型和大型存储器资源构建的,那么该解决方案对于某些客户来说将是最佳的,而其他想要使用相同部件的客户可能需要做出相当大的取舍。
试图从他们的 FPGA 中获得最佳价值的用户可能会担心大容量RAM 中的资源浪费。但是,构建更精细、更小的 RAM基块需要额外的连线,这是有代价的。本文解释了权衡取舍:为什么更精细的RAM基块的成本通常更高。
图 1 显示了 FPGA 中小型、中型和大型存储器块的理论分布(未按任何特定比例绘制)。
恰好需要这种块组合的设计能够完美地利用可用资源(参见图 2)。
然而,想象一个场景----用户只需要另外四个中等大小的资源。
一种方法是用大量小组件构建中型内存阵列,这会消耗大量资源并导致将它们连接在一起的复杂性。另一种选择是使用一个大块作为中块,使大块中的所有剩余资源不可用,同时保持它们通电,因此会消耗功耗(参见图 3)。
FPGA 制造商面临的挑战是构建具有最灵活的内存资源组合的设备,让所有用户能够将他们所需的内存阵列大小安装到设备中,同时实现所需的性能且不会浪费大量的资源和功耗。
这一章是对BRAM资源的讲述,更详细的内容可以看这里:从底层结构开始学习FPGA----Block RAM(BRAM,块RAM)
Xilinx FPGA 使用各种存储资源,以提供最好的灵活性和低成本组合。包括 Artix™-7、Kintex™-7 和 Virtex®-7 系列在内的所有 7 系列 FPGA 都使用相同的内存块,从而能够从一个 7 系列 FPGA 系列完美迁移到另一个系列。
显然,构建存储资源以满足每个用户的需求是一项艰巨的挑战。 Xilinx 7 系列 FPGA 中实现的解决方案是创建称被为 块RAM 的基块(参见图 4),这些块基块可以组合在一起形成更大的阵列,也可以分割形成更小的阵列。将块 RAM 与 FPGA 逻辑中的 6 输入查找表 (LUT) 组合成小型存储器阵列的能力为用户提供了最灵活的资源来创建各种大小的存储阵列。
每个 7 系列 FPGA 有 135 到 1880 个双端口块RAM,每个 块RAM 能够存储 36 Kb数据,其中 32 Kb 分配给数据存储,在某些内存配置中,额外的 4 Kb 分配给奇偶校验位。每个 Block RAM 都有两个完全独立的端口,它们只共享存储的数据。
每个端口可以配置为:
【视频目标检测论文阅读笔记】Optimizing Video Object Detection via a Scale-Time Lattice
蒙特卡罗方法求解圆周率π并用turtle画点,以及完成进度条问题
图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作
【一种利用插值验证的FL隐私保护框架】VFL: A Verifiable Federated Learning
Lab: File path traversal, traversal sequences stripped non-recursively 文件路径遍历,遍历非递归过滤的语句