不愧是清华的王红老师的数电课,我感觉比之前我听小梅哥讲的FPGA基本结构还要清晰。果然基础要扎实到一定程度才能融会贯通。在此记录一下我的理解。
随着可编程器件发展到CPLD,正式开始模块化。既将许多会重复利用的逻辑电路模块化放在板子上,用户使用的时候只需调整内部不同的布局布线来实现不同的功能。CPLD的内部结构图如下图所示

CPLD最初的思想
从这种思想就可以看出,CPLD更适合设计组合逻辑电路。想要用它来设计时序逻辑电路,布局布线逻辑更为复杂。
CPLD之后就出现了FPGA。其中SRAM型FPGA结构图如下图所示

SRAM型FPGA基本结构图
FPGA总共由IOB,CLB,互连资源(SM),FLASH组成。
IOB
输入输出的IO的组成结构。较为简单,就是可以选择设置为输入还是输出,同步还是异步,其结构如下图所示

IOB结构
CLB
该结构为FPGA中最重要的结构,是FPGA的灵魂所在。其基本结构如下图所示

CLB结构
可以看到,LUT存储了各种各样的组合逻辑功能,后面一路直接接数据选择器,另一路接数据选择器后接D触发器。可以选择该单元为组合逻辑还是时序逻辑电路,较为灵活。因此,FPGA更适合用来设计含有大量时序逻辑的工程。
其中,LUT用RAM做的,一种调电之后就没了的组合逻辑电路。
SM
SM称为全局布线开关
CLB之间的连接和与外部电路之间的连接由SM控制,其结构如下图

CLB与SM连接图
SM的内部结构如下图

SM内部结构
因此,可以通过程序控制全局布线开关的开关,实现不同CLB和外设与CLB之间的连接。
Flash memory
如果每一次断电FPGA都会删除所有逻辑结构,将会非常麻烦。因此,有一块小的FLASH在FPGA芯片旁边,每次上电,FPGA都会先读取内部的数据,构成逻辑结构。