回想一下我们在最初的数字电路实验课上,我们是如何搭建一个简单的数字电路的,例如一个模数为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自身的开发,是一种非常具有挑战性的工作,它不仅要求开发者具备数字设计硬件知识,也具有高超的编程技术!!!
从总体上了解了FPGA芯片内部的电路构成,这是必要的,这就像去一个景点,先要对整体有一个宏观的了解,而后逐步了解内部。否则,已陷入“只见树木,不见森林”。