FPGA/CPLD简介
一、可编程逻辑器件主要有两个类型:
(一)、现场可编程门阵列(FPGA)(Field Programmable Gate Array)
(二)、复杂可编程逻辑器件(CPLD)(Complex Programmable Logic Device)
二、FPGA与CPLD的比较
尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:
(一)、CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。
(二)、由于内部布线结构,CPLD的时序延迟是均匀的和可预测的,而FPGA的延迟的不可预测性。(我们在用的时候不用考虑内部结构的布线问题)
(三)、在编程上FPGA比CPLD具有更大的灵活性。
(四)、FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
(五)、CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FAST FLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,就是需要一些配置芯片。
(六)、在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
(七)、CPLD保密性好,FPGA保密性差。
(八)、一般情况下,CPLD的功耗要比FPGA大
三、FPGA的用途
FPGA被应用于范围广泛的应用中,从数据处理和存储,以及到仪器仪表、电信和数字信号处理等。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用FPGA来实现。FPGA/CPLD的应用领域:汽车、军事和航空航天、广播、测量和测试、消费类、有线或无线通信、工业、医疗等等。
四、CPLD/FPGA与MCU的比较
1、MCU(微处理器或单片机)面临的问题
由MCU为主构成的电子应用系统通常出现的问题可以分为两类:1类是技术类问题,如软件设计、接口器件的选择或康干扰措施应用等问题,这类问题通常属于可以解决的问题;另一类则直接与MCU的缺点有关。主要包括一下几个方面:
(1)、低速 由于MCU的工作方式是通过内部的CPU逐条执行软件指令来完成各种运算和逻辑功能的,无论多么高的工作时钟频率和多么好的指令时许方式,在排队式串行指令执行方式(DSP处理器也是这种方式)面前,其工作速度和效率也将大打折扣,因此,MCU在实时仿真,高速工控或高速数据采集等领域便显得力不从心了。
(2)、复位工作方式 MCU的另一个致命的弱点是:任何MCU在工作初始都必须经历一个复位过程,否则进行正常工作。MCU的复位必须满足一点的电平(电压)条件和时间条件。在工作电平有某种干扰性突变的时候,MCU的复位将成为系统不可靠工作的重要因素。而且产生这种复位问题是随机和动态的,一般都无法检测的。这个复位问题是MCU的一个先天不足。
(3)、PC的程序跑飞 在强干扰或某种偶然因素下,任何MCU的PC都极可能越出正常的程序流程而跑飞。无论多么优秀的MCU,无论具有多么良好的抗干扰措施,包括设置任何方式的内、外硬件看门狗,在强干扰条件下,MCU都无法保证其仍能正常工作而不进入不可挽回的“死机”状态。因此,当MCU的复位问题和跑飞问题结合在一起的时候,就会让技术人员很难受,因此他们宁可使用纯模拟或纯数字电路。
(4)、MCU使用误区 MCU逻辑行为上的普适性,常会引导人们进入这样一个误区:MCU是无所不能的,任何一个电子系统设计,MCU都是无可质疑的主角。
2、CPLD/FPGA的主要优点可以归纳如下:
(1)、高速 CPLD/FPGA的时钟延迟可以达到ns级(1ns就是100MHz,同时最高的器件可以支持GHz的速度),结合其并行工作方式,在超高速应用领域和实时监控方面有着非常广阔的前景。
做个比较:工作于12MHz晶振频率的MCS51系列单片机对AD控制的采样速率为20KHz左右,若是用FPGA来实现的话,若FPGA采样的工作频率是100MHz,那么对AD的采样速率可以达到50MHz。
(2)、高可靠性 CPLD/FPGA在大多数应用中,无需考虑复位和初始化,另外“死机”(进入非法状态)情况是可以预测的,这包括非法状态的数量和进入状态的可测性,这些“死机“状态也是可以防止的。CPLD/FPGA的高可靠性还表现在几乎可将整个系统下载于同一个芯片中,从而大大缩小体积,易于屏蔽。
(3)、编程简便 CPLD/FPGA产品中多为系统可编程器件,编程方法极为便捷,只需一个下载线和电脑就可以。
(4)、易学易用 用MCU设计数字系统,对于行家来说是十分简单的事情,然而对于初学者,确实件不易的事。因为他不仅需要熟悉软件,而且还要有丰富的硬件开发经验;不仅要熟悉各种单片机的开发系统的使用方法,还要知道所以单片机的内部结构(单片机的内部有很多的寄存器,要是使用必须先熟悉这些东西是什么怎么用,比较麻烦)。相比之下,CPLD/FPGA应用的学习却无需太多的预备,他就像一张白纸,你无需了解内部结构,只要稍有一点数字电路的知识,就可在短期内掌握基本的设计方法和开发技巧。
(5)、开发周期短 许多供应商都推出了相应的软件,以及一些技术支持。如Altera公司的 Maxplus 和QuartusII,这些软件仿真功能完善,仿真能力强,开发简便,硬件因素设计少,因此可以在短时间内实现复杂系统的设计。
(6)、系统可预测性好 有丰富的软件
(7)、系统易维护、易升级 只需下载线和电脑就可以完成升级。
(8)、多次擦写,可重复利用
(9)、保密性好
(10)、有丰富的端口
五、学习FPGA/CPLD所要掌握的知识
1、硬件知识 FPGA/CPLD就像一张白纸,我们不需要对内部有太深的了解,在编程的时候也不要像MCU那样对内部什么寄存器进行初始化什么的,我们只要写程序就好。而且我们对于他的那么多的管脚,其实一部分是有专门用途的,那么我们可以不用,别的IO口都是可以用的,而且都是一样的,比如EPF10K10TC144-4的可用IO口为102个(一般的单片机只有32个端口,而且这些端口不是都可以用的),都是一样的端口。因此,硬件不需要太多的了解。
2、理论知识 对于数字系统,那么我们就要掌握一些基本的数字知识,可以找点数字电路的书看看,看看最简单的逻辑知识。
3、软件使用 目前最大的生产FPGA/CPLD的厂家是Altera,他提供的软件以及支持是比较丰富的。目前该公司提供的仿真软件主要有QuartusII、Nios II 等等。目前用的比较多的是QuartusII6.0,软件的学习是比较简单的。
4、语言的学习 FPGA/CPLD主要VHDL(Very-High-Speed Integrated Circuit Hardware Description)和Verilog HDL语言两种。VHDL的主要应用领域:
(1) 智能模块(IP)的研发 IP: 用VHDL语言编写,经逻辑优化和功能验证的可生成VLSI中各种功能单元的软件群,例如,无线通信产品、网上设备、中央处理器(通用CPU)、DSP、PCI、USB、嵌入式CPU
(2)单芯片全功能集成系统设计:SoPC系统、嵌入式计算、ASIC验证
(3)功能可重置系统的设计:远程系统升级、可重配置设计
三、学习FPGA/CPLD的方法
要想在FPGA上实现自己想要的东西,首先要明白你要实现的东西的原理,然后根据原理去用VHDL语言来实现。
学习FPGA,首先要学习VHDL语言,那就要掌握VHDL的基本语法,这就要看一些基本的书。掌握了语法后,学习FPGA,就要把软件和硬件结合起来,这样效果比较好,否则就是看书的话效果不明显。
四、往年电子大赛中可以用FPGA做的题目
05年(共7题):正弦信号发生器
简易频谱分析仪
数控恒流源
03年(共7题):简易逻辑分析仪
低频数字式相位测量仪
01年(共7题):数据采集与传输系统
简易数字存储示波器
波形发生器
99年(共6题):数字化语音存储与回放系统
97年(共4题):水温控制系统
简易数字频率计
95年(共4题):实用信号源的设计
简易电阻、电容和电感测试仪
94年(共2题):多路数据采集系统
简易数控直流电源