新手入门都会很多困惑,其中一个就是IC设计和FPGA设计究竟有什么不一样。概念上来讲,就是FPGA(Field-Programmable Gate Aray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,及解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。而集成电路(ASIC)专用集成电路是为特定用户或特定电子系统制作的集成电路。
更通俗一点来说,IC芯片设计,前期实现功能然后仿真,可以用verilog编写,跑出来的版本需要先用FPGA来验证功能,当功能验证结束后需要把代码移植到ASIC上,作成网表,然后流片,这样新的芯片也就设计出来了。所以芯片设计前期和FPGA工作是类似的。FPGA设计就只关注功能仿真,和在FPGA实现,不需要做成ASIC。而芯片设计和FPGA设计人员都可以归类到逻辑设计这块。
电子发烧友归纳了以下八个方面来区别FPGA和IC设计。
1、门控时钟的应用,在fpga中使用门控时钟是非常不推荐的一件事情。asic中虽然也不赞成使用,但是也没什么大关系;
2、大输出的buffer和门,fpga中恐怕没有这些器件,对延时的估计和门的应用就要重新考虑了;
3、memory,fpga和asic中的memory的应用有着很大的不同,fpga中用的是内置的或者是用lut拼起来的。asic用的主要是厂商定义的5261,大小更随意一些(和有些fpga相比);
4、1024latch的使用,fpga中基本不要用latch,asic中就看需要和设计的能力了;
5、dsp或者其他计算模块的调用。很多fpga中提供了dsp,乘法器等等,当然有空间的话也可以自己写1653。asic中基本都要自己设计的。不知道有没有厂商提供这些。;
6、基于soc的设计,对于模拟部分的应用,fpga上做数模混合设计只有有限的功能。asic上就不说了
7、pll等的时钟处理,fpga上也提供时钟处理的dcm,dll,pll等,但是远没有asic的强大,所以在写code的时候对时钟就要想好他们的多少;
8、速度的差别,一般来说同样代码在两个地方实现的速度是不同的。
Fpga设计是以产品为主,主要是一个产品上有fpga器件,去实现逻辑控制,算法或者协议ip集成等功能。ic设计虽然也是用HDL,也要各种集成ip。但是主体是芯片本身,需要涉及到的东西更细,更底层。fpga设计又常常用来做ic设计的前期验证平台。fpga设计工作很多时候只要功能出来就行,不太会多时序,功耗等有苛刻的优化要求,但是芯片设计就需要各种优化,对硬件语言到实体电路的转化需要了解的更加深入。
随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域,并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA,FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。
而关于FPGA的培训机构也如雨后春笋般涌现,明德扬深耕FPGA十余年,有自成一套的书籍讲义和至简设计的法则,百万学员受益,深受行业的赞许,如有兴趣入门FPGA行业,可加老师领取免费的入门学习资料以及加入FPGA学习群。