FPGA-DIY编程


9

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

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

对于部分假设,我深表歉意。我相当确定这是莱迪思的Diamond程序员所做的一切,但是我想知道这种方法是否适用于不同制造商的FPGA,或者说Quartus在编写时是否在存储器中添加了额外的“窗口修饰”或标头。

让我知道我是否可以做些什么来改善/阐明这个问题,或者我是否在FPGA编程过程中遗漏了重点。谢谢!


“位图”是指位流?
尤金(Eugene Sh)。

在另一个问题之前,曾问过这个问题
Voltage Spike,

1
在您的第一个FPGA电路板设计上,我建议提供两种设备编程方法(以及供应商的JTAG头)。放置跳线位置,以允许您根据需要更改MODE引脚。搞砸这些很容易,并且有备份计划是很好的。同样要确保为INIT和DONE(或莱迪思用来指示编程状态的任何内容)提供测试点。
Photon

2
安装BGA(特别是高引脚数的BGA)所需的过程控制比QFP更为严格。球更多的事实意味着桥接或连接不良的可能性更高,并且由于它们是隐藏的,因此您无法在运行事物之前先检查问题(除非您拥有X射线),以查看是否有问题任何问题。而且,如果您重新安装组件,则必须重新组装它,这需要更多的设备。FPGA也是您不想损坏的昂贵芯片。大型BGA是需要PCB预热器的地方。
DKNguyen

1
我曾经在一个技术人员整天不做任何工作的地方工作,他们有热空气站(温度控制更严格,比热风枪更可靠),并且他们无法可靠地手工焊接BGA。我认为他们没有预热器,因此,如果您要尝试使用预热器,请购买一个预热器并使用便宜的芯片(甚至可以使用菊花链虚拟BGA封装,以便可以进行电气验证,直到在拧紧之前钉好了)真实的东西)。
DKNguyen

Answers:


12

是的,它可以正常工作。

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


1
某些器件(如Lattice Mach X02)具有板载闪存,因此您只需要几个电阻和5x2接头即可连接到Lattice编程盒。
Spehro Pefhany

我知道您可以使用Vivado / Quartus之类的工具通过JTAG直接对闪存进行编程,我希望能够做到这一点而无需购买供应商专用电缆-只需使用FT2232H并写入比特流即可(位图?)我自己。我认为Quartus不支持该芯片,Vivado不公开支持该芯片(即使他们在Nexys和Basys板上使用了该芯片)。
布莱克·卢卡斯

1
是的,您可以使用其他方式用位文件对闪存进行编程。您的MCU程序员之一可能可以做到这一点。我知道我的Segger J-link当然可以。
DKNguyen

@Toor:确实这不是供应商专用的电缆,但它仍然在供应商工具中具有硬编码支持,并且Segger的价格比FT2232H高很多。
Ben Voigt

2
几乎所有主要供应商都提供了工程文档,以使确定的上载比特流可以使用自定义工具上传到其部件(FPGA和自定义配置闪存),因为有时在集成系统或测试平台中需要这样做。使用供应商支持的工具可能最简单(尤其是一开始),但是多年来,我已经针对特定项目实施了很多替代方案。原始FPGA电路板项目中最难的部分可能是FPGA在电路板上所需的全部支持-路由和旁路的许多电源对,通常用于几个不同的电压。
克里斯·斯特拉顿

3

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

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

有关许多关于不同供应商的不同文件含义的有用信息,请参见FPGA:比特流与SRAM目标文件


1

如果将闪存连接到FPGA的SPI引脚(正确设置了MODE配置),FPGA是否可以正常工作?

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

(如果我正确理解Dave Tweed的回答,他会以不同的方式理解您的问题。)

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

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

正确设置FPGA的模式引脚后,FPGA将发送一些波形,指示某些串行存储设备发送数据。但是,由于不同的IC需要不同的波形,因此并非所有Flash IC都能理解该波形,而只能由某些类型的波形理解。

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


显然,SD卡将无法工作,因为据我所知,没有FPGA支持SD / MMC作为配置协议。大多数FPGA坚持使用AT24 / AT26 / AT45。
德米特里·格里戈里耶夫

1

如果您想在不使用官方FPGA编程工具的情况下将FPGA比特流写入闪存,则很可能希望将该比特流文件转换为易于读取的开放二进制格式,例如原始二进制,Intel HEX或Motorola SREC(例子)。这将去除FPGA比特流可能包含的所有专有报头。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.