微软和亚马逊都支持FPGA作为其服务器的硬件,其特点是买家可以自行更改电路配置。 工程师Ken Shirriff对最初产生的FPGA“XC2064”进行了逆向工程,并对FPGA的基本结构进行了说明。
Reverse-engineering the first FPGA chip, the XC2064
http://www.righto.com/2020/09/reverse-engineering-first-fpga-chip.html
FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
1985年由 Xilinx 开发的第一个 FPGA“XC2064”比现代FPGA简单得多。 在现代,FPGA 可以用标准化语言(如 Verilog)进行编程,但当时需要昂贵的软件,其 Xilinx XACT 的价格高达 12000 美元。上面是XACT 程序的屏幕截图。 这个MS-DOS程序是通过键盘和鼠标控制的。
FPGA 的基本结构如下图所示。 蓝色的被称为“可配置逻辑块(Logic Block)”与其他 CLB 和 I/O 互连,用于输入和输出信号。
CLB是对4个输入进行2个输出的电路,是可以变更电路结构的部分。它包括可以对任何电路进行编程的组合电路和可以保持1比特信息的触发器电路等,这种结构被称为“LUT(LookupTable)”。
XC2064中的组合电路的结构是这样的,多路复用器( MUX)根据输入选择存储器上的数据,可以进行组合电路的编程。根据“A”“B”“C”表示的控制用输入选择数据。
XC2064 具有 64 个 CLB,绿色“开关矩阵”允许 CLB 之间的复杂互连。 CLB 之间的通信通过此开关矩阵进行。
以上是FPGA的结构,但XC2064的实现略有不同。 下面的芯片照片显示了XC2064芯片的布局。FPGA 的主要部分是 8×8 的网格; 每个包含一个逻辑块和相邻的路由电路。尽管FPGA图将逻辑块(CLB)显示为独立于围绕它们的路由的实体,但这并不是FPGA的实现方式。相反,每个逻辑块和相邻路由被实现为单个实体,即片(Tile)。(具体而言,平铺包括每个CLB上方和左侧的布线。) XC2064 具有 64 个“片”,将 CLB 和路由功能组合在一起,使“片”相互连接。 并非所有片都紧密相连,在水平方向和垂直方向上都提供了两个用于信号放大的“缓冲区(Buffer)”,在下图中用绿线表示。 橙色线是电源(Power),红色移位寄存器(shift register)和蓝色列选择(column select)是 XC2064 保存编程设置时非常重要的结构。
下面是“片(Tile)”的放大图像。 绿色边框是保存编程设置的区域,占“片(Tile)”总数的 40%。 其他部分包括 CLB 部分(如触发器电路和 LUT)和路由部分(如开关矩阵)。
XC2064读入编程设定的方法如下。XC2064的内存在水平方向上可以保持160bit,在垂直方向上可以保持71bit,编程用软件设定的电路结构作为“位流”输入移位寄存器。移位寄存器被71bit的位串填满后,列选择器将选择“将当前移位寄存器的值加载到哪个列的存储器中”。这样,下一个比特流被读入移位寄存器,通过列移位一列一列地移动,比特流被加载到所有的存储器中。
放大保存1bit设定的存储器的电路的话就是这样的感觉。从电路图中可以清楚地看到从通过列选择激活的数据线读取数据的结构。
XC2064使用了各种高度优化的电路,但最初制造困难,成本高。Shirriff说,与现代的FPGA相比,XC2064的销售数量虽然很少,但却是革命性新产品的推动者。
本文暂时没有评论,来添加一个吧(●'◡'●)