FPGA 有哪些实际应用?
我对我的程序为一个小型七段显示器提供动力感到非常兴奋,但是当我向不在现场的人展示它时,他们总是说“那么你能用它做什么?”我永远无法给他们一个简洁的答案。有人可以帮我吗?
I'm super excited about my program powering a little seven-segment display, but when I show it off to people not in the field, they always say "well what can you do with it?" I'm never able to give them a concise answer. Can anyone help me out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
第一:它们不需要具有易失性存储器。
事实上,大厂商(Xilinx、Altera)通常将其配置存储在 SRAM 中,因此您需要额外的 EEPROM/Flash/WhatEver(TM) 将其存储在外部。
但还有其他一些,例如 Actel 是我想到的一家大公司,他们的 FPGA 上有非易失性配置存储(顺便说一句。这还有其他优点,因为 SRAM 通常不太耐辐射,并且您必须需要特殊的进入轨道时的测量)。
有两大因素可以证明 FPGA 的合理性:
价格 - 它们并不便宜。但有时你无法用软件来做某事,你需要硬件来完成。当您的需求量低于某个点时(例如,因为它只是小系列或原型),FPGA 比 ASIC 便宜得多。此外,在开发 ASIC 时,在达到最终状态之前,这允许更长的周转时间。
重新配置 - 您可以重新配置 FPGA。这是处理器或 ASIC 无法做到的事情。在某些应用程序中,您可以使用此功能:例如,当您需要修复设计中的某些内容,但无法实际接触设备时。示例:火星轨道飞行器/漫游车使用 Xilinx FPGA。当有人发现错误(或者想要切换到不同的编码来传输数据或其他什么)时,您无法更换飞船,因为它无法到达。但使用 FPGA,您只需重新配置并应用您的更改。另一种情况是,您可以拥有一个能够根据情况执行不同加速的单芯片。想象一下智能手机,当打电话时,FPGA 可以配置为进行音频编码/解码,当上网时,它可以作为压缩引擎,当播放视频时,它可以配置为 h264 解码器/加速器。您可以做的另一件事是可以将硬件与问题实例相匹配。例如,思科在其硬件中使用了许多 FPGA。您需要硬件以所需的速度执行交换/路由/数据包检查,并且您可以从实际设置匹配引擎直接生成到硬件中。
另一件事可能很快就会出现(我知道一些汽车制造商考虑过这一点),那就是包含许多不同电子产品并拥有庞大供应链的设备。它或多或少是价格和重新配置的结合。拥有 10 个 ASIC 比 10 个 FPGA 更昂贵 - 两者都执行相同的任务,但只有一个供应商拥有 10 个 FPGA 并且只需要在服务和供应时保留一种类型的芯片比拥有 10 个供应商提供相同的芯片更便宜。需要持有和管理 10 种不同的芯片供应和服务。
First: They don't need to have volatile memory.
Indeed the big players (Xilinx, Altera) usually have their configuration on-chip in SRAM, so you need additional EEPROM/Flash/WhatEver(TM) to store it outside.
But there are others, e.g. Actel is one big player that come to mind, that has non-volatile configuration storage on their FPGAs (btw. this has also other advantages, as SRAM is usually not very radiation tolerant, and you have to require special measurements when you go into orbit).
There are two big things that justify FPGAS:
Price - They are not cheap. But sometimes you can't do something in software, and you need hardware for it. And when you are below a certain point in your required volume (e.g. because its just small series, or a prototype) an FPGA is MUCH cheaper than an ASIC. Also, while developing ASICs this allows - before a final state is reached - much higher turn-around times.
Reconfiguration - You can reconfigure your FPGA. That is something a processor or an ASIC can't do. There are some applications where you can use this: E.g. When you need the ability to fix something in the design, but you can't get physically to the device. Example for this: The mars orbiters/rovers used Xilinx FPGAs. When someone finds there a mistake (or wants to switch to a different coding for transmitting data or whatever), you can't replace the ship, as it is just not reachable. But with an FPGA you can just reconfigure and can apply your changes. Another scenario is, that you can have one single chip which is able to perform different accelerations, depending on the scenario. Imagine a smartphone, when telephoning the FPGA can be configured to make audio en-/decoding, when surfing it can work as a compression engine, when playing videos it can be configured as h264 decoder/accelerator. Another thing you could do is that you can match your hardware to your problem instance. E.g. Cisco uses many FPGAs in their hardware. You need the hardware to perform switching/routing/packet inspection with the required speed, and you can generate from actual setting matching engines directly into hardware.
Another thing which might come up soon (I know some car manufacturer thought about it), is for devices which include a lot of different electronics and have a big supply chain. It's more or less a combination of price and reconfiguration. It's more expensive to have 10 ASICs than 10 FPGAs - where both perform the same task, but it's cheaper to have 10 FPGAs with just one supplier and the need to hold just 1 type of chip at service and supply than to have 10 suppliers with the necessity to hold and manage 10 different chips in supply and service.
真实的故事。
它们使您能够修复定制数据采集板中的设计缺陷,以进行耗资数百万美元的粒子物理实验,这些缺陷在安装完所有组件并进行集成后才变得明显工作和探测器表征。
True story.
They allow you to fix design flaws in the custom data-acquisition boards for a multi-million dollar particle physics experiment that become obvious only after you have everything installed and are doing integration work and detector characterization.
你可以进化电路,这是有点老派的进化算法,但从一组随机个体开始,你可以选择在适应度函数中得分高于其他电路的电路,并繁殖它们以无限地创建新的群体。阅读有关进化硬件的内容,认为这本书涵盖了 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 电路,您有一个输入信号和一个所需的输出信号,从随机群体开始,您可能只选择最适应的(坏的),或者可能是适应和奇怪的混合体来创建下一代。经过几代之后,您可以打开盖子,发现低,并且看到进化已经发生,您拥有的电路甚至可能超出您最初的期望!
还要阅读遗传编程的现场指南,它在网络上的某个地方是免费的。
You can evolve circuits, this is a bit old school evolutionary algorithms but starting from a set of random individuals you can select the circuits that score higher in a fitness function than the rest and breed them to create a new population ad infinitum. read up about Evolutionary Hardware, think this book covers FPGA's http://www.amazon.co.uk/Introduction-Evolvable-Hardware-Self-Adaptive-Computational/dp/0471719773/ref=sr_1_1?ie=UTF8&qid=1316308403&sr=8-1
Say for example you wanted a DSP circuit, you have an input signal and a desired output signal, starting with a random population you select perhaps only the fittest (bad) or perhaps a mixture of fitties and odd ones to create the next generation. after a number of generations you can open the lid and discover low and behold evolution has taken place and you have a circuit that may even out perform your initial expectations!
also read the field guide to genetic programming, it's free on the web somewhere.
软件存在局限性。在软件上,您以 CPU 的时钟速率运行,使您每个时钟周期只能执行一条指令。在软件上,一切都是高层的,你无法控制低层发生的细节。您将始终受到正在编程的操作系统或开发板的限制。对于 Arduino 和 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/
希望这有帮助!
顺志龙,
多伦多大学
There are limitations to software. On software, you're running at the CPU's clock rate, enabling you to only execute one instruction per clock cycle. On software, everything is high level, you do not control details that happen in the low level. You'll always be limited by the operating system or development board you are programming. This is true for popular development boards out there such as Arduinos and Raspberry Pi.
In FPGA hardware, you can precisely program and control what happens between each clock cycle, providing your computations the speed at the electron level (note: speed of electrons determines speed of electric signal transfers between hardware)
Now, we know FPGA implies Hardware, Speed of Electrons, which is much better than
CPU that implies Software, 1 instruction per clock cycle.
So why use FPGA when we can design our own boards using Printed Circuit Board, transistor level?
This is because FPGA's are programmable hardware! It is built such that you can program the connections of a board instead of wiring it up for a specific application. This explains why FPGA's are expensive! It is sort of a 'general hardware' or Programmable Hardware.
To argue why you should pick FPGA's despite their cost, the programmable hardware component allows:
Longer product cycle (you can update the programmable hardware on the customer's products which contains your FPGA by simply allowing them to programmed your updated HDL code into their FPGA)
Recovery for hardware bug. You simply allow them to download the corrected program onto their FPGA. (note: you cannot do this with specific hardware designs as you will have to spend millions to gather back your products, create new ones, and ship them back to customers)
For examples on the cool things FPGA can do, refer to Stanford's infamous ECE5760 course.
http://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/
Hope this helps!
Soon Chee Loong,
University of Toronto
FPGA 还用于在开始批量生产之前测试/研究电路设计。这种情况发生在多个领域:图像处理、信号处理等。
编辑 - 几年后,我们现在可以看到更多实际应用,包括金融和机器赚钱:
FPGA are also used to test/research circuit design before they start mass production. This is happening in several sectors: image processing, signal processing, etc.
Edit - after few years we can now see more practical applications including finance and machine earning:
我喜欢这篇文章: 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
I like this article: http://www.hpcwire.com/hpcwire/2011-07-13/jp_morgan_buys_into_fpga_supercomputing.html
My feeling is that FPGA's can sit directly in your streaming data at the point where it enters your the systems under your control. You can then crunch that data without going through the steps a GPGPU would require (bringing the data in off the network, passing it across the PCI Express bus and crunching it a Gb at a time).
There are good reasons for both, but I think the notion of whether you mind buffering the data is a good bellwether.
Here's another cool FPGA application:
https://ehsm.eu/m-labs.hk/m1.html
汽车图像处理是一个有趣的领域:
为驾驶员提供车道保持支持(披露:我写了此页面!):
http://www.conekt.co.uk/capability/50-fpga-for-ldw
从 4 个鱼眼镜头摄像机提供汽车的鸟瞰图(带有视频):
http://www.logicbricks.com/Solutions /环视-DA-系统/Xylon-Test-Vehicle.aspx
Automotive image processing is one interesting domain:
Providing lane-keeping support to the driver (disclosure: I wrote this page!):
http://www.conekt.co.uk/capabilities/50-fpga-for-ldw
Providing an aerial view of a car from 4 fisheye-lens cameras (with video):
http://www.logicbricks.com/Solutions/Surround-View-DA-System/Xylon-Test-Vehicle.aspx