几周前,@rombik_su在Twitter上指出了eBay上一款非常便宜的FPGA加速卡。该电路板包含一个专有的Samtec板对板连接器,很可能承载电源、PCI Express和辅助信号(JTAG、IPMI到BMC等)、两个隐藏在散热片下面的QSFP框架DDR3和一个大型FPGA。
我对所有与FPGA相关的东西都充满热情,而且冠状病毒锁定限制了有趣的事情的数量,我决定买下这块电路板。这种估价工具很容易就要几千美元,而40美元是非常划算的。
在等待董事会到来的同时,我做了一些初步调查。易趣上的描述相当隐晦。清单的标题包括了黑板上标签上的所有文字,包括指示强制空气通过黑板的方向的标签。
最有成效的线索之一是董事会上的微软标签。几年前就广为人知的是,微软正在使用FPGA加速Bing搜索,这可能是服务器中使用的主板之一。
请记住,微软使用Altera(现在的Intel PSG),而且那是几年前的事了,很可能该卡包含一个Stratix V FPGA。
Google上的第一个链接(或者我应该用必应吗?FPGA会意识到我在寻找关于他们的信息吗?)。微软Catapult Stratix v&34;提供了一些概念上类似的卡片,但并不完全相同。
本文还提到了广泛使用的OpenCompute服务器,它可以提供有关Samtec连接器上的引脚的一些信息。由于OpenCompute项目标准化的夹层卡格式繁多,而且找到匹配的格式也不是一件容易的事,所以我决定将这项任务留待以后完成。
进一步挖掘搜索结果,我还能够找到另一张卸下散热片的电路板照片。
去掉了FPGA上的标记,但我们已经知道它是Stratix V,并且从以前的文档中预计会有一些事情,例如,5个DDR3芯片组合成9个芯片,用于72位DDR3数据宽度)。
我在这张图片中发现的有趣之处是右上角有一个闪存(Micron 25Q256),这意味着FPGA的映像最有可能存储在主板上,而不是在启动时通过连接器下载。也有可能是通过协议进行配置,并且只有基本映像存储在Flash中。
然后有一天,董事会终于来了。这块板与前面提到的文章中的描述相符。
在这一点上,是时候开始试验电路板了。FT232H似乎由USB总线电压供电:J3的引脚1连接到FT232H的引脚40(VREGIN)。这就是为什么我决定先从USB开始。使用FT232H的数据表,很容易确定连接器上的引脚分配。我不想直接焊接在连接器引脚上,因为我想在将来做一条合适的电缆。
在这一点上,我可以开始尝试反向工程连接器引脚。我设法找出了以下联系:
输入电源:有几个管脚连接到大型MOSFET的漏极。我还假设电平为12V,因为PCIe卡很常见。
连接器附近有16对交流耦合电容器。PCIe标准要求在发送端使用电容器,因此我假设这是PCIe_Tx。由于不知道确切的车道编号,我决定用字母而不是数字来列举它们。
一些引脚连接到连接器上方的电路-我已经注释了这些引脚,但现在我不清楚用途是什么。我把那些大头针注释为AUX。
我已经连接了Q12(FDMS0310AS)漏极侧的12V,这也为Samtec连接器上的PU12和+12V引脚供电。然而,功耗仅为3 mA,并且MOSFET处于闭合状态。
我找不到任何有关PU12(L536FCD)的信息。我假设它是一种限流保护,测量通过0.01欧姆并联电阻的电流,并控制Q12的栅极引脚。
为了从字面上绕过这个问题,我决定也在Q12的另一边连接12V。这产生了一些结果:功耗提高到695 mA,这是人们对这种电路板的预期,LED也变亮了。
在电路的各个点上,我还可以测量人们期望在这样的电路中找到的所有电压:
散热片覆盖了电路板顶侧的大部分,包括用于FPGA配置的闪存。然而,使用示波器探头仍然可以到达引脚8和9(分别为DQ1和DQ2)。
在电路板通电后,我们可以观察到FPGA在大约一秒钟内编程完成。这高于PCIe标准要求的100毫秒/200毫秒的限制,但在此自定义外形因子中,该值可能会有所不同。
板上的LED也由FPGA驱动,并保持亮起一秒钟,直到FPGA未被编程,这是FPGA从存储器配置的另一个指示。
电路板上的另一个存储器是一个128Kbit的小EEPROM,它可能存储MAC地址、序列号和其他类似信息。
非常有趣的是,SDA和SCL线路在一段时间后仍然保持低电平。可能根本不使用EEPROM,或者电路的某些其他部分正在将EEPROM接口状态机保持在复位状态。
在电路板通电的情况下,我可以测量连接器引脚上的电压。正如预期的那样,在16对差分对上,我可以检测到PCIerReceiver的偏置电压,约为0.7V。
一些辅助引脚有轻微的偏置,但这可能是由于旁路电阻和其他组件造成的。要完全了解这些别针的用途,还需要更多的调查。
插入QSFP电缆只会略微增加功耗。很明显,高速电路被禁用,很可能是因为内部寄存器配置,也不太可能是因为电缆不兼容,即电路板解析EEPROM并且不启用高速电路。
我已经探测了我认为是DDR3端接电阻的东西(在底部,在顶部第五个DDR3组件的另一侧),没有观察到任何开关活动。DDR3控制器似乎一直处于重置状态。
第一次调出过程相当成功;我已经设法打开电路板而没有损坏它,并弄清楚了连接器的基本引脚。
下一步,我计划调查OpenCompute网站,如果存在描述连接器引脚的文档。仍有待确定的是参考时钟和来自连接器的使能信号。
最终,我计划生产一种小型PCB,可以将这块电路板插入普通的PCIe卡插槽。