FPGA学习之基本结构
如何学习FPGA中提到第一步:学习、了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。既然要开始学习FPGA,那么就应该从其基本结构开始。以下内容是我学习过程中的整理的一些东西。主要来自:Xilinx中文网站,博客LAY Trust Jesus,博文FPGA学习笔记 ,博文FPGA基本结构
1.可编程逻辑器件
从PLD的发展历程来看,按照结构区分,前后共有4种可编程逻辑器件类型:PLA、PAL、CPLD和FPGA。PLA——PAL——CPLD是继承的关系,然而FPGA是相对独立的,采用了截然不同的设计方法。
复杂可编程逻辑器件 (CPLD )由完全可编程与/或阵列以及宏单元库构成。 与/或阵列可重编程,能够执行众多逻辑功能。宏单元是执行组合逻辑或时序逻辑的功能块,同时还提供了真值或补码输出和以不同的路径反馈等更高灵活性。CPLD的块结构如下所示
FPGA是由通过可编程互连连接的可配置逻辑块 (CLB) 矩阵构成的可编程半导体器件。相对于专为特定设计定制构建的专用集成电路 (ASIC)而言,FPGA 能通过编程来满足应用和功能要求。 虽然市面上也有一次性可编程 (OTP) FPGA,但绝大多数是基于 SRAM 的类型,可随着设计的演化进行重编程。
CPLD分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至20-30多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此,PLD适合用于设计译码等复杂组合逻辑。 但FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。 所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。
2.FPGA和ASIC
3.FPGA结构及相关知识
SRAM
SRAM是一种可编程技术,与之类似的还有Flash/E2PROM 编程技术,反熔丝编程技术(军品和宇航级可能会用)。在FPGA中,SRAM是主流。
最基本的5管SRAM单元结构如图所示,通过传输管控制存储信息的读写。当传输管导通时,SRAM单元内存储的信息可由数据端读取或改写;当传输管截止时,存储的信息被首尾相连的两个反相器锁定,由Q和Q'端输出。理论上,SARM单元可被配置无数次。
FPGA中的SRAM单元主要实现以下功能:作为多路开关、交叉开关、互连通道等可编程结构的控制端,对信号的传输路径进行编程;对片内相对独立的逻辑功能模块(如可编程触发器、用户可编程I/O)进行配置;作为查找表(LookUp-Table,LUT)的存储单元,用来实现FPGA的逻辑功能;使用SRAM存储阵列作为嵌入式存储器,实现复杂的数字信号处理和存储功能。
SRAM的缺点主要在于断电后信息丢失,上电后需要重新配置。这个过程通过外部存储进行,信息可能会被截取。同时,传输管是非理想的。
CLB
CLB 是 FPGA 的基本逻辑单元。实际数量和特性会依器件的不同而改变,但是每个 CLB 都包含一个由 4 或 6 个输入、一些选择电路(多路复用器等)和触发器组成的可配置开关矩阵。开关矩阵具有高度的灵活性,经配置可以处理组合型逻辑、移位寄存器或 RAM。
CLB由Slices组成,Slices包含LUT,触发器和相关逻辑。LUT即查找表本质上可以看成是一个RAM,对应于实现的不同逻辑功能,LUT有相应的输入地址和存储的数值。CLB可以配置为相应的逻辑模块,也可以用来构成分布式RAM和ROM。
IOB
目前的 FPGA 可支持许多种 I/O 标准,因而为您的系统提供了理想的接口桥接。FPGA 内的 I/O 按 bank 分组 (见下图) ,每个 bank 能独立支持不同的 I/O 标准。目前最先进的 FPGA 提供了十多个 I/O bank,能够提供灵活的 I/O 支持。
可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如下图所示。
外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。
互连
CLB 提供了逻辑性能,灵活的互连布线则负责在 CLB 和 I/O 之间传递信号。布线有几种类型,从设计用于专门实现 CLB 互连、到器件内的高速水平和垂直长线、再到时钟与其它全局信号的全局低歪斜布线。除非另行说明,否则设计软件会将互连布线任务隐藏起来,用户根本看不到,从而大幅降低了设计复杂性。也就是说这个基本不用管。
存储器,时钟管理
此外,大部分FPGA内部嵌入了块RAM用来实现片上存储;大多数 FPGA 都提供数字时钟管理(所有 Xilinx FPGA 都具有此特性)。FPGA 提供了数字时钟管理和锁相环锁定功能(DCM或PLL),不仅提供了精确时钟综合功能,而且能够降低抖动和实现过滤。
4.Xilinx的FPGA
5.总结
遇事多问几个为什么,就会发现自己还有很多东西不懂,继续努力!看到了一则新闻
深度学习算法有望在FPGA和超级计算机上运行,和我前段时间想的一样,FPGA是很有很好的发明,学好FPGA是很有意义的!