闲来无事,我也弄个FPGA的教程系列吧,好了,废话不多说,开始第一讲,什么是FPGA?
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 --2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
看了上面的描述,估计很多人就蒙了,没关系,好好读两遍你就慢慢的懂得了,重复是最好的学习方法(个人意见),不懂也没关系,当你慢慢的爱上它的时候,你也就对它深入的了解了,而这一切都尽在后面的教程中了。那么就有很多人问了,怎么和单片机这么像,它有什么独特的优点吗?如果没有,那我们学他干什么?还不如拿出这些时间去把妹拉的是在。。。哈哈,接下来我就和你说说这高大上与单片机的差异和优点。亲们,重点来了,睁大24K的眼睛好好的看看吧
第一点:FPGA是纯硬件,现在我所写的‘程序’也就不能称之为程序,如果非要给它起一个名字,我感觉‘代码’也许是比较恰当的
第二点:单片机和FPGA实现信息处理发出控制信号的方式不同,单片机和嵌入式是通过主函数或者操作系统实现任务调度的途径来响应各种外部条件触发,并通过‘软件’输出相应的状态来实现电子系统的正常工作,然而FPGA是通过纯硬件来实现各种激励的相应的,与单片机实现控制的根本方法不同。
第三点:单片机和嵌入式的软件设计会有盲点,再快的软件相应在现实应用中也会有出现盲点的时候,简单的说就是系统不能及时响应或者漏掉某些激励的现象,然而硬件不会,它以强大的并行方式来响应所有的信号激励,但硬件也不是万能的,FPGA这类的纯硬件最大的克星就是亚稳态以及竞争冒险等等,通俗的讲就是输出及其短暂的不稳定现象,虽然不稳定状态出现的时间及其短,甚至到了皮秒级别(1秒等于10的十二次方皮秒)但也就是这么短暂的不稳定也可能会给设计带来致命的危险。这是有硬件的特性决定的,是在设计中永远无法避免的,对于冒险和亚稳态,我们只能想尽一切办法去解决他们。
以上就是FPGA和单片机的不同点,你看清楚了吗?没有?那就好好的在看一遍。。。哈哈
以为FPGA是纯硬件搭建的架构,所以其语言也就不和单片机的C语言或是其他的语言类似了,有VHDL语言和Verilog语言两种,接下来的教程中会先用VHDL语言来讲解,然后再用Verilog。因为我们老师只讲了VHDL语言。。。后面的还在自学呢。。写程序是要主要注意以下问题
时序
并行
实例化。(不懂没关系,先了解下)
时刻提醒自己,VHDL是在描述硬件!
你写的不是程序,而是在画电路!
由于小弟才疏学浅,有什么错误的地方还请大神们不吝赐教,共同学习,一起探讨,这才是学习的快乐!