FPGA都有哪些实际应用?
Posted
技术标签:
【中文标题】FPGA都有哪些实际应用?【英文标题】:What are some practical applications of an FPGA?FPGA有哪些实际应用? 【发布时间】:2011-11-19 12:09:03 【问题描述】:我对我的程序为小型七段显示器提供动力感到非常兴奋,但是当我向不在该领域的人展示它时,他们总是说“你能用它做什么?”我永远无法给他们一个简洁的答案。谁能帮帮我?
【问题讨论】:
这不应该去electronics.stackexchange吗?或者您对它们的编程方面感兴趣?在后一种情况下,它仍然需要去电子产品。 如果你想给人留下深刻印象。尝试谷歌 FPGA 加密。 FPGA比特币。 FPGA的主要问题是成本。它们耗电量低且速度非常快。几乎没有离题 今天我认为 GPGPU 更好,主要是因为成本。 electronics.stackexchange.com/questions/97277/… @llazzaro 为什么你认为 GPGPU 比 FPGA 更好?据我所知,它们完全不同。 【参考方案1】:首先:它们不需要易失性内存。
事实上,大型厂商(Xilinx、Altera)通常在 SRAM 中进行片上配置,因此您需要额外的 EEPROM/Flash/WhatEver(TM) 将其存储在外部。
但还有其他的,例如Actel 是我想到的一个大玩家,它在他们的 FPGA 上具有非易失性配置存储(顺便说一句。这还有其他优点,因为 SRAM 通常不是很耐辐射,而且当你进入轨道时你必须需要特殊的测量)。
有两点证明 FPGAS 的合理性:
价格 - 它们并不便宜。但有时你不能用软件做某事,你需要硬件来做。当您低于所需数量的某个点时(例如,因为它只是小系列或原型),FPGA 比 ASIC 便宜得多。此外,在开发 ASIC 时,这允许 - 在达到最终状态之前 - 更长的周转时间。
重新配置 - 您可以重新配置 FPGA。这是处理器或 ASIC 无法做到的。您可以在某些应用程序中使用它:例如当您需要能够修复设计中的某些内容,但您无法实际使用设备时。示例:火星轨道器/漫游者使用 Xilinx FPGA。当有人发现有错误(或想要切换到不同的编码来传输数据或其他)时,您无法更换飞船,因为它无法到达。但是使用 FPGA,您可以重新配置并应用您的更改。另一种情况是,您可以拥有一个能够执行不同加速的单芯片,具体取决于场景。想象一个智能手机,打电话时FPGA可以配置为音频编码/解码,上网时它可以作为压缩引擎,播放视频时它可以配置为h264解码器/加速器。您可以做的另一件事是您可以将您的硬件与您的问题实例相匹配。例如。思科在其硬件中使用了许多 FPGA。您需要硬件以所需的速度执行交换/路由/数据包检查,您可以从实际设置匹配引擎直接生成到硬件中。
另一件可能很快就会出现的事情(我知道一些汽车制造商考虑过)是针对包含许多不同电子设备并拥有庞大供应链的设备。它或多或少是价格和重新配置的结合。拥有 10 块 ASIC 比拥有 10 块 FPGA 更昂贵——两者都执行相同的任务,但拥有 10 块 FPGA 并且只有一个供应商并且只需要提供一种类型的芯片来提供服务和供应比拥有 10 个供应商必须持有和管理 10 种不同的供应和服务芯片。
【讨论】:
【参考方案2】:真实的故事。
它们允许您修复自定义数据采集板中的设计缺陷,以进行价值数百万美元的粒子物理实验,只有在你安装了所有东西并正在进行集成工作和检测器表征。
【讨论】:
也在这些实验的触发逻辑中(例如 LHC),它必须在几微秒内决定是保留还是丢弃临时存储在探测器内存中的数字化信号。这些决定需要同步做出(在严格固定的时间内,否则探测器内存中的数据会丢失)并且是流水线的。重新编程 FPGA 可以适应运行条件(增加加速器强度、触发宇宙射线而不是加速器碰撞等) 哈哈,我想,“我认识这个 dmckee 吗?”然后我意识到:不,这一定是又一个粒子物理学事后 FPGA 修复。所以,是的,去过那里。【参考方案3】:您可以进化电路,这有点老派的进化算法,但是从一组随机个体开始,您可以选择在适应度函数中得分高于其他电路的电路,并繁殖它们以无限地创建新的种群。阅读进化硬件,认为这本书涵盖了 FPGA 的http://www.amazon.co.uk/Introduction-Evolvable-Hardware-Self-Adaptive-Computational/dp/0471719773/ref=sr_1_1?ie=UTF8&qid=1316308403&sr=8-1
假设您想要一个 DSP 电路,您有一个输入信号和一个所需的输出信号,从一个随机群体开始,您可能只选择最适合的(坏的)或者可能是适合和奇怪的混合来创建下一个一代。几代之后,您可以打开盖子并发现低级进化已经发生,您的电路甚至可能超出您最初的预期!
还可以阅读遗传编程领域指南,它在网络上的某个地方是免费的。
【讨论】:
【参考方案4】:软件有限制。在软件上,您以 CPU 的时钟速率运行,使您每个时钟周期只执行一条指令。在软件上,一切都是高级别的,你无法控制发生在低级的细节。您将始终受到您正在编程的操作系统或开发板的限制。这适用于流行的开发板,例如 Arduinos 和 Raspberry Pi。
在 FPGA 硬件中,您可以精确地编程和控制每个时钟周期之间发生的事情,为您的计算提供电子级别的速度(注意:电子速度决定了硬件之间电信号传输的速度)
现在,我们知道 FPGA 意味着硬件,电子速度,这比 CPU 表示软件,每个时钟周期 1 条指令。
既然我们可以使用印刷电路板、晶体管级设计我们自己的电路板,为什么还要使用 FPGA?
这是因为 FPGA 是可编程硬件!它的构建使您可以对电路板的连接进行编程,而不是为特定应用程序接线。这就解释了为什么 FPGA 很贵!它是一种“通用硬件”或可编程硬件。
要争论为什么不顾成本选择 FPGA,可编程硬件组件允许:
更长的产品周期(您可以更新包含您的 FPGA 的客户产品上的可编程硬件,只需让他们将您更新的 HDL 代码编程到他们的 FPGA 中)
硬件错误的恢复。您只需让他们将更正后的程序下载到他们的 FPGA 上。 (注意:您不能使用特定的硬件设计来做到这一点,因为您将不得不花费数百万来收集您的产品、创建新产品并将它们运回给客户)
有关 FPGA 可以做的很酷的事情的示例,请参阅斯坦福大学臭名昭著的 ECE5760 课程。
http://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/
希望这会有所帮助! 顺志龙, 多伦多大学
【讨论】:
【参考方案5】:FPGA 还用于在开始批量生产之前测试/研究电路设计。这发生在多个领域:图像处理、信号处理等。
编辑 - 几年后我们现在可以看到更多实际应用,包括金融和机器赚钱:
航空航天 仿真 汽车 广播 高性能计算机 医疗 机器学习 金融(包括加密货币)【讨论】:
【参考方案6】:我喜欢这篇文章:http://www.hpcwire.com/hpcwire/2011-07-13/jp_morgan_buys_into_fpga_supercomputing.html
我的感觉是 FPGA 可以直接存在于您的流数据中,在它进入您控制的系统时。然后,您可以处理这些数据,而无需执行 GPGPU 所需的步骤(将数据从网络中引入,通过 PCI Express 总线传递并一次处理一个 Gb)。
两者都有很好的理由,但我认为你是否介意缓冲数据的概念是一个很好的领头羊。
这是另一个很酷的 FPGA 应用程序:
https://ehsm.eu/m-labs.hk/m1.html
【讨论】:
【参考方案7】:汽车图像处理是一个有趣的领域:
为司机提供车道保持支持(披露:我写了这个页面!):
http://www.conekt.co.uk/capabilities/50-fpga-for-ldw
通过 4 个鱼眼镜头摄像头提供汽车的鸟瞰图(带视频):
http://www.logicbricks.com/Solutions/Surround-View-DA-System/Xylon-Test-Vehicle.aspx
【讨论】:
以上是关于FPGA都有哪些实际应用?的主要内容,如果未能解决你的问题,请参考以下文章
.NET框架都有哪些?不要复制,要实际应用中用到的,他们说的项目框架又是啥意思?