热度 14
2014-2-23 20:38
1065 次阅读|
5 个评论
刚开始接触FPGA是13年11月份,那时候买了块Altera的板子(后来发现是进阶板)和特权同学的书,学了一周因为各种事停了一段时间,寒假继续学习。 FPGA是逻辑器件,所以数电是基础,数电没点底子的话很多东西都看不懂。所以寒假大概花了一周左右在家啃数电,然后再重新开始学Verilog。 说到FPGA,不过就是一块可编程器件。它与ASIC的区别就在于ASIC是定制IC(当然现在市场上也有半定制版的IC),内部功能已经完全固化了,而FPGA是可以根据用户的需求进行开发和设计的。一般的芯片都可擦除几千次。不过有一个特例,就是Actel公司出的反熔丝结构的FPGA,这种结构的芯片只能编程一次,之后就成为了与ASIC一样的固定逻辑器件。优点是很大程度的提高了系统的稳定性并且也提高了保密性,这个用在航天领域比较多。其他领域一般采用的是Xilinx和Altera公司生产的低高端芯片。高校一般用的是Altera的,企业一般用赛灵思的。 FPGA和CPLD的区别是大部分相关书籍一开篇就要介绍的,主要是怕读者弄混淆。CPLD和FPGA都是PAL和GAL的延伸,但两者还是有点区别。CPLD是基于ROM结构的,下电后代码不丢失,硬件设计简单,逻辑资源不大,应用简单。而FPGA是基于RAM结构的,下电后代码丢失,硬件设计复杂,内部有数万甚至数百万的逻辑门,应用复杂。不过两者的开发流程都差不多。 FPGA主要由五个部分组成:可编程输入/输出模块,基本可编程逻辑单元(查找表+寄存器),嵌入式块RAM,布线资源和底层嵌入单元。其中布线资源是架通FPGA个单元的桥梁,就像马路一样。它又分全局性专用布线资源、长线资源、短线资源和其他。而底层嵌入式单元主要是指嵌入式的软核和硬核。 再谈谈应用领域,目前主要涉及无线通信、消费电子和逻辑接口。无线通信领域主要用在协议实现上,因为FPGA有丰富的电平接口,对于一些标准协议的非标准应用还是十分合适。消费电子领域的话个人觉得用的最多的还是实时控制(好吧,承认这点有点受特权同学的影响了。。),逻辑接口主要采用FPGA来简化外围设计(这块不太了解,主要是数据传送方面的。。) 基本开发流程包括:设计输入、设计仿真、设计综合、布局布线和配置。 以上是每本入门书都会涉及的东西,下面来讲讲FPGA到底是个什么样的东西? 大家高中的时候就学过电路,老师也应该讲过与门或门非门之类的门电路吧,其实这就是逻辑电路。一个现代的电子系统如果还是像以前一样画电路图的话现在的软件原理图界面肯定不够用,然而电路是有电路结构的,不同的结构用不同的逻辑符号表示(比如说与门,结构就是要两个开关同时关闭电路才能通),所以这时候系统图就可以简化了,这也就是刚学电子的人为什么有时候去百度上搜一张电路图发现常用的元器件什么的都没有了,因为电路图的部分全用逻辑器件替代了。再往上走一个层次,有些逻辑门组合在一起用的特别多,这时候就会出现定制版的IC芯片(比如,NE555,CD4069等),用的时候只需要接好对应的管脚就好了(这也就是为什么用芯片要看芯片资料的原因了),再往上走,集成度再高一点就是单片机了,资源再丰富一点,集成度再高一点,那就是现在的三大高科技方向——ARM,DSP和FPGA了。 那FPGA到底是什么呢?想像一下,你面前有各种各样的逻辑门,资源十分丰富,在搭系统的时候你可能这会用这部分,换个系统又用到了其他的一部分,或者在一定的需求下要求你要从这部分电路跳到另一部分电路去。其实,FPGA就像是一个放满了各种各样逻辑门电路的盘子,它把数百万的逻辑门都集中在一块芯片里面。你在Quartus(开发工具)里面用Verilog(硬件描述语言)去编程,将不同的逻辑门组合在一起就成了一个系统。仿真之后那块FPGA芯片就成了你自己开发有特定功能的芯片了(它是块什么样的芯片完全取决于你)。 附注:个人认识,如果哪里理解有错,还请大神们指出!