作者 主题:廉价的系统FGPA编程 (Read 2921 times)

0会员和1位客人正在查看此主题。

离线 siliconwizard.

  • 超级贡献者
  • ***
  • 帖子:6206
  • 国家: FR.
Re:廉价的系统FGPA编程
« 回复#25 on: 2019年7月30日,08:07:26 PM»
在任何情况下,如果使用a"biggish"FPGA(一个大的比特流),并且您想在每个上电时重新配置它,模拟外部SPI闪存芯片可能会产生最快的闪存芯片"boot" time. If it'S小比特流,JTAG会非常好,甚至以缓慢的速度。
在某些SOC中可能无法进行闪光仿真。例如,覆盆子PI 3的BCM2837缺少SPI从站或I2C从接口。如果您有SOC,则可能更好地将FPGA放在SPI从模式而不是SPI Master模式下,以便兼容。

当然,所以所有的"ifs"在我的最后一段。我只是认为这将是更快的选择'可能。另外一件是,Machxo2 / 3和ICE40支持SPI从属配置,但(如果我纠正我)'m wrong) I don'认为Xilinx零件是这样做的。所以它也取决于你选择的FPGA。

最后一个评论,真的很明显,但我们不'T知道FPGA将用于什么。在系统中,可能需要在短时间内和在SoC结束其启动之前完全运行,并且有机会将比特流上的机会上传到FPGA。当然在这种情况下,除非你'使用一个非常轻的OS,使用具有嵌入式闪存的FPGA(或使用外部闪存IC)的FPGA来使用非常轻的OS,或者使用它裸露的金属。然后,SOC可以在需要时更新闪存内容。
 

离线 Asmi.

  • 超级贡献者
  • ***
  • 帖子:1758
  • 国家: 加利福尼亚州
Re:廉价的系统FGPA编程
« 回复#26: 2019年7月30日,晚上10:47:41»
Xilinx提供了一个Appnote(Xapp583),其中用于使用MCU启动其FPGA的示例代码。实际上,如果比特流了'我经常需要更新,我'd只是实现了标准的方式 - 将其放在QSPI闪存上,并每当我需要更新它时 - 我会编程FPGA,成为AP和FPGA之间的各种桥梁,并将其写入通过所述FPGA间接闪光。有点像Xilinx和Divilent程序员在Vivado中编程闪存时正在做的。

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#27: 2019年7月31日,02:52:16 AM»
当然,所以所有的"ifs"在我的最后一段。我只是认为这将是更快的选择'可能。另外一件是,Machxo2 / 3和ICE40支持SPI从属配置,但(如果我纠正我)'m wrong) I don'认为Xilinx零件是这样做的。所以它也取决于你选择的FPGA。
Xilinx和英特尔零件都支持SPI从模式,至少最近像斯巴达6及以上。

最后一个评论,真的很明显,但我们不'T知道FPGA将用于什么。在系统中,可能需要在短时间内和在SoC结束其启动之前完全运行,并且有机会将比特流上的机会上传到FPGA。当然在这种情况下,除非你'使用一个非常轻的OS,使用具有嵌入式闪存的FPGA(或使用外部闪存IC)的FPGA来使用非常轻的OS,或者使用它裸露的金属。然后,SOC可以在需要时更新闪存内容。
如果SoC打算运行Linux,则可以在U-Boot中初始化FPGA。 U-Boot是一个引导加载程序意味着它不需要太多启动,也意味着在内核负载之前将可靠地启动FPGA。
 

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re:廉价的系统FGPA编程
« 回复#28 on: 2019年7月31日,08:06:26»
我在这里拥有一个由Nova System制造的Blackfin板,它也有一个微小的FPGA。 DSP加载U-Boot的自定义版本,它能够(从网络上传文件以顺序)"program"FPGA自动启动的闪存。一旦编程,它会单独地并并行地向两个芯片和DSP和FPGA引导发送复位信号。

P.S.
注意PCB上有三个SPI-Flash芯片。第一个用于对DSP的引导,第二个用于启动FPGA,第三个用于使用AS"fail-safe".

SPI-Flash0:DSP固件,U-Boot + RTOS
SPI-Flash1:FPGA bitstream
SPI-Flash2:DSP故障安全,U-Boot稳定版本
(默认配置)

U-Boot能够编程DSP's flash and the FPGA'闪光,有一个"fail-safe"程序,所以你不小心重新编程DSP's flash with错误文件,您可以始终设置跳线以交换第一个和第三个SPI-Flash。

'SPI-Flash0:DSP故障安全,U-Boot稳定版本
SPI-Flash1:FPGA's bitstream
'SPI-Flash2:DSP固件,U-Boot + RTOS<-----------垃圾,需要重新编程!
(随着"fail-safe juper" set)

编辑:
错字
« 上次编辑:2019年8月1日,10:56:24遗产 »
 

离线 哈利斯

  • 超级贡献者
  • ***
  • 帖子:1195
  • 国家: Au.
Re:廉价的系统FGPA编程
« 回复#29开: 2019年7月31日,上午10:02:49»
大家好,

显然我在临界休眠后,这里有一堆讨论。

申请非常简单。 FPGA只是协调时间同步'd从多个ADC进行采样,将其分组,然后通过SPI和DMA将其流入SOC中。 没有快速的准时要求。

ICE40填充了设计要求,并给出了它可以将SPI与FPGA作为奴隶一起加载的比特流,我可以'看到任何更好的方式。 正如迈克所指出的那样,将SoC软件和FPGA比特流保持在一起使更新管理成为BREESE。

虽然有趣的讨论。
 

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#30: 2019年7月31日,02:17:59 PM»
正如迈克所指出的那样,将SoC软件和FPGA比特流保持在一起使更新管理成为BREESE。
如果您连接了FPGA,允许SOC使用GPIO引脚重置和重新初始化它,您甚至可以热补丁比特流。

像Linux这样的UNIX形式允许软件在没有重新启动的情况下更新软件,只要内核并不触及libc(与最近的内核libc热修补,即使内核热修补也可以在某种程度上是可行的。) GPIO引脚您的软件可以在启动时重置FPGA,上传比特流并执行其事物。由于只要软件启动,FPGA重置,软件更新就可以立即生效,而无论何时您的软件重新启动,都可以立即生效。如果从实际接口FPGA的软件中解耦用户界面,则更新可能是无缝体验。
 

离线 siliconwizard.

  • 超级贡献者
  • ***
  • 帖子:6206
  • 国家: FR.
Re:廉价的系统FGPA编程
« 回复#31开: 2019年7月31日,03:20:34 PM»
当然,所以所有的"ifs"在我的最后一段。我只是认为这将是更快的选择'可能。另外一件是,Machxo2 / 3和ICE40支持SPI从属配置,但(如果我纠正我)'m wrong) I don'认为Xilinx零件是这样做的。所以它也取决于你选择的FPGA。
Xilinx和英特尔零件都支持SPI从模式,至少最近像斯巴达6及以上。

好的,谢谢你的信息。从来没有在Xilinx部分上使用它,并且不确定它甚至支持。那's good to know!

最后一个评论,真的很明显,但我们不'T知道FPGA将用于什么。在系统中,可能需要在短时间内和在SoC结束其启动之前完全运行,并且有机会将比特流上的机会上传到FPGA。当然在这种情况下,除非你'使用一个非常轻的OS,使用具有嵌入式闪存的FPGA(或使用外部闪存IC)的FPGA来使用非常轻的OS,或者使用它裸露的金属。然后,SOC可以在需要时更新闪存内容。
如果SoC打算运行Linux,则可以在U-Boot中初始化FPGA。 U-Boot是一个引导加载程序意味着它不需要太多启动,也意味着在内核负载之前将可靠地启动FPGA。

有趣的。我想这意味着需要用U-Boot切割?或者很容易配置?我不'关于U-Boot Works的工作很多。
 

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#32开启: 2019年7月31日,03:27:08 PM»
有趣的。我想这意味着需要用U-Boot切割?或者很容易配置?我不'关于U-Boot Works的工作很多。
除非您正在使用内核驱动程序for FPGA组件,否则通常更好地想到FPGA配置,直到您在SOC上有用户界的环境。

如果您真的想这样做,则需要一个U-Boot驱动程序,该驱动程序将在某些机制上以给定的内存地址和长度写入FPGA的U-Boot驱动程序,例如SPI。然后,现有的U-Boot机制允许您从存储设备加载比特流文件,并调用此驱动程序以配置FPGA。在编码自己之前研究U-Boot源代码,尽管可能已经实现了。
 

离线 siliconwizard.

  • 超级贡献者
  • ***
  • 帖子:6206
  • 国家: FR.
Re:廉价的系统FGPA编程
« 回复#33开: 2019年7月31日,晚上11:57:11»
好,谢谢。除非我绝对不得不,否则我想和我想打扰的东西。

如果我需要早起的FPGA准备好,我只需使用一个我认为的闪存芯片,只需添加手段即可重新编程闪存以进行更新......
 

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#34开: 2019年8月1日,04:37:57 AM»
如果我需要早起的FPGA准备好,我只需使用一个我认为的闪存芯片,只需添加手段即可重新编程闪存以进行更新......
如果单独的FPGA和SoC靴子,您实际上具有比赛危险:SoC几乎没有线索,FPGA何时实际完成加载比特流并引导,并且如果FPGA启动失败的SoC会很少的方法可以恢复它。如果您使用SOC来提出FPGA,SOC代码确切地知道FPGA准备就绪。
 

离线 mikeselectricaluff.

  • 超级贡献者
  • ***
  • 帖子:12430
  • 国家: GB.
    • 麦克风's Electric Stuff
Re:廉价的系统FGPA编程
« 回复#35开启: 2019年8月1日,08:30:08»
如果我需要早起的FPGA准备好,我只需使用一个我认为的闪存芯片,只需添加手段即可重新编程闪存以进行更新......
如果单独的FPGA和SoC靴子,您实际上具有比赛危险:SoC几乎没有线索,FPGA何时实际完成加载比特流并引导,并且如果FPGA启动失败的SoC会很少的方法可以恢复它。如果您使用SOC来提出FPGA,SOC代码确切地知道FPGA准备就绪。
SoC可能有 监视FPGA配置状态的输入 - 您可以拥有一个系统,该系统通常从Flash启动FPGA以获得一些早期功能,并且可以随后软件重新加载 对于系统启动时更新的主要功能和/或闪存
Youtube channel:分开奇怪的东西。很宽。
麦克风's Electric Stuff:高压,复古电子等。
一天的工作:主要是LED
 

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re:廉价的系统FGPA编程
« 回复#36开启: 2019年8月1日,10:53:45»
SoC可能有 监视FPGA配置状态的输入 - 您可以拥有一个系统,该系统通常从Flash启动FPGA以获得一些早期功能,并且可以随后软件重新加载 对于系统启动时更新的主要功能和/或闪存

Nova上的DSP'S板引导RTOS。当然,DSP和FPGA奇异地和平行进行自动启动,但FPGA和DSP之间存在引脚;它's called "ready",这意味着FPGA已完成其初始化和它's正确运行。当FPGA电源时,引脚关闭,只有当FPGA完成自动启动时,它才能高速高,并且有限状态机将完成其早期循环。以下是HDL代码播放其关于初始化事物的规则的位置。此外,FPGA中有两个锁存器编程,以讲述硬件状态。这些是使用的"probe"内核驱动程序中的函数。

Linux比RTOS更复杂,但根本没有问题  :D
 

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#37 on: 2019年8月01日,11:01:24»
SoC可能有 监视FPGA配置状态的输入 - 您可以拥有一个系统,该系统通常从Flash启动FPGA以获得一些早期功能,并且可以随后软件重新加载 对于系统启动时更新的主要功能和/或闪存
Nova上的DSP'S板引导RTOS。当然,DSP和FPGA奇异地和平行进行自动启动,但FPGA和DSP之间存在引脚;它's called "ready",这意味着FPGA已完成其初始化和它's正确运行。当FPGA电源时,引脚关闭,只有当FPGA完成自动启动时,它才能高速高,并且有限状态机将完成其早期循环。以下是HDL代码播放其关于初始化事物的规则的位置。此外,FPGA中有两个锁存器编程,以讲述硬件状态。这些是使用的"probe"内核驱动程序中的函数。

Linux比RTOS更复杂,但根本没有问题  :D
Ready引脚不提供从FPGA上的故障启动中恢复的机制。任何类型的从属端口,都是JTAG或SPI,删除了SOC可以恢复FPGA的失败点。
 

在线的 或者chguy.

  • 超级贡献者
  • ***
  • 帖子:2329
  • 国家: 加利福尼亚州
Re:廉价的系统FGPA编程
« 回复#38 on: 2019年8月1日,01:30:13 PM»
模拟100 MHz QSPI Flash不是一项简单的任务。真正的QSPI闪存成本低于一美元。
 

离线 siliconwizard.

  • 超级贡献者
  • ***
  • 帖子:6206
  • 国家: FR.
Re:廉价的系统FGPA编程
« 回复#39开: 2019年8月01日,01:47:48 PM»
Ready引脚不提供从FPGA上的故障启动中恢复的机制。任何类型的从属端口,都是JTAG或SPI,删除了SOC可以恢复FPGA的失败点。

所以?大多数电路涉及FPGA的设计。来自外部闪存的FPGA配置多久发生一次失败?不是一个巨大的关注点。只要您可以检测到失败。

正如我所建议的那样,最简单,最快(配置时间明智)方法总体而且仍然是最灵活的是使用外部SPI / QSPI闪存并仍然实现JTAG。
主机可以监控配置就绪引脚。如果它没有'T显示一个后的超时后显示器,然后主机可以通过JTAG和/或进行到其他一些自动化测试。

因此,正如我之前所说的那样,如果配置时间至关重要,我个人会对大量比特流有利。对于较小的FPGA来说,SPI奴隶可能是足够的。然后,当OP使用MachXO3建议时,如果它再次在很短的时间内准备好,我只会购买Flash版本,并可能通过JTAG进行更新进行重新编程。

再一次'■所有要求和用例!
如果OTOH,Config时间并不重要,但您需要经常重新配置FPGA(即使是"on the fly"取决于系统'S状态)显然,SPI或JTAG只有方法将受到青睐。也可以是两者的混合,您当然可以用我的外部(或内部支持)闪光+ JTAG和MIKESELELTRUFFURF的建议'■监控配置就绪针的建议绝对是一个好主意。

« 上次编辑:2019年8月01日,01:49:49 SiliconWizard »
 

离线 Technix.

  • 超级贡献者
  • ***
  • 帖子:3336
  • 国家: CN.
  • 从上海与爱情
    • 我无题的博客
Re:廉价的系统FGPA编程
« 回复#40开启: 2019年8月1日,02:36:57 PM»
模拟100 MHz QSPI Flash不是一项简单的任务。真正的QSPI闪存成本低于一美元。
但是我可以将来自SoC内存的DMA数据到硬件SPI,如果我的SOC允许它,它会在〜120MHz中输出。曾经听说过Sendfile(2),可以确定如何在内核模式下的DMA文件?
 

离线 遗产

  • 超级贡献者
  • ***
  • !
  • 帖子:4415
  • 国家: CH.
Re:廉价的系统FGPA编程
« 回复#41开启: 2019年8月01日,08:42:05 PM»
Ready引脚不提供从FPGA上的故障启动中恢复的机制。任何类型的从属端口,都是JTAG或SPI,删除了SOC可以恢复FPGA的失败点。

如果SPI-Flash与右边流编程,则只有存在硬件问题,只能发生故障的靴子,并且在这种情况下有任何SoC可以恢复。 SoC只能通过GPIO向FPGA发出重置,这将强制FPGA重新启动。
 


分享我

掘客  Facebook  诽谤  美味的  Technorati.  推特  谷歌  雅虎
SMF.