PIC-CPLD原理和系统设计
第一篇 基础篇 PIC与CPLD概述 新系列单片机PIC16F8XX PIC单片机指令系统 PIC软件开发设计基础 CPLD基础 VHDL程序设计
第1章 PIC与CPLD概述 1.1 单片计算机应用系统 1.2 PIC单片机种类及性能 1.3 大规模可编程逻辑器件FPGA与CPLD
一个比较完整的单片机控制系统,一般包括控制核心部分和外围电路部分,目前控制部分广泛采用PIC单片机进行设计,外围电路采用大规模可编程器件技术进行设计,因此PIC与可编程器件技术是设计一个实用系统的必须掌握的基础知识。 本章将简要介绍PIC及可编程技术的基础,从单片机计算机系统的发展及优势、PIC单片机的种类及特点、可编程器件(包括CPLD与FPGA)技术基础等方面进行阐述。
1.1 单片计算机应用系统 1.1.1 PIC单片机发展历史 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 SCM(Single Chip Microcomputer)即单片微型计算机阶段,主要寻求最佳的单片形态并构建嵌入式系统的最佳体系结构。 2.MCU阶段 MCU(Micro Controller Unit)即微控制器阶段,主要的技术发展方向是:在满足嵌入式应用和扩展需求时,对象系统要求的各种外围电路与接口电路突显其对象的智能化控制能力。 3.SoC阶段 SoC(System On a Chip)即单片电子系统,单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决。因此,专用单片机的发展自然形成了SoC化趋势。
如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段: 1)第一阶段(1976-1978),单片机的探索阶段。以Intel公司的MCS-48为代表。 2)第二阶段(1978-1982),单片机的完善阶段。Intel公司在MCS–48 基础上推出了完善的、典型的单片机系列MCS-51。 3)第三阶段(1982-1990),8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS-96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入芯片之中,体现了单片机的微控制器特征。 4)第四阶段(1990-),微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。PIC系列单片机应运而生,众多厂商参与了开发研究。
当今单片机总体可以分为集中指令集(CISC)结构和精简指令集(RISC)结构。 采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。 CISC结构的单片机有Intel8051系列、Motorola的M68HC系列、Atmel的AT89系列、台湾华邦的W78系列、荷兰Pilips的PCF80C51系列等;RISC结构的单片机有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星的KS57C系列4位单片机、台湾义隆的EM-78系列等。一般而言,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应则采用CISC单片机。
PIC系列的微控制器在市场上极具强劲的竞争力,在全球,PIC微控制器在从办公自动化设备、消费电子产品、电讯通信、智能仪器仪表到汽车电子、金融电子、工业控制等不同领域都有着广泛应用。PIC系列微控制器在世界微控制器市场份额排名中逐年提前,以至成为一种新的8位微控制器的世界标准和最有影响力的主流嵌入式控制器。
1.1.2 PIC单片机优势 PIC单片机其相对于其他类型的单片机具有如下7大特点: PIC最大的特点是系列产品型号众多,涵盖各种层次的开发需要。用户可根据自身系统设计要求选用PIC系列产品。PIC产品从设计伊始就一直遵循从实际出发的原则,不搞单纯的功能堆积,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。 精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构(数据总线和指令总线分离的哈佛总线结构),使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,与传统CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。 产品上市零等待。采用PIC的低价OTP(一次性编程)型芯片,单片机在其应用程序开发完成后产品就能上市。 PIC具备良好的开发环境。OTP单片机开发系统的实时性是一个重要的指标,普通51单片机的开发系统一般采用高档型号仿真低档型号,实时性不尽理想。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。
其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。 彻底的保密性。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。 自带看门狗定时器,可以用来提高程序运行的可靠性。
1.2 PIC单片机种类及性能 PIC (Peripheral Interface Controller) 被称为集演算处理电路、存储器电路和输入输出接口电路于一体的LSI 微处理器,实物如图1.1所示。在国内也经常称之为微单片机。无论何种称谓,它是一种象人大脑一般、具有存储功能、运算功能及集输入输出于一体的微控制(Micro Controller)集成芯片。其内部结构如图1.2所示。 图1.1 PIC单片机实物图 图1.2 PIC单片机内部结构
1.2.1 PIC单片机特点 PIC系列8位CMOS单片机具有实用、低价、易学、省电、高速和体积小等特点,特别是其独特的RISC(精简指令集)及独立分开的数据总线和指令总线的哈佛总线结构,使其指令具有单字长的特性,且允许其指令码的位数可多于8位的数据位数。这和传统的采用CISC(集中指令集)与冯.诺伊曼结构的8位单片机相比,可达到2:1的代码压缩和4:1的速度提高。 PIC系列单片机的另一特点是不搞单纯的功能堆积,而是靠发展多个系列产品型号来满足不同层次用户之需要。PIC系列单片机可分为基本级、中级和高级三个系列产品。用户可以根据需要选择不同档次和不同功能的芯片,通常无需外扩程序存储器,数据存储器和A/D转换器等外部芯片,真正体现了单片机的“单片”特性,以避免用户投资的浪费。 PIC系列单片机还具有非常优秀的微处理特性,如各种复位方式,多种中断功能,低功耗睡眠功能,掉电复位锁定等。在PIC单片机的内部还集成有上电复位电路(POR),看门狗(WDT)电路,I/O口弱上拉等,可以大大减少外围器件,节省电路空间和使用成本。
与TTLZ80芯片很不相同, 低功耗。完全可用电池长时间供电,使用目标比较明确,体积小。 除此之外,PIC单片机还具有如下特点: 与TTLZ80芯片很不相同, 低功耗。完全可用电池长时间供电,使用目标比较明确,体积小。 存储器、输入输出电路都集成在一个IC芯片上,使用便利。如PIC16F84,存储器使用EEPROM, 这便于用户能即时写入和消去应用程序。 程式软件开发工具用可以免费获取。ROM写入器电路设计简单,一般用户都能自己制作。 程式命令较少(35条左右指令),容易记意。编程容易简单,便于用户迅速掌握。
1.2.2 PIC单片机种类及性能比较 PIC单片机产品种类很多,其封装格式如图1.3所示。美国Microchip公司是PIC的技术革新者,能够提供完整的PIC系列芯片,图1.4所示是其系列产品的功能定位分布图。PIC单片机按按命令字节长度来区分可分为三大类,即12位,14位,16位系列。其中每种系列又根据它的内部功能,使用技术的不同又分为很多不同种类,如根据存储器可分为 ROM、EPROM、EEPROM、FLASHROM等四种类型。 图1.3 PIC单片机系列及外形封装 图1.4 PIC单片机分类与性能比较
既然PIC有这么多分类,又有这么多不同型号,选择什么样的PIC就是用户开发工作开始阶段最重要的任务。选择的标准主要是开发程序的大小,所要求输入输出的引脚数,模拟信号输入输出有无,以及串行输入输出有无等指标,根据这些指标要求,综合考虑选择何种PIC。表1.1和表1.2示出了常用的PIC的性能 . 表1.1 PIC 及 功能表
表1.2 常用的PIC及其性能 型 号 C M T P A S 封 价(日元) PIC16C54 12 0.5/E 8x1 18 600 PIC16C54JW 2k PIC16C55 20 28 PIC16C56 1/E 500 PIC16C56JW 1/U 2.5k PIC16C57 2/E PIC16C57JW 2/U PIC16C64A 14 16+8 1 33 40 800 PIC16C64AJW PIC16C71 4ch 13 1k PIC16C711JW
(E=EPROM EE=EEPROM U=UVPROM) C 命令Bit数 M 存储器种类 T 定时计数器种类 P PWN (Pulse Width Modulation,脉宽调制器) A A╱D模数转换 S SI 串行接口 P 输入输出口pin(引脚)数
1.3 大规模可编程逻辑器件FPGA与CPLD 1.3.1 可编程逻辑芯片发展历史 20世纪末,电子设计技术获得了飞速的发展。在其影响下,现代电子产品及系统几乎渗透到社会的各个领域,产品及系统的性能进一步提高,产品更新换代的节奏也愈来愈快。系统设计分为模拟系统设计和数字系统设计,主要是数字系统设计,数字集成电路的应用最为广泛,集成电路的更新换代也极为迅速。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSI,几万门以上)以及许多具有特定功能的专用集成电路(ASIC)。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更倾向于自己设计专用集成电路芯片,并且要求ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且设计完成后要求立即投入实际应用,基于这些需求出现了一种现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件PLD(Programmable Logic Device),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上,又发展了一种通用阵列逻辑GAL (Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM工艺,实现了电可按擦除、电可改写,其输出结构是可编程的逻辑宏单元(OLMC),因而它的设计具有很强的灵活性. 在数字电路领域,存在三种基本的器件类型:存储器、微处理器和逻辑器件(俗称三积木)。存储器用来存储随机信息,如数据表或数据库的内容。微处理器执行软件指令来完成范围广泛的任务,如运行字文处理程序或视频游戏。逻辑器件提供特定的功能,包括器件与器件间的接口、数据通信、信号处理、数据显示、定时和控制操作、以及系统运行所需要的所有其他功能。
1.3.2 固定逻辑与可编程逻辑 逻辑器件可分为两大类:固定逻辑器件和可编程逻辑器件。一如其名,固定逻辑器件中的电路是永久性的,它们完成一种或一组功能,一旦制造完成,就无法改变。另一方面,可编程逻辑器件PLD能够为客户提供范围广泛的多种逻辑容量、特性、速度和电压参数的标准成品部件,而且此类器件可在任何时间改变,从而完成许多种不同的功能。 对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进行测试。原型中使用的PLD器件与正式生产最终设备(如网络路由器、DSL调制解调器、DVD播放器、或汽车导航系统)时所使用的PLD完全相同。这样就减少了流片(NRE)成本,最终的设计也比采用定制固定逻辑器件时完成得更快。 采用PLD的另一个突出优点是在设计阶段客户可根据需要修改电路,直到对设计工作感到满意为止。这是因为PLD基于可重写的存储器技术,要改变设计,只需要简单地对器件进行重新编程。一旦设计完成,客户可立即投入生产,只需要利用最终软件设计文件简单地编程所需要数量的PLD就可以了。
1.3.3 CPLD与FPGA FPGA(现场可编程门阵列)与 CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL,GAL等相比较,FPGA/CPLD的规模比较大,可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件。这种芯片受到电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占有了较大的PLD市场。通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。Altera和Xilinx公司共同决定了PLD技术的发展方向。当然在这领域其他公司的芯片在某些特定功能上具有优势,如:Lattice公司的ISP技术,其他如Vantis,Actel,Quicklogic,Lucent等公司的芯片。
FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点: 随着VlSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管, FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。 FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,FPGA/CPLD的资金投入小,节省了许多潜在的花费。 用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGA/PLD 试制样片,能以最快的速度占领市场。FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGA/CPLD的优势。电路设计人员使用FPGA/CPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识,FPGA/CPLD软件易学易用,可以使设计人员更集中精力进行电路设计,快速将产品推向市场。
尽管FPGA和CPLD都是可编程ASIC器件,有着以上的共同特点,但由于CPLD和FPGA结构上的差异,也存在着明显的区别: CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。 CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。 在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。 FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。不过CPLD比FPGA使用起来更方便。CPLD的编程采用EEPROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。 CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。 CPLD保密性好,FPGA保密性差。 一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
1.3.4 CPLD性能及系列产品简述 CPLD即复杂可编程逻辑器件。早期CPLD是从GAL的结构发展而来,但针对GAL的缺点进行了改进,如XilinX的XC9500系列器件、Lattice的ispLSI1032器件、Altera的MAX7000S系列器件等。 随着复杂可编程逻辑器件密度的提高,数字器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市场。许多设计人员已经感受到CPLD容易使用、时序可预测和速度高等优点,然而,在过去由于受到CPLD密度的限制,他们只好转向FPGA和ASIC。 。CPLD结构在一个逻辑路径上采用1至16个乘积项,因而大型复杂设计的运行速度可以预测。因此,设计的运行可以预测,也很可靠,而且修改设计也很容易。CPLD在本质上很灵活、时序简单、路由性能极好,用户可以改变他们的设计同时保持引脚输出不变。与FPGA相比,CPLD的I/O更多,尺寸更小。如今,通信系统使用很多标准,必须根据客户的需要配置设备以支持不同的标准。CPLD可让设备做出相应的调整以支持多种协议,并随著标准和协议的演变而改变功能。这为系统设计人员带来很大的方便,因为在标准尚未完全成熟之前他们就可以着手进行硬件设计,然后再修改代码以满足最终标准的要求。CPLD的速度和延迟特性比纯软件方案更好,其成本低于ASIC,更灵活,产品也可以更快入市。
CPLD可编程方案的优点如下: 逻辑和存储器资源丰富 带冗余路由资源的灵活时序模型 改变引脚输出很灵活 可以装在系统上后重新编程 I/O数目多 具有可保证性能的集成存储器控制逻辑 提供单片CPLD和可编程物理方案
和其它器件比较,其性能如下: CPLD设计建模成本低,可在设计过程的任一阶段添加设计或改变引脚输出,可以很快上市。CPLD是属于粗粒结构的可编程逻辑器件。 CPLD具有丰富的逻辑资源,即逻辑门与寄存器的比例高和高度灵活的路由资源。 CPLD以群阵列(array of clusters)的形式排列,由水平和垂直路由通道连接起来。这些路由通道把信号送到器件的引脚上或者传进来,并且把CPLD内部的逻辑群连接起来。 CPLD的另一个好处是其软件编译快,因为其易于路由的结构使得设计任务更加容易执行。 CPLD有多种密度和封装类型,包括单芯片自引导方案。自引导方案在单个封装内集成了FLASH存储器和CPLD,无须外部引导单元,从而可降低设计复杂性并节省板空间 . CPLD和固定逻辑器件相比有自己的优点。固定逻辑设计更适合大批量应用,因为它们可更为经济地大批量生产。对有些需要极高性能的应用,固定逻辑也可能是最佳的选择。然而,可编程逻辑器件提供了一些优于固定逻辑器件的重要优点,包括:CPLD在设计过程中为客户提供了更大的灵活性,. CPLD不需要客户支付高昂的NRE成本和购买昂贵的掩膜组,CPLD供应商在设计其可编程器件时已经支付了这些成本,并且可通过PLD产品线延续多年的生命期来分摊这些成本。
CPLD允许客户在需要时仅订购所需要的数量,从而使客户可控制库存。采用固定逻辑器件的客户经常会面临需要废弃的过量库存,而当对其产品的需求高涨时,他们又可能为器件供货不足所苦,并且不得不面对生产延迟的现实。 CPLD甚至在设备付运到客户那儿以后还可以重新编程。事实上,由于有了可编程逻辑器件,一些设备制造商现在正在尝试为已经安装在现场的产品增加新功能或者进行升级。要实现这一点,只需要通过因特网将新的编程文件上载到PLD就可以在系统中创建出新的硬件逻辑。
XILINX的CPLD系列: 当今,世界上很多大公司都能提供可编程器件,如XILINX,ALTERA和LATTICE都能提供成系列的CPLD 产品。如何获得PLD开发软件软件呢?许多PLD公司都提供免费试用版或演示版(当然商业版大都是收费的),例如:可以免费从www.altera.com 上下载Altera公司的 Maxplus2 (Baseline版或E+MAX版),或向其代理商索取这套软件。想更多的了解这套软件的使用,请点击此处。Xilinx 公司也提供免费软件:WebPack,这套可以从xilinx网站下载。Lattice,Actel等公司也都有类似的免费软件提供。以上免费软件都需要在网上注册申请License文件,如果对License的安装还有不清楚,可仔细阅读相关网页上的说明,也可以下载这篇文档:EDA软件的license管理与安装。通常这些免费软件已经能够满足一般设计的需要,当然,要想软件功能更强大一些,只能购买商业版软件。 关于Xilinx公司,目前Xilinx采用先进的0.13um 低K铜金属工艺生产可编程逻辑器件,这也是业界最好的工艺之一。本书后续章节将介绍该公司的XC9500系列CPLD器件。XC9500系列也有很多种类,如XC9536-PC44, XC9572-PC44, XC9572-PC84和XC95108-PC84等。其外封装式样如图1.5所示。其XC9500系列性能特征及价格如表1.3所示。
表1.4 XC9500系列 图1.5 CPLD可编程器件