FPGA - DIY 编程

电器工程 FPGA spi 编程
2022-01-24 03:07:46

几年来我一直在为微控制器编程,在参加了数字设计课程后我才发现了 FPGA。在对不同的 FPGA、开发板等进行了一些研究之后,我仍然犹豫是否要购买,因为我不知道如何制作自己的最终“产品”版本。我已经毫无问题地将 PIC、SAM、AVR 等放到定制 PCB 上,所以我并不担心——我主要关心的是在没有制造商电路板的情况下对 FPGA 进行编程。

我的具体问题:如果我将 Quartus、Vivado、iCEcube 等生成的位图文件写入从地址 0 开始的 SPI 闪存芯片(例如,通过 FT2232H)并将闪存连接到FPGA 的 SPI 引脚(正确设置了 MODE 配置)?

我为部分假设道歉;我很确定这就是莱迪思的 Diamond Programmer 所做的一切,但我想知道这种方法是否适用于来自不同制造商的 FPGA,或者说,Quartus 在写入时是否在内存中添加了额外的“窗口修饰”或标头。

让我知道我是否可以做些什么来改进/澄清问题,或者我是否在 FPGA 编程过程中遗漏了一个重要点。谢谢!

4个回答

是的,它会工作得很好。

实际上,大多数 FPGA 的开发工具都允许您直接通过 FPGA 自己的 JTAG 连接对外部闪​​存进行编程,从而无需为闪存提供单独的编程接口。

当您说“由”生成的 [sic] 位图 [sic] 文件时,答案是肯定的,只要您选择正确的 - 因为不只生成一个文件,所以使用定冠词您犯了一个小错误.

例如,Quartus 可以生成 SOF、POF 和 JIC 文件。最后一个是用于通过 FPGA JTAG 进行间接编程的。将它写入 SPI 闪存没有用。SOF 用于通过 JTAG 加载以在 FPGA 中瞬时运行您的设计。POF 是您需要加载到闪存芯片中的内容。

请参阅FPGA:比特流与 SRAM 对象文件,了解有关每个不同供应商的不同文件的含义的大量有用信息。

如果我...将闪存连接到 FPGA 的 SPI 引脚(正确设置 MODE 配置),FPGA 会起作用吗?

如果我正确理解您的问题,您想将 FPGA 配置(例如您编译的 HDL 模型)写入 SPI EEPROM 或 SPI Flash,并且您希望 FPGA 使用 SPI IC 上的数据自行编程。

(如果我正确理解戴夫特威德的回答,他会以不同的方式理解你的问题。)

至少许多 SPI 闪存设备无法工作,因为 SPI 闪存 IC 需要发送特定的波形(例如要读取的地址),以便从 IC 中读取数据。

对于所有闪存器件,该波形并不相同。即使只查看 SD 存储卡(也可以用作 SPI 闪存),我们也会发现两种变体需要在卡读取数据之前将不同的波形发送到卡。

当正确设置 FPGA 的模式引脚时,FPGA 会发送一些波形来指示一些串行存储设备发送数据。但是,由于不同的 IC 需要不同的波形,波形不会被所有 Flash IC 理解,而只能被某些类型理解。

我知道 Altera 生产与其 FPGA 兼容的特殊闪存或 EEPROM IC。

如果您想在没有官方 FPGA 编程工具的情况下将 FPGA 比特流写入闪存,您很可能希望将该比特流文件转换为您可以轻松读取的开放二进制格式,例如原始二进制、英特尔 HEX 或摩托罗拉 SREC(例子)。这将剥离 FPGA 比特流可能包含的任何专有标头。

通过这种方式,您将能够使用闪存制造商提供的工具(或您自己的工具)对闪存进行编程,甚至可以订购使用您的 FPGA 比特流进行预编程的闪存芯片。