浅谈FPGA,SoC,ASIC

内容:

主要介绍FPGA,SoC,ASIC的一些基本概念

读完这篇文章,你将会学到FPGA,SoC,ASIC的含义,它们之间的异同点,以及它们分别都是做什么的,加深对它们的理解

 

声明:

文章主要参考知乎上两篇文章(小声逼逼,这才是知乎该有的模样)

SoC流程、FPGA流程和ASIC流程有什么区别

在人工智能大背景下,FPGA和ASIC谁发展潜力更大?


 

ASIC:专用集成电路,是一种为专门目的而设计的集成电路,(固化电路)

           通常意义上的ASIC指的是模块级别的含义,如视频解码器,音频解码器,USB,神经网络加速计算等模块。

           但是现在的ASIC通常包含  处理器,存储单元(ROM,RAM,flash等)和其他模块。这样的ASIC通常称为SoC(System on Chip)

FPGA:可编程门阵列(和ASIC是一个近亲的概念),内部集成了大量的数字电路基本门电路以及存储器,(非固化电路,电路可根据配置文件重新生成)

             用户可以通过烧入 FPGA 配置文件来来定义这些门电路以及存储器之间的连线。

             这种烧入不是一次性的,即用户今天可以把 FPGA 配置成一个微控制器 MCU,明天可以编辑配置文件把同一个 FPGA 配置成一个音频编解码器。

SoC:片上系统,集成了CPU核,内存单元,以及其他外设。亦即集成了许多不同模块的芯片。

 

FPGA和ASIC的主要区别就是,一个是固化了的电路,一个是非固化的电路。所以FPGA的灵活性更强,但是性能比ASIC更低,而且大规模做生产应用的时候,ASIC的价格更加便宜。

SoC的执行:是由CPU控制的,即程序是由执行单元顺序执行的

FPGA和ASIC(此处指的是模块级)的执行:程序并不由任何执行单元顺序执行,而是由硬件电路直接执行,可能是并行,并不会存在流水线和周期的概念

注:软件执行,一般指的是通过CPU执行,由执行单元顺序执行,会有流水线,指令周期的概念;硬件执行,一般指的是通过硬件模块执行

       如,执行一个乘法操作,cpu会通过流水线的执行路线执行,需要花费几个时钟周期,但是专门的硬件乘法电路模块执行乘法运算的时候,没有时钟周期和流水线的概念,肯定运算速度会快很多

 

现在的ASIC的实现模式是SoC+IP:

        电子业界发现每个模块都做 ASIC 成本太高,而且速度太慢,而且最后电子产品的体积也很难做小,不如把所有的模块都集成到同一块芯片上。这块芯片集成了多个模块,并由一个中央控制单元通过总线控制每个模块的运作,就是 SoC。例如,现在高通公司的 Snapdragon 就是一块典型的 SoC,上面集成了 GPU,视频/音频编解码,相机图像信号处理单元(ISP),GPS 以及有线/无线连接单元等等。

        SoC 上面的每一个模块都可以称为 IP,这些 IP 既可以是自己公司设计的(如 Snapdragon 上面的调制解调器就是高通自己设计的),也可以是购买其他公司的设计并整合到自己的芯片上,例如苹果 A 系列处理器里用的 GPU 就使用了 ImaginaTIon 的 PowerVR IP。SoC+IP 提供了一种灵活而快速的模式,可以想象如果苹果不是购买 IP 而是自己组建团队慢慢做 GPU,其 A 系列处理器芯片上市的时间至少要被延迟一年。

        对于深度学习加速器而言,做成 IP 也是一个加速上市速度的模式。当深度加速器成为 IP 时,它就不再自己做成 ASIC,而是成为 SoC 的一部分,当 SoC 需要做深度学习相关运算时就交给加速器去做。

        做成 IP 对于加速器来说能够更灵活地满足客户的需求。 IP 公司可以根据客户的需求快速微调自己的设计并在一两个月内交付(由于并不需要真正生产芯片,只需要交付设计);但是如果加速器已经做成 ASIC,那要改动设计就必须重新做一块芯片,这个过程牵扯到耗时巨大的物理设计和验证,改动完的芯片上市时间可能是一年之后了。

        在 SoC+IP 的模式下,IP 公司可以专注于加速器的前端设计并且根据客户的需求量体裁衣,大公司则做自己擅长的后端以及芯片/封装级验证,可以说是大公司和小公司都可以扬长避短,各取所需,最终实现快速加速器设计迭代(如半年甚至一个季度一次)并跟上深度学习发展的步伐

 

ASIC(现代SOC级别)和FPGA做AI算法硬件加速运算:(性能,成本)

 


结语:

        FPGA 和 ASIC 在实现深度学习加速器方面各有所长,FPGA 的可配置性更适合企业、军工等应用,而 ASIC 的高性能和低成本则适合消费电子领域(包括移动终端)。为了实现快速迭代,ASIC 可以采用 SoC+IP 的模式,而这种模式也使得没有资源量产芯片的中小公司可以专注于深度学习加速器 IP 的架构和前端设计,并在人工智能市场上占有一席之地。

 

 

 

 

 

 

 

 

 

  • 26
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
FPGA(现场可编程门阵列)和ASIC(专用集成电路)的开发流程有一些差异。下面是它们各自的开发流程: FPGA开发流程: 1. 设计:使用硬件描述语言(如VHDL或Verilog)进行FPGA设计,描述设计的功能和逻辑。 2. 合成:将设计代码转换为逻辑门级别的表示,生成综合网表。 3. 实现:将综合网表映射到FPGA的可编程逻辑资源(如LUT、FF等)上,生成物理约束文件。 4. 布局布线:根据物理约束文件,进行FPGA芯片的布局和布线,确定信号路径和时序约束。 5. 配置:生成FPGA配置文件,将设计加载到FPGA芯片中,使其实现设计功能。 6. 调试和验证:在FPGA上进行设计功能和性能的调试和验证。 ASIC开发流程: 1. 规划:进行全面的设计规划,包括功能需求、性能目标和功耗要求。 2. 设计:使用硬件描述语言进行ASIC设计,描述设计的功能和逻辑。 3. 验证:进行功能仿真和时序验证,确保设计的正确性和可靠性。 4. 合成:将设计代码转换为门级网表表示,生成综合网表。 5. 布局与布线:进行物理布局和布线,将综合网表映射到芯片上,并考虑信号延迟等因素。 6. 验证:进行物理验证,包括功耗分析、时序分析等,确保设计在物理层面满足要求。 7. 掩膜制作:生成用于制造芯片的掩膜数据。 8. 制造:进行芯片的制造和封装。 9. 测试:对制造好的芯片进行测试,包括功能测试、可靠性测试等。 需要注意的是,ASIC开发流程相比FPGA更为复杂和耗时,需要更多的前期规划和验证工作。而FPGA开发流程相对灵活,可以在开发过程中进行快速原型设计和调试。选择使用FPGA还是ASIC,需要根据具体应用需求、设计目标和资源限制进行评估和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值