FPGA内部硬件结构简介
我们知道FPGA内部有很多可供用户任意配置的资源,其中包括:可编程逻辑、可编程I/O、互连线、IP核等资源,很多学过数字电路的人都知道与或非门可以构成几乎所有的数字电路,但是FPGA内部最基本的主要单元并不是这些与或非门,而是由无数个查找表(Look Up Tabe,简称为LUT)和寄存器构成。
虽然FPGA的内部结构对于初学者来说是云里雾里,一头雾水,但是了解FPGA的内部结构能让我们更好的理解FPGA设计过程中我们所编写的代码和硬件是怎样的一个映射关系,从而更深刻理解FPGA和单片机、ARM的不同。当我们对FPGA内部结构了解透彻后,就可以把FPGA的设计了如指掌,才能有助于进一步优化我们的设计,优化好的设计能使我们设计的整个系统跑的更快、更加节省资源、功耗更低,稳定性更好。
我们选用的是CycloneIV系列的EP4CE10F17C8,很多入门开发板一般都配置的这款芯片,其主要资源如下图所示。
首先我们来认识一下FPGA内部的一些资源。点击下图所示图标打开Chip Planner来查看这款FPGA芯片的版图模型。
打开后的版图模型如下图所示,第一张图是未进行布局不线的图,因为资源未被使用所以都是浅色。第二张图是已经布局布线后的图,也就是已经将使用的资源映射到了版图模型上(只有全编译后才能看到映射效果),其中深色表示该资源已经被使用,而颜色越深的地方表示资源利用率越高。黑色区域为一些固定功能的资源或没有资源,用户不可对其进行任意配置。
①逻辑阵列块(Logic Array Block,也简称为LAB):每个LAB由16个LE(Logic Element)组成,下图是两个已经映射资源后的LAB,资源利用率不同的LAB其颜色深浅也有所差异(左边使用的资源少,颜色就浅;右边使用的资源多,颜色就深)。
放大后的LE如下图所示,每个LE由左边一个蓝色LUT和右边一个红色寄存器组成。整个芯片中共有10320个LE。
双击其中一个LE可以观察到其大致的内部结构(内部结构只有被使用才能够双击打开查看),我们可以看到主要的两个部分,一是左边的4输入LUT,另一个是可编程寄存器,还包括一些选择器、与门等辅助逻辑电路。(蓝色高亮的部分是已经使用的资源,未高亮灰色的部分是未被使用的资源)。
②用户可编程I/O(User I/Os,也被称为IOE):可编程I/O资源分布在整个芯片的四周。该芯片共有256个管脚,除去一些固定功能的管脚,可供用户任意配置的管脚资源只有180个,下图是其中一个可编程I/O单元,里面又包含三个最小单元(每个可编程I/O单元中的最小单元个数不固定,有的包含两个,也有的包含四个)。
下图是可编程I/O最小单元内部结构图,包括双向I/O缓冲器、OE寄存器、对齐寄存器、同步寄存器、DDR输出寄存器、三态门、延时模块等组成。
③嵌入式存储单元(Memory Bits,也被称为Block RAM或简称为BRAM):该部分资源主要用于生成RAM、ROM、FIFO、移位寄存器,在存储较多数据或作跨时钟域处理时常用到。该芯片共有423936bit存储单元,并以每9Kbit容量为一个块,共有46个,下图所示为一个M9K的RAM块。相对于LUT构成的分布式RAM(Distribute RAM,简称为DRAM),这种专门的存储单元容量更大,从而避免LUT资源的浪费。
下图是一个M9K内部结构图。由输入输出寄存器和一个RAM块构成。
④嵌入式乘法单元(Embedded multiPlier 9-bit elements,也称为DSP块):该单元主要用于各种复杂的数学运算,乘法、除法以及常用的功能函数如:有限冲激响应滤波器(FIR),无限冲击响应滤波器(IIR),快速傅里叶变换(FFT),离散余弦变换(DCT)等时会消耗很多逻辑资源,而FPGA中的LUT和寄存器资源有限,这时候使用嵌入式乘法单元这部分资源就不会造成逻辑资源的浪费。该芯片共有46个DSP块,成列式分布在芯片的中间位置,下图为一对DSP块资源。
下图是嵌入式乘法器单元DSP块的内部结构图。包含输入输出寄存器和一个乘数块。
⑤锁相环(Phase Lock Loop,也简称为PLL):该芯片一共有两个锁相环,一个在右上角处附近,一个在左下角附近。PLL的参考时钟输入都是由专用时钟管脚上的晶振进来的,用于时钟的倍频、分频,以及相位、占空比调制。PLL出来的时钟都会连接到全局时钟网络上,以保证时钟的质量,减小时钟偏斜(Skew)和抖动(Jitter)。
下图是锁相环内部的结构图,每个锁相环可以分出五个同源时钟信号。
FPGA内部硬件结构简介的更多相关文章
- 硬盘内部硬件结构和工作原理详解[zz]
一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从设置方法等.这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义. 硬盘主要由盘体.控制电路 ...
- FPGA芯片内部硬件介绍
FPGA芯片内部硬件介绍 FPGA(Filed programmable gate device):现场可编程逻辑器件 FPGA基于查找表加触发器的结构,采用SRAM工艺,也有采用flash或者反熔丝 ...
- 关于 FPGA 内部信号扇入扇出
扇入.扇出系数 扇入系数是指门电路允许的输入端数目.一般门电路的扇入系数为1—5,最多不超过8.扇出系数是指一个门的输出端所驱动同类型门的个数,或称负载能力.一般门电路的扇出系数为8,驱动器的扇出系数 ...
- 论山寨手机与Android联姻 【9】SmartPhone的硬件结构
如何区别智能手机(SmartPhone)与功能手机(FeaturePhone)? 有一种观点认为,智能手机本质上是功能手机与便携式电脑(Laptop PC)的结合.功能手机的功能受限于制造厂商的预制, ...
- CPU的硬件结构和汇编语言
(已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, ...
- FPGA内部动态可重置PLL讲解(一)
SDRAM驱动需要两个时钟,一个是控制时钟,一个是驱动时钟,这两个时钟有一个相位差,如何产生高精度的时钟是SDRAM能够正常工作的关键,采用FPGA内部动态可重置PLL生成SDRAM所需要的时钟频率. ...
- FPGA 内部详细架构你明白了吗?
FPGA 芯片整体架构如下所示,大体按照时钟域划分的,即根据不同的工艺.器件速度和对应的时钟进行划分: FPGA 内部详细架构又细分为如下六大模块: 1.可编程输入输出单元(IOB)(Input Ou ...
- 【转】FPGA内部小数计算
FPGA内部计算小数 [转载] 谓定点小数,就是小数点的位置是固定的.我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了).既然没有 ...
- 【CUDA学习】GPU硬件结构
GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm. sp: 最基本的处理单元,streaming processor 最 ...
随机推荐
- 源码学习VUE之Observe
在文章 源码学习VUE之响应式原理我们大概描述了响应式的实现流程,主要写了observe,dep和wather的简易实现,以及推导思路.但相应代码逻辑并不完善,今天我们再来填之前的一些坑. Obser ...
- Windows+Ubuntu双系统 ,Ubuntu安装
这篇只是简单记录自己在Win10下另安装Ubuntu系统. 不是教程,因为不会. 推荐一个教程:https://blog.csdn.net/weixin_37029453/article/detail ...
- E. Yet Another Task with Queens(分类思想)
\(\color{Red}{描述}\) \(在n*n的棋盘上有m个K皇后,每个皇后可能被来自8个方向的其他皇后攻击\) \(每个皇后只可能被(0-8)只皇后攻击,分别求出被(0-8)只皇后攻击的皇后数 ...
- Eating Everything Efficiently(反向dp)
传送门 取最大值即可.用拓扑,dfs都可以实现 #include <bits/stdc++.h> using namespace std; const int maxn=500009; i ...
- P3355 骑士共存问题 网络流
骑士共存 题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最 ...
- springboot使用druid连接池连接Oracle数据库的基本配置
#阿里连接池配置 #spring.datasource.druid.driver-class-name=oracle.jdbc.driver.OracleDriver #可配可不配,阿里的数据库连接池 ...
- vue-cli3使用全局scss
在开发项目的时候,经常会出现多个元素样式相同,比如颜色相同.这里就需要我们设置公共样式,方便后期调试 一配置方法 1.在src/assets/styles目录下创建文件variable.scss // ...
- 关于Cookie的一点简单认识
1.Cookie Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持状态的方案.通常每个 Cookie 的大小不能超过4KB.客户端每次向服务器发出请求,就 ...
- MySQL数据类型笔记
引言 作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道.而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术.最近在工作 ...
- Linux 通过终端命令行切换系统语言
通过命令的形式修改系统的语言,比较详细的讲解了来龙去脉: 文章目录 0 前言 1 locale 文件 2 查找相关文件 3 解决方案 4 相关信息 4.1 locale属性的含义 4.2 LANGUA ...