tag 标签: fpga入门级别的知识

相关博文
  • 热度 16
    2012-5-8 10:14
    4664 次阅读|
    6 个评论
    一、可编程逻辑器件概述      可编程逻辑器件是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。其中,现场可编程逻辑阵列(FPGA)正是在PAL\GAL、CPLD基础上发展起来的新型高性能可编程逻辑器件。 1)PAL(Programmable Array Logic)-----可编程阵列逻辑GAL(Generic Array Logic)---通用可编程阵列逻辑。 两者是可编程逻辑器件的早期发展形式,大都采用E2CMOS工艺,结构较为简单,逻辑单元多为与阵列和或阵列,可编程单元密度较低,适合某些简单数字逻辑电路。 优点:低功耗、低成本、高可靠性、软件可编程等特点引发看数字电路领域的巨大振动。 2)CPLD (Complex  Programmable Logic  Device)----复杂可编程逻辑器件   一般采用E2CMOS工艺,也有少数厂商采用FLASH工艺。 由I/O控制单元、宏单元(基本逻辑单元组成)和互连矩阵(布线池)构成;  宏单元的本质是是由一些与、或阵列加上触发器构成的基本逻辑单元(MC),与或阵列完成组合逻辑功能,触发器用以完成时序逻辑。(MC集合块,不同厂商不同叫法!ALTERA:LAB Xinlinx:FB) 优点:可以实现的逻辑功能比PAL和GAL上大幅度提升,一般可以完成中等复杂、较高速度的逻辑功能(接口转换、总线控制) FPGA(Filed  Programmable  Gate Array )现场可编程逻辑阵列 ,是在CPLD的基础上发展起来的新型高性能可编程逻辑器件。第一片FPGA是由Xilinx公司1984年推出,20多年的发展,FPGA的可用门从当初的1000余个可用门,发展到现在的1000万个以上的可用门。容量提升了1万倍。  一般采用SRAM工艺,也有一些采用FLASH工艺或反熔丝工艺。SRAM工艺:它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。速度快!!!一般用于做CPU与内存之间的高速缓存Cashe。 优点: 集成度相当高,器件密度从数万系统门级到数千万门级系统门不等,可以完成极其复杂的时序和组合逻辑电路功能,适合于高速、高密度的高端数字逻辑电路设计。 二、FPGA与CPLD的比较 Ø 从结构工艺上,F多为LUT加上寄存器结构,SRAM工艺;C多为宏单元乘积项数目(MC中与阵列的输出)E2CMOS工艺; Ø 从规模和资源上,F规模大,逻辑复杂度高,千万门级,触发器数目多 C相对规模小,复杂度不高,资源有限 Ø 从布线资源上,F分布式,管脚延时不可预测,C集总式, 固定,所以对于FPGA而言,时序约束和仿真非常重要。 Ø 从编程与配置上,F可以用并口或者USB口通过FPGA的JTAG接口,通过软件实现对FPGA的在线编程。程序掉电丢失               C通过编程器烧写ROM,或者ISP模式, 程序掉电不丢失 三、FPGA与MCU、ASIC比较        FPGA为可编程器件,可硬件重构,以Verilog或VHDL为编程语言,并行执行,速度快,可用于复杂的逻辑控制以及大量的数据运算和处理的应用。     MCU又称单片机,为8位微控制器,主要以C语言为编程语言,顺序执行,速度慢; MCU是同一时刻只能处理一条指令,可用于一些算法的设计和简单的控制。    ASIC指固定的或定制的逻辑器件(专用集成电路)如MP3专用解码芯片,其优点实通过固化的逻辑功能和大规模的工业化生产,芯片成本大幅度降低,可靠性高; 但设计周期长,投资大,风险高,设计投产后不可更改。      FPGA的诞生解决了ASIC存在的这些不足,满足了快速产品开发的需要。FPGA解决了电子系统小型化、低功耗、高可靠性的问题,开发周期短、投入少,芯片价格不断下降。 四、CPLD与FPGA的内部结构        (1)CPLD即复杂可编程逻辑器件,是早期GAL器件的改进。Altera的MAX7000系列具有典型性,以此为例,进行简介MAX7000系列包含32-256个宏单元,每16个宏单元组成一个逻辑阵列块(LAB)              每个宏单元含有一个可编程的“与”阵列和固定的“或”阵列,以及一个可配置寄存器。每个宏单元共享扩展乘积项和高速并联扩展乘积项,它们可向每个宏单元提供多达32个乘积项,以构成复杂的逻辑函数。      (2)多数FPGA采用基于SRAM的查找表逻辑形成结构,即利用SRAM(静态随机存储器)来构成逻辑函数发生器;而一个N输入查找表(LUT)可以实现N个输入变量的任何逻辑功能;  (Altera的Cyclone系列器件成本低、性价比高,结构和工作原理具有典型性)                  每个LAB有多个LE(Logic Element,逻辑单元)构成,LE是Cyclone FPGA 器件的最基本可编程单元,LE主要由一个4输入的查找表LUT、进位链逻辑和一个可编程的寄存器构成。    五、FPGA 的基本结构 (1)可编程输入/输出单元     他们是芯片与外界电路的接口部分,完成不通电气特性下对输入/输出信号的驱动与匹配需求。目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以 适配不同的电气标准与I/O物理特性;可以调整匹配阻抗特性、下上拉电阻;可以调整输出驱动电流的大小等。 (2)基本可编程逻辑单元  基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Register)组成的。查找表一般完成组合逻辑功能。FPGA一般以来寄存器完成同步时序逻辑设计。 (3)嵌入式块RAM      FPGA内部嵌入可编程RAM模块,大大地拓展了FPGA的应用范围和使用灵活性。FPGA内嵌的块RAM一般可以灵活配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等常用存储结构。FPGA中其实并没有专用的ROM硬件资源,实现ROM的思路是对RAM赋予初值,并保持该初值。FPGA内部实现RAM、ROM、CAM、FIFO等存储结构都可以基于嵌入式块RAM单元,并根据需求自动生成相应的粘合逻辑(Glue Logic)以完成地址和片选等控制逻辑。 (4)丰富的布线资源     布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA内部有着非常丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同被划分为不同的等级,有一些是全局性的专用布线资源,用以完成器件内部的全局时钟和全局复位/置位的布线。      实现过程中,设计者一般不需要直接选择布线资源,而是由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所有的底层单元模块,所以设计者常常忽略布线资源。 (5)底层嵌入功能单元      那些通用程度较高的嵌入式功能模块,比如PLL、DLL、DSP、CPU等。随着FPGA的发展,这些模块被越来越多地嵌入到FPGA的内部,以满足不同场合的需求。目前大多数FPGA厂商都在FPGA内部继承了DLL或者PLL硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、移相等功能。越来越多的高端FPGA产品将包含DSP或CPU等软处理核,从而使FPGA由传统的硬件设计手段逐步过渡为系统级设计平台。      Altera的Stratix、Stratix GX、Stratix II等器件族内部集成了DSP Core,配合通用逻辑资源,还可以实现ARM、MIPS、NIOS等嵌入式处理器系统;这种CPU的DSP比较适合实现FIR滤波器、编码解码、FFT等运算密集型应用。FPGA内部嵌入CPU或DSP等处理器,使FPGA在一定程度上具备了实现软硬件联合系统的能力,FPGA正逐步成为SPOC(System On Programmable Chip)的高效设计平台。Altera的系统级开发工具是SOPC Builder和DSP Builder,通过这些平台用户可以方便地设计标准的DSP处理器(如ARM、NIOS等)、专用硬件结构与软硬件协同处理模块等。 (6)内嵌专用硬核     其实FPGA内部也有两个阵营:一方面是通用性较强,目标市场范围很广,价格适中的FPGA;另一方面是针对性比较强,目标市场明确,价格较高的FPGA。 六、FPGA的开发流程 Ø  代码设计主要是较为直观的原理图输入(PROTEL 原理图文件的设计)和可移植性好的硬件描述语言的输入, 相互结合,相互转化 Ø  综合优化是设计输入翻译成由与、或、非门及RAM和触发器等基本逻辑单元组成的逻辑连接,并根据目标与约束条件,输出EDF和edn等标准格式的网表文件。 Ø  实现是网表文件导入具体器件,进行布局布线   曾经有人说过,严格的FPGA的开发周期上看,代码设计其实只占有了30%,70%时间用来进行不同阶段不同目的的仿真和调试。 Ø  行为仿真(专用的仿真工具),验证电路结构和功能是否设计要求        功能仿真具有了网表文件(具有门延时信息),主要用于检查综合器的综合结果是否与设计是否一致 Ø  时序仿真 将布局布线后的时延信息反标注到设计网表(具有门延时信息和具体的布线延时),主要验证是否存在时序违规。     在线调试(内嵌逻辑分析仪Singal Tap II---片内信号分析)和生成配置文件写入芯片进行测试        FPGA设计的最大特点就是迭代性很强,并不是简单的顺序流程,任何仿真或者验证步骤出了问题,就需要回到前面的步骤重新审查、修改,直到最终的设计符合需求 七、关于VHDL与Verilog硬件描述语言      VHDL(系统级)(VHSIC HDL 甚高速集成电路):比较起源于20世纪八十年代,由美国军方组织开发,1987年成为IEEE标准(87标准版+93修正版),功能强大、通用性强,但难学。        一个可综合的VHDL描述中,实体和结构体是最基本的和不可缺少的两个部分。其它的结构层次可根据需要选用。   设计库-Library       存放已编译的实体、结构体、包集合和配置 包集合-Package          存放共享的数据类型、常数和子程序等 实体-Entity:         描述所设计系统的外部接口信号 结构体-Architecture         描述系统内部的结构与行为 配置-Configuration         从库中选取所需单元组成设计的不同版本      Verilog HDL(门级):从一个普通的民间公司的私有财产转换而来,1995年成为IEEE标准。简单、易学易用,只要有C语言的编程基础,通过二十个学时再加上一段实际操作,可以在二到三个月内掌握。 实际电路的不同级别的抽象  系统级  高级语言  模块的外部性能  算法级  高级语言  设计算法  RTL级  数据    在寄存器之间流动和处理这些数据的模型  门级    逻辑门以及逻辑门之间的连接的模型  开关级  器件中三极管和存储节点  连接模型 八、关于顺序执行与并行执行的区别     硬件描述语言,虽然不同与其他高级语言,有优秀结构性,但是其最大的优势的是支持并行操作。  顺序操作有如“步骤”概念,如果上一个行为没有完成,下一个行为就没有执行的意义。而并行操作最为不同的是,两个行为都是独立执行,互不影响。那么,我们从一个典型的实验“流水灯实验”,在具体上来理解它们的不同之处    1)点亮第一个LED,延迟一段时间。     2)点亮第二个LED,延迟一段时间。     3)点亮第三个LED,延迟一段时间。     4)点亮第四个LED,延迟一段时间。     5)重复第一个步骤。           “顺序操作”的代表往往都有一个“指挥者”或者名为“控制器”东西的存在,执行着“工作的次序(步骤)”。 并行操作       在这一个实验,我们要以上图作为基础,建立一个并行操作的流水灯模块。扫描频配置定为100 Hz,而每一个功能模块在特定的时间内,将输出拉高。    从上图我们可以看到,功能模块1在时间的第一个1/4拉高输出,功能模块2在时间的第二个1/4拉高输出,其余的两个功能模块也是以此类推。所以在一个固定的时间周期内(10ms), 每一个功能模块所占的时间都是2.5ms。 九、FPGA/CPLD厂商FPGA的发展趋势 1、基于FPGA的嵌入式系统(SoPC)技术正在成熟; 2、FPGA芯片向高性能、高密度、低压和低功耗方向发展; 3、基于IP库的设计方法;     FPGA的设计者只需要寻找适合项目需要的IP库资源,然后将这些IP整合起来,完成顶层模块设计。     整个项目的仿真和验证工作主要就是验证IP库的接口逻辑设计正确性。 4、FPGA的动态可重构技术。 指对于特定结构的FPGA芯片,在一定的控制逻辑的驱动下,对芯片的全部或部分逻辑资源实现高速的功能变换,从而实现硬件的时分复用,节省逻辑资源   ALtera:高性能、高集成度、高性价比,开发工具软件丰富,且提供免费使用版本; Xilinx:追求高集成度、高速度、低价格、低功耗设计; Lattice:CPLD的开拓者,首创PLD及ISP技术; Actel:加密性好,产品广泛应用于航空航天、军事领域。