FPGA,ASIC和通用微控制器之间有什么异同?


25

我已经阅读了这篇文章,但并没有完全回答我的问题:

我认为微控制器是指具有一些内存,寄存器并可以处理诸如LOAD,STORE和ADD之类的指令的任何事物。它包含逻辑门等以执行其作用,但是其主要任务是成为通用的位处理器。我认为Microntroller是一个相互连接的ASIC设计系统,可以创建存储和处理指令的功能。

我认为ASIC器件是一种使用逻辑和电气组件专门构建的电路,可以执行一项任务,无需考虑其他任务,也不需要额外的硬件。

我认为FPGA设备是ASIC设备(低级设备)+一堆未使用的东西,用于实现特定的真值表。

尽管有其名称,FGPA仍感觉非常“特定于应用程序”,因为必须重新连接它才能执行新的不同任务。这导致与ASIC的混淆。但是,在重新连接FPGA的情况下,应提供所有必需的硬件。而且,FPGA的目的是可编程的,但这不是微处理器的目的吗?

我上面提到的帖子还提到了HDL,我很熟悉。HDL不能同时用于ASIC和FPGA并通过代理设计整个微控制器吗?


1
您的问题还不是很清楚。您是否已阅读有关FPGA和ASIC的相关问题?实际上,HDL实际上是用于设计ASIC和FPGA实现的,您可以使用HDL设计微控制器。
pjc50

3
Altera提供了免费的电子书,称为《FPGA for Dummies》,很好地解释了FPGA,ASIC和微控制器之间的区别。
kkrambo 2015年

@kkrambo你叫一个假人吗?:)对不起,无法抗拒...我会检查一下。
user58446

我在问题标题中添加了“相似性”一词,因为似乎有一些细微的技术术语可能会混淆这三种不同设备的关系:例如,一个设备可能包含其他两个设备之一,或者可能包含许多其他设备相似的组件,但在一些重要方面有所不同。一些现有的答案已经涉及到这一点。谢谢。
user58446

Answers:


28

ASIC与FPGA

现场可编程门阵列可以看作是专用集成电路的原型设计阶段:ASIC的制造非常昂贵,一旦制成,就无可厚非了(因为最昂贵的固定成本是掩模[一种制造“模板” “]及其发展)。FPGA可以重新编程很多次,但是由于连接了通用门阵列来实现您的目标,因此并没有像ASIC那样对其进行优化。而且,FPGA本身就是动态设备,因此,如果关闭电源,不仅会丢失当前状态,还会丢失配置。尽管现在存在增加了FLASH芯片和/或微控制器以在启动时加载配置的电路板,所以这往往不是那么重要。ASIC和FPGA均可使用硬件描述语言进行配置,有时将FPGA用于最终产品。但是通常,当设计固定后,ASIC就会起作用。

FPGA与微控制器

至于微控制器和FPGA之间的区别,您可以将微控制器视为ASIC,它基本上按顺序处理FLASH / ROM中的代码。即使未进行优化,您也可以使用FPGA制作微控制器,但并非相反。FPGA的布线就像电子电路一样,因此您可以拥有真正的并行电路,而不是像微控制器那样,处理器从一段代码跳到另一段代码来模拟足够好的并行性。但是,由于FPGA是为并行任务而设计的,因此编写顺序代码并不像在微控制器中那样容易。

例如,通常,如果在FPGA上用伪代码“ let C be A XOR B”编写,它将转换为“使用包含的乐高积木(查找表和锁存器)构建XOR门,并将A / B连接为输入”和C作为输出”,无论是否使用C都会在每个时钟周期更新。而在将转换为“读指令”的微控制器上,它是RAM的地址A和地址B的变量的XOR,结果存储在地址C。加载算术逻辑单元寄存器,然后要求ALU进行XOR,然后将输出寄存器复制到RAM的地址C”。但是在用户方面,这两个指令都是1行代码。如果要执行此操作,则需要在HDL中进行其他操作,我们必须定义所谓的流程来人为地执行序列-与并行代码分开。而在微控制器中则无事可做。另一方面,要从微控制器中获得“并行”(实际上是进出调优),您将需要处理一些琐碎的线程。不同的工作方式,不同的目的。

综上所述:

ASIC与FPGA:固定的,对于少量产品而言更昂贵(大批量时更便宜),但更优化了。

ASIC与微控制器:当然就像拿锤子比较工具。

FPGA与微控制器:未针对顺序代码处理进行优化,但也可以非常轻松地完成真正的并行任务。通常, FPGA在HDL中编程,微控制器在C / Assembly中编程

只要并行任务的速度成为问题,那么从长远来看(批量生产)对您而言便宜的话,就可以使用FPGA,改进您的设计并最终使其成为ASIC。如果可以执行顺序任务,请使用微控制器。我想如果从长远来看它也对您便宜,那么您可以从中制造出更多的专用IC。最好的解决方案可能是两者兼而有之。

写完这篇文章后,快速搜索给了我: 在此处输入图片说明 在此处输入图片说明

FPGA与微控制器,在这个论坛上


14

可以通过重新编程来“重新连接” FPGA。通电后,FPGA会将其配置加载到其可配置逻辑单元中。这意味着无需更改硬件即可对其进行重新编程。

只能通过修改硅铸造厂的光刻掩模来重新布线ASIC。

微控制器是一种类型的ASIC,执行程序,可以做的事情一般的结果。但是,如果要更改指令集或执行类似的操作,则必须修改实际的硅IC布局。


FPGA和MCU之间的区别更加模糊。基本上,FPGA在硬件级别上是许多小型SRAM单元,所有单元均连接到密集的多路复用器矩阵。基本上,FPGA是一堆离散逻辑,可以通过对多路复用器和SRAM单元进行重新编程来进行电子 “重新布线”。

这样,实际上,您可以 FPGA 实现MCU ,因为MCU只是逻辑单元的特定配置。实际上,FPGA在MCU的设计过程中非常普遍。

微控制器是某种逻辑配置的实现。之所以拥有它们,是因为通过直接在硅片中实现MCU,可以大大优化所需的硅片裸片空间总量,并且可以进行某些性能优化,而FPGA所要求的“通用性”则无法实现。这样可以大大降低MCU的生产成本,结果,普通的MCU比能够包含等效逻辑的FPGA便宜得多。


FPGA 在某些应用很有用,因为它们可以以MCU无法实现的方式实现逻辑结构。例如,如果您需要添加X1 + Y1,X2 + Y2,X3 + Y3和X4 + Y4,则MCU必须按顺序 * 进行每个操作。甲FPGA可以简单地具有4级单独的ALU 在同一时间,所以它可以在短的时间(假设两个设备以相同的速率被定时)四分之一执行相同的操作。

这是FPGA(或为同一任务而设计的ASIC)真正发挥作用的地方,事实上,您可以同时完成许多很多事情,而单个进程只能依次完成。

*(注意:我在这里忽略了SIMD之类的东西)


我认为FPGA / ASIC的区别并不模糊。在FPGA中,可以改变其“接线”的电路同时独立运行。MCU具有大量电路,这些电路的接线无法更改,其行为是通过可从可编程存储器阵列中逐个访问的信息来控制的。在任何时候,CPU通常只能执行从几千个到几十亿个选择的列表中的一项操作,但是将对MCU进行设计,以便将这些操作按顺序组合在一起将使其有可能执行有用的工作。
2015年

谢谢。十分接近成为答案……尽管10个月后。+1做出补偿。
2015年

6

这是一个很好的问题,

基本上,微控制器和ASIC的硬件(通常称为硅)固定在石头上,无法更改。可以将FPGA 配置为代表许多不同种类的硬件(其中可以包括微控制器)。

您可能会认为微控制器可以做很多不同的事情,但这都是通过运行不同的程序来完成的-技术上是软件,有时也称为固件-硬件本身基本不变,它执行相同的操作,但是不同的输入顺序。

FPGA通常用于生成专用于ASIC的设计,两者之间的区别在于,如果您想更新FPGA的内部工作原理或添加/删除功能块,只需要做的就是更新其固件,这是不可能的。由于内部工作一直致力于硅,因此必须在ASIC上完成,这是不可重新配置的。

简而言之,使用微处理器,您可以使用相同的硬件来运行不同的程序,使用FPGA,您可以重新配置硬件以执行不同的功能,而ASIC就像微处理器一样,因为硬件不能更改,但通常被设计为执行一个功能非常有效。

ASIC和FPGA都可以包含微控制器,如果可以,它们可以像独立的微控制器一样为它们编写程序,Altera的NIOS II嵌入式处理器就是一个例子。

如果这仍然令人困惑,请让我知道它尚不清楚,我将尽力澄清我的答案。

吉普赛人


3

好吧,如果行为像门的特定集合一样,则没有任何一个FPGA可以通过电信号进行编程,有些FPGA包含闪存来存储此配置,有些则不需要,并且每次电源复位后都必须对其进行重新编程。

ASIC退出了已经配置的生产线。

FPGA错误可以通过固件升级来解决,而ASIC错误无法经济地修复。


2

尽管FGPA具有其名称,但它感觉非常“特定于应用程序”,因为必须重新连接它才能执行新的不同任务。

这与“特定于应用程序”的含义相反。通过重新布线,您可以将一个FPGA用于多个应用程序。您无法更改ASIC,因此只能将其应用于一项任务(该任务可能是实现微控制器)。

但是,在重新连接FPGA的情况下,应提供所有必需的硬件。

不知道这意味着什么。通常,有一个用于重新编程FPGA的软件接口。这是一种ASIC,需要数百万个[货币单位]的硬件。

FPGA是可编程的,但这不是微处理器的意思吗?

微控制器允许您为固定硬件编程顺序软件。就像普通的计算机一样,但是非常小并且资源有限。FPGA使您可以使用HDL对所需的任何硬件进行编程。

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.