FPGA 的基本结构

FPGA 可编程的特性决定了其实现数字逻辑的结构不能像专用 ASIC 那样通过固定的逻辑门电路来完成,而只能采用一种可以重复配置的结构来实现, 而查找表(LUT)可以很好地满足这一要求,目前主流的 FPGA 芯片仍是基于 SRAM 工艺的查找表结构。

FPGA 芯片参数指标:包含可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式 RAM)的大小。

在最底层的可配置逻辑模块(如片上的逻辑单元) 上,存在着基本的两种部件:触发器和查找表( LUT) , 而触发器和查找表的组合方式不同,是各个 FPGA 家族之间区别的重要依据, 并且查找表本身的结构也可能各不相同( 有 4 输入或 6 输入或其他)。

查找表( Look-Up-Table)简称为 LUT, 其本质上就是一个 RAM。目前 FPGA 内部中多使用 4输入的 LUT,每一个 LUT 可以看成一个有 4 位地址线的 RAM。

当用户在 EDA 工具上通过原理图或 硬件描述语言设计了一个逻辑电路以后, FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM 中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查找表操作, 通过地址找到对应的 RAM 中的结果, 最后将其输出。以实现数字逻辑 Y=A&B&C 的功能为例。如果是在专用 ASIC 中,为了实现该逻辑,逻辑门都已经事先确定好, Y 的输出值为两个逻辑与运算后的结果,其基本的实现结构如下图所示:

对Y=A&B&C 的 利用FPGA 实现基本结构 :

更为复杂的 FPGA 架构

随着技术的发展和工艺节点的进步, FPGA 的容量和性能在不断提高的同时, 其功耗却不断的优化减少。2006 年以前四输入查找表一直被广泛使用, 在一些高端器件可能会用上六输入、八输入或更多输入端口的查找表。而一个多输入的查找表又可以分解成较小输入的查找表, 即能够分裂成许多更小的功能。例如一个八输入的查找表可以分解成两个四输入的查找表或分解成一个三输入加一个五输入的查找表。在实际的高端器件中,这种可编程构造可以描述相当于百万级(有时甚至千万级)的原始逻辑门。

在 FPGA 内部,利用 FPGA 的可编程性在芯片内部构造实现了一个计数器逻辑,有着“软内核”与“硬内核”之分。

软内核(软功能):在构造计数器逻辑过程中使用到的功能便可以被称为软功能。

硬内核(硬功能):功能若是直接利用芯片实现的,则是利用了芯片内部的硬功能。

软内核与硬内核之间优势互补,软内核的优势在于可以在利用芯片资源的基础上利用编程设计让其完成需要实现的任何功能(注意是数字功能,不包括模拟功能)。而**硬内核由于是实现固定功能的器件,因此其优势在于资源利用率高且功耗较低, 占用硅片的面积也较小, 并具有较高的性能。最重要的区别**在于:与软内核相比硬内核可用于实现模拟功能, 例如锁相环的倍频功能,这个功能需要在模拟电路下实现,所以这一部分是在 FPGA 内部用硬件来实现的 。

带嵌入式处理器的 FPGA

利用 FPGA 的可编程构造实现的事情之一即为使用其中的一部分数字逻辑资源制作一个或多个软处理器内核, 当然, 也可以实现不同规模的处理器。

这个芯片是一种新的SoC(System on Chip,系统级芯片) FPGA,完全以硬内核方式实现的双路 ARM Cortex-A9 微控制器子系统(运行时钟高达 1GHz,包含浮点引擎,片上缓存,计数器,定时器等)以及种类广泛的硬内核接口功能( SPI, I2C, CAN等),还有一个硬内核的动态内存控制器,所有这些组件都利用大量传统的可编程构造和大量的通用输入输出( GPIO)引脚进行了性能增强。

数据存储以及配置方式

在 FPGA 内部存在着存储单元片内 RAM 块,数据是存放在 RAM 中并由其来设置工作状态的,若想要 FPGA 进行工作,就需要对片内 RAM 进行编程。而如果外部有大量数据交互时,就要通过增加外设来对数据进行暂时性的存储,如 SDRAM 存储器或者 DDR3 存储器,暂存在外设中的数据最终也是要通过 FPGA 内部的 RAM 进行存储与处理。当在 EDA 工具上将程序设计完成之后,便需要将软件上的程序烧录进 FPGA 内部。通过不同的配置模式, FPGA 便会有不同的编程方式。

常用的几种配置模式:

并行模式:通过并行 PROM(Programmable read-only memory,可编程只读存储器)、 Flash (Macromedia Flash。多媒体软件平台)配置 FPGA;

主从模式:使用一片 PROM 配置多片 FPGA;

串行模式:串行 PROM 配置 FPGA;

外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。

目前, 主流的 FPGA 都是基于 SRAM (Static Random-Access Memory,静态随机存取存储器)工艺的, 在大部分的 FPGA 开发板上,使用的都是串行配置模式。由于 SRAM 掉电就会丢失内部数据,因此往往都会外接一个能够掉电保存数据的片外存储器以保存程序。这样一来, 上电时 FPGA 便将外部存储器中的数据读入片内 RAM 以完成配置, 对 FPGA 编程完成后便进入工作状态;掉电后 FPGA 内部 SRAM 中存储的数据丢失,逻辑清零。以这种方式配置 FPGA 不仅能反复使用,还无需重复的手动配置。完成一次主动配置之后每次上电便会自动的实现 FPGA 的内部编程。

————————————————

FPGA 的基本结构(RAM/FPGA/SOC)相关推荐

  1. FPGA学习笔记【FPGA原理与结构】

    注意:本篇内容根据<FPGA原理和结构>([日]天野英晴 著 赵谦 译)一书整理,作者也是初学者,有错漏请见谅 基础知识 FPGA即现场可编程门阵列(Field Programmable ...

  2. tx2 fpga pcie无法读写_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解

    双击可查看大图(手动狗头) 目录 Altera Cyclone V soc开发文档 之软硬件开发 1 Cyclone V开发流程介绍 5 专业术语 5 Cyclone V软件开发介绍 6 U-BOOT ...

  3. Xilinx 7系列FPGA中CLB结构和内部资源使用

    Xilinx 7系列FPGA中CLB结构和内部资源使用 7系列FPGA内部资源更加的更富,性能更强悍,最吸引人的就是28nm工艺使得相同的逻辑资源功耗降低50%,这是一个很大的提升,在单板硬件上仅仅降 ...

  4. 【Vivado那些事】简谈FPGA比特流结构

    [Vivado那些事]简谈FPGA比特流结构 比特流是一个常用词汇,用于描述包含FPGA完整内部配置状态的文件,包括布线.逻辑资源和IO设置.大多数现代FPGA都是基于SRAM的,包括Xilinx S ...

  5. 好书速递 | FPGA原理和结构

    跟译者赵谦博士一起了解FPGA结构 本书由日本可重构领域专家团队撰写,是一本讲解FPGA原理的书.前5章从FPGA的相关概念入手,简明又严谨地阐述了FPGA硬件构成和CAD工具的内部原理等理论基础,有 ...

  6. 【FPGA】单端口RAM的设计(异步读、异步写)

    前面有博文写了同步读写和异步读.同步写的单端口RAM设计: [FPGA]单端口RAM的设计(同步读.同步写) [FPGA]单端口RAM的设计(异步读.同步写) 这篇博文讲异步读写: 在博文:[FPGA ...

  7. FPGA原理和结构简介

    FPGA原理和结构简介 一.FPGA在芯片体系中的地位 我们生活中丰富多彩的应用程序是通过计算机底层大量的数字逻辑运算实现的,而处理这些数字逻辑运算的芯片我们称为数字芯片,常见的处理器如CPU,GPU ...

  8. 小梅哥FPGA:嵌入式块RAM使用之FIFO

    小梅哥FPGA:嵌入式块RAM使用之FIFO 课程目标:学会调用QuartusⅡ软件中提供的FIFO核并通过仿真,了解其接口时序 实现现象:通过QuartusⅡ软件中调用FIFO核,通过仿真来验证其接 ...

  9. (195)FPGA编程:双端口RAM(一)

    (195)FPGA编程:双端口RAM(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA编程:双端口RAM(一): 5)结束语. 1.1.2 本节引言 &qu ...

最新文章

  1. 暑期OI大电影——不看后悔整个OI生涯!
  2. 卸载MySQL以及重装卡到Start Services的解决办法(亲测有效,刚重装成功)
  3. Android Studio导入项目运行出现大量警告,且报错GC,解决办法
  4. 迅雷精简版 4.0.0 Mac中文版
  5. STM32CubeMx之硬件SPI驱动W25Q64
  6. 三维视觉和三维点云基础概念
  7. echarts 折线图 中有两条线 ,在鼠标悬停时显示数据
  8. matlab初值随机扰动,GRAPES区域集合预报系统模式不确定性的随机扰动技术研究
  9. 关联分析python代码
  10. 【mongo系列】 六、mongo分片集群
  11. 香港大学计算机视觉识别教授排名,北京师范大学香港浸会大学联合国际学院四位教师的课题喜获国家自然科学基金资助...
  12. 施乐3030工程机驱动安装
  13. 【Oracle】 选择题汇总
  14. 论文导读 | 图数据流子图查询
  15. uniapp项目打包与部署云服务器
  16. opencv 二维码定位
  17. 企业级项目分享:购物车模块(一)2021-06-08
  18. 我看所谓“汉语编程”
  19. Android Studio代码迁移问题小汇总
  20. 寒假训练十(map,pair,string)2020.02.17(4题)

热门文章

  1. [转帖]美国《工程索引》收录中国科技论文的最新规定
  2. java saf_在不支持的浏览器中替代IndexedDB? Safari / iOS Saf-Chrome
  3. 哪个大学有计算机专业博士授权,哪些学校有计算机应用博士点
  4. 越南籍学生如何进行计算机教学,浅谈计算机教学中越南文输入法的注意事项
  5. SpringBoot发送Http请求-RestTemplate
  6. Google的不作恶文化和10大信条
  7. 软件自动化测试图片,常见的机器视觉图像处理软件自动化检测软件介绍
  8. 阿里云学生机1年114元限时活动(24岁以下都可以购买)
  9. mongodb 服务器性能监控,mongodb监控 | mongodb数据库监控 - ManageEngine Applications Manager...
  10. Linux内核基础篇——常用调试技巧汇总