文章目录
- [1. 引言](#1. 引言)
- [2. FPGA的一般结构](#2. FPGA的一般结构)
-
- [2.1 概要](#2.1 概要)
- [2.2 FPGA三部分构成间的关系:](#2.2 FPGA三部分构成间的关系:)
- [3. 小结](#3. 小结)
1. 引言
- 结构决定原理。原理未必决定结构。
- 理解FPGA结构,进而能阐明其工作原理很有必要。
- FPGA产品的风云变换,其基本结构保持相对不变。
2. FPGA的一般结构
2.1 概要
- 不同FPGA厂家的产品有各自特点,但芯片结构类似
- FPGA芯片内部结构通常由如下三部分构成:
- 输入输出块(IOB,Input Output Block) :为待实现的数字系统提供可编程的输入、输出端口,相当于PCB板的外部接线端子。
- 逻辑阵列块(LAB,Logic Array Block):有的厂家也称之为CLB,configurable Logic block,它是实现数字逻辑的基本单元。
- 连线资源:相当于PCB板上的导线,只不过,PCB板一旦制造好了,导线就难以更改,而FPGA的"导线"可以通过编程修改。连线资源使得我们可以将各个LAB、IOB端口按照设计合理的连线。
2.2 FPGA三部分构成间的关系:
回想一下我们在最初的数字电路实验课上,我们是如何搭建一个简单的数字电路的,例如一个模数为60、输出为8421BCD码的计数器(最终要把输出信号送往2个七段数码管驱动电路的输入端,以便显示出结果),要求通过实验箱上提供的脉冲发生器、电源、以及老师发给我们的中规模集成电路芯片(如74LS20(四输入与非门)、74LS00(二输入与非门)、74LS161(4位二进制计数器))以及互联导线,让我们设计并验证电路。
上述场景中的实验箱及所有用到的器件、导线等全部数字设计资源相当于1块FPGA开发板(上面已经焊接好了FPGA芯片及外围电路(如脉冲发生器、电源、LED灯、七段数码管等)),而我们拿到的各个中规模集成器件,就相当于FPGA芯片中的LAB,我们最终引出输出(或输入)的插线口相当于FPGA芯片的IOB,我们使用导线把元器件互联起来,并把输出信号通过导线连到信号(输入)输出端,这些导线就相当于FPGA芯片中的连线资源。
不同的是,FPGA芯片中的IOB、LAB(或CLB)、连线资源都是可编程的(可以通过EDA软件修改的)。
基于中规模数字芯片设计数字系统,是一个给定约束条件(有什么芯片,有那些连线端口,有那些连线)下的数字系统设计问题,
同样,基于FPGA设计数字系统,也是一个给定约束条件(有什么LAB块、有那些IOB块,有那些互连线资源)下的数字系统设计问题。
理解了数字电路中基于中规模芯片的电路设计实现过程,也能很好的理解FPGA三部分构成间的关系,即:
LAB相当于基本功能器件;IOB相当于信号的输入、输出端口;互连线资源相当于导线,把输入输出信号、各个基本器件的输入、输出按照逻辑综合后的网表中信号的连接关系,连接起来。
FPGA EDA软件为用户提供了巨大的便利,用户只需要按照一般原理设计出电路的门级(甚至是高级)描述,这些软件能自动帮我们完成门级到FPGA内部实现资源的映射,我们只重点关注前端逻辑的设计即可,至于类似于PCB版的布局、布线都由EDA软件自动完成,而且,也只能由他们完成。因为数字系统的规模很大,手工布局布线几乎不可行!
题外话:我们在享受着EDA的便利,但往往忘记EDA自身的开发,是一种非常具有挑战性的工作,它不仅要求开发者具备数字设计硬件知识,也具有高超的编程技术!!!
3. 小结
从总体上了解了FPGA芯片内部的电路构成,这是必要的,这就像去一个景点,先要对整体有一个宏观的了解,而后逐步了解内部。否则,已陷入"只见树木,不见森林"。