FPGA 和 ASIC 开发的区别
来源:互联网 发布:软件疲劳强度测试 编辑:程序博客网 时间:2024/04/23 19:03
FPGA的本质就是个ASIC,主要由一些最简单的逻辑电路单元和连线资源构成,通过更改连线方式便可实现不同的逻辑功能,但是资源是有限的,所以针对不同规模的电路需要选择不同的器件。
数字集成电路设计一般也是针对通用的库来实现,库一般由代工厂提供,其本质也就是基本的逻辑电路单元。至于ASIC中的连线资源,就比FPGA要灵活多了, 一般根据你想做几层金属,就可以走几层的线,这和PCB板布线类似。其资源相对就是无限的,或者说你电路规模多大,你就可以把芯片做多大。
针对以上两点,FPGA设计和ASIC设计有着很大的相似之处,至少在数字电路这一块基本是相同的,当然ASIC要考虑的东西比FPGA就要多得多了。
以设计一数字电路的IP核举例吧
第一步,首先是要实现功能,方式一般采用HDL描述,如verilog,VHDL。当然对于小规模电路也可以采用电路图输入的方式。
第二步,得保证电路功能的正确性,也叫验证,可以通过软件仿真,硬件仿真等方式实现。软件仿真一般比较直观,方便调试,因为每一时刻的状态都可以看到,这好比调试软件程序。硬件仿真一般就是指FPGA验证,就是把电路用FPGA实现,然后去跑,这个的好处就是速度很快,譬如一个视频解码核,解一帧图像出来,软件仿真就算用最好的服务器,也得跑上多少秒,但是在FPGA中实现的话,基本就是多少毫秒了。这对于一个需要大规模验证的电路来说,是必不可少的。
前面两步对于数字IP来说,ASIC和FPGA基本一致,除非一些实现技巧的差别。
第三步,在你描述的电路正确性得到确保之后,你就要实现它,就是要把你写的那些代码变成实实在在的电路,如寄存器还是与非门,这个过程就叫综合。由于电路规模日益复杂,一般最基本的电路就被做成了cell,如寄存器,与非门,就不会再细化到用三极管怎么去搭的问题了。这一步对于FPGA和ASIC来说就是最小的那个单元不一样。FPGA是做好的电路,一般顾及通用性和效能,基本电路单元就做得比较大,如LUT,就是由寄存器和与非门构成,你可能只用了其中一个与门,但是还会占用这么一个单元。对于ASIC来说,两输入的与非门,就是一个简单的门电路,甚至为了区分驱动能力和时序特性差异,还分了好几个等级,有的面积小,有的驱动能力强。总的来说这一步就是工具把你的描述变成基于库的电路描述。
第四步,你得到基于库的电路描述之后,就要考虑这些单元怎么摆放的问题,这叫布局布线。FPGA的话连线资源有限,所以需要不断地调整,在保证时序要求的情况下,把你的电路映射到其固定的资源分布图中间。ASIC的话一般是根据周边电路需求,时序要求,把你的电路放到芯片的某个位置。在摆好之后还得考虑连线是否能通,各级延时是否能满足电路的建立和保持时间要求等等。
第五步,输出。FPGA就是输出一个配置文件,告诉FPGA芯片该怎么样去配置其电路,使其实现预期功能。该文件可以在FPGA上电之后再由PC下载进去,也可以保存在Flash里,电路上电之后自动配置。ASIC就是输出一个版图文件,告诉代工厂该怎么去腐蚀硅片,该怎么连金属等等。
当然在这过程中间会有各种各样的辅助步骤。总的来说都是为了确保你设计的电路正确及正确实现你的电路。
数字集成电路设计一般也是针对通用的库来实现,库一般由代工厂提供,其本质也就是基本的逻辑电路单元。至于ASIC中的连线资源,就比FPGA要灵活多了, 一般根据你想做几层金属,就可以走几层的线,这和PCB板布线类似。其资源相对就是无限的,或者说你电路规模多大,你就可以把芯片做多大。
针对以上两点,FPGA设计和ASIC设计有着很大的相似之处,至少在数字电路这一块基本是相同的,当然ASIC要考虑的东西比FPGA就要多得多了。
以设计一数字电路的IP核举例吧
第一步,首先是要实现功能,方式一般采用HDL描述,如verilog,VHDL。当然对于小规模电路也可以采用电路图输入的方式。
第二步,得保证电路功能的正确性,也叫验证,可以通过软件仿真,硬件仿真等方式实现。软件仿真一般比较直观,方便调试,因为每一时刻的状态都可以看到,这好比调试软件程序。硬件仿真一般就是指FPGA验证,就是把电路用FPGA实现,然后去跑,这个的好处就是速度很快,譬如一个视频解码核,解一帧图像出来,软件仿真就算用最好的服务器,也得跑上多少秒,但是在FPGA中实现的话,基本就是多少毫秒了。这对于一个需要大规模验证的电路来说,是必不可少的。
前面两步对于数字IP来说,ASIC和FPGA基本一致,除非一些实现技巧的差别。
第三步,在你描述的电路正确性得到确保之后,你就要实现它,就是要把你写的那些代码变成实实在在的电路,如寄存器还是与非门,这个过程就叫综合。由于电路规模日益复杂,一般最基本的电路就被做成了cell,如寄存器,与非门,就不会再细化到用三极管怎么去搭的问题了。这一步对于FPGA和ASIC来说就是最小的那个单元不一样。FPGA是做好的电路,一般顾及通用性和效能,基本电路单元就做得比较大,如LUT,就是由寄存器和与非门构成,你可能只用了其中一个与门,但是还会占用这么一个单元。对于ASIC来说,两输入的与非门,就是一个简单的门电路,甚至为了区分驱动能力和时序特性差异,还分了好几个等级,有的面积小,有的驱动能力强。总的来说这一步就是工具把你的描述变成基于库的电路描述。
第四步,你得到基于库的电路描述之后,就要考虑这些单元怎么摆放的问题,这叫布局布线。FPGA的话连线资源有限,所以需要不断地调整,在保证时序要求的情况下,把你的电路映射到其固定的资源分布图中间。ASIC的话一般是根据周边电路需求,时序要求,把你的电路放到芯片的某个位置。在摆好之后还得考虑连线是否能通,各级延时是否能满足电路的建立和保持时间要求等等。
第五步,输出。FPGA就是输出一个配置文件,告诉FPGA芯片该怎么样去配置其电路,使其实现预期功能。该文件可以在FPGA上电之后再由PC下载进去,也可以保存在Flash里,电路上电之后自动配置。ASIC就是输出一个版图文件,告诉代工厂该怎么去腐蚀硅片,该怎么连金属等等。
当然在这过程中间会有各种各样的辅助步骤。总的来说都是为了确保你设计的电路正确及正确实现你的电路。
http://www.zhihu.com/question/19863045
0 0
- FPGA 和 ASIC 开发的区别
- FPGA和ASIC的概念,他们的区别。(未知)
- ASIC, FPGA, DSP, CPU的区别
- ASIC和FPGA是什么?
- ASIC和FPGA对比
- SoC, PLD, FPGA, ASIC, CPLD, SPLD 的区别
- 关于ASIC、CPLD和FPGA介绍
- 软件无线电设计中ASIC、FPGA和DSP的选择策略
- 剖析GPU、FPGA、ASIC和DSP,如何选择高效的深度学习硬件?
- ASIC是什么?FPGA是什么?
- FPGA、ASIC、DSP
- FPGA 与 ASIC
- FPGA前端设计和ASIC前端设计是不是完全一样
- FPGA是ASIC设计者的一道普通难题
- 基于xilinx FPGA验证ASIC可能遇到的timing问题
- CPLD和FPGA的区别
- FPGA和CPLD的区别
- 单片机和FPGA的区别
- 【android,12】12.handler 与message机制更改界面信息
- winform 只能输入数字(小数)
- 新手入门--输入格式四
- 【android,13】13.避免anr(application no response)的操作
- jquery遍历json数组方法
- FPGA 和 ASIC 开发的区别
- acm-1-n之间能够被m整除的数的和
- SQL EXISTS学习笔记
- 5、app启动流程、AppDelegate.m分析、xib介绍-OC+UI
- linux kernel panic 调用过程
- 给HTML初学者的三十条最佳实践
- 吃饭。睡觉。打豆豆。
- linux下挂载
- 《驯服烂代码》一书章节规划