浅谈可编程逻辑芯片架构
本帖最后由 皋陶 于 2020-10-10 20:27 编辑可编程逻辑器件是一种内部逻辑电路可在出厂后由用户改变的逻辑器件,相比于固定逻辑器件,可编程逻辑器件可以用更低廉价格的工具进行开发,并能够进行仿真,从而大大降低开发设计的成本,具有极高的灵活性,部分可编程逻辑器件甚至还能够做到较高的性能,完成高度复杂的算法。
可编程逻辑器件的出现改变了整个电子信息行业,大大简化了定制性逻辑功能的设计流程,降低了成本和风险,有力的促进了信息技术的发展。
可编程逻辑可以按照擦除次数分为单次可擦出和多次可擦除两种。单次可擦除器件通常使用熔丝烧断等技术,写入后无法更改,通常用于安全性和稳定性要求非常高的领域,如航天和军事,目前常规的可编程器件大多数都是基于FLASH或SRAM的,能够反复擦写,甚至能根据需要实时改变内部逻辑功能。
目前,可编程逻辑器件分为FPGA和CPLD两种主要类型,FPGA是现场可编程门阵列,具有较高的逻辑密度、灵活的功能特性和较高的性能,CPLD是复杂可编程逻辑器件,具有非易失性和较好的可控性,虽然密度和性能不如FPGA,但在低容量低成本应用中仍然有一席之地。
1、CPLD架构简介
CPLD内部由可编程逻辑阵列LAB、可编程IO控制块、可编程内部连线PIA三部分组成,如下图所示(来自Intel):
可编程逻辑阵列内部又分成了多个可编程逻辑宏单元LMC,LMC内部包含了与阵列、或阵列、可编程触发器、多路选择器等结构,如下图所示(来自Intel):
具体的逻辑实现方式是:通过更改与阵列和或阵列的连接方式,并通过可编程内部连线形成乘积项,经过寄存器缓冲后输出。
由于CPLD的信号路径是一致的,因此数据延时是可控的或者说是容易预估的,但CPLD在规模较大后,由于可编程内部连线的复杂性急剧上升,成本大幅提高,因此仅适用于小规模逻辑。
同时我们可以看到,CPLD的阵列连接非常适合内部编程,如熔丝烧断等,后期出现的基于EPROM或EEPROM,以及现在的基于FLASH的CLPD,虽然存储功能的介质不同,但基本逻辑结构相同。
现在也有部分“CPLD”芯片,虽然是非易失的,但其内部逻辑和FPGA相类似,属于内嵌FLASH的FPGA,并不能算作CPLD。
2、FPGA
FPGA是一种基于查找表结构的可编程逻辑器件,通常,内部还会集成可编程存储块、DSP单元和互联布线资源,该类器件相比于CPLD可以很容易做到大规模和高性能,也是最近几年发展最快的可编程器件,涵盖了低中高端产品线,几乎任何数字逻辑和计算功能都可以通过FPGA实现。FPGA的内部结构如下两图所示(来自Intel):
查找表单元LUT通常为四输入(上图)或六输入(下图),有些厂家的FPGA,其查找表单元还可以进行拆分。查找表单元本质是存储单元加多路选择器,将输入数据作为地址,输出对应的数据,不同的是这个存储单元的内容在配置后通常就不能修改了,除非进行重配置(部分型号可以修改),而且这个存储器的位宽一般只有1bit。
通过LUT可以实现几乎任何逻辑和计算功能,多个LUT可以级联实现更加复杂的逻辑功能,更为关键的是,由于LUT的查表工作机制,任何数据处理流程都可以做到常数,而与数据的复杂度无关,同时,大部分FPGA也都可以很容易做到时序的精确控制,因此,在高速数据处理、实时控制等领域具有不可替代的作用。
LUT后通常会利用寄存器进行缓存,由于设计理念不同,FPGA中的寄存器数量远远多于CPLD,且FPGA在进行高性能设计时,可以利用寄存器斩断时序路径,实现更高的主频和性能。
这种架构也使得FPGA的成本随容量的增加而线性增加,而不是CPLD的指数增加,因此可以享受到摩尔定律的红利,近几年FPGA的容量和速度不断提高就是这一原因。
FPGA内部集成的可编程存储块通常可以配置成单口、伪双口或真双口模式,通俗讲就是半双工、全双工和双半双工三种模式,而DSP单元通常也可以配置成9*9或18*18等多种类型和精度的乘法器单元,高级器件甚至还具备浮点乘法功能,可以很好的实现数字信号的处理,在很多领域已经取代了DSP。
个别FPGA内部可能还会有其它的功能单元,所有的功能单元均可通过内部互联布线资源互相连接,形成类似于片上系统的电路。部分高级FPGA中还集成了SOC硬核,如ARM,这使得FPGA具有了更加广泛的应用范围。
CPLD和FPGA占据了几乎全部可编程逻辑器件,其它可编程器件由于很少用到,这里就不做介绍。
就目前发展情况而言,FPGA已经在大多数领域取代了CPLD,特别是内嵌FLASH的FPGA出现后,已经可以实现类似CPLD的瞬时上电和安全性能,CPLD仅被用于低端低成本等少数领域,并很可能在将来被FPGA完全取代。
完
页:
[1]