1.什么是可编程ASIC器件
ASIC是专用集成电路的英文缩写。可编程ASIC设计,即指用户通过对器件进行编程,使通用的半成品可编程器件成为用户自己的专用集成电路的过程。目前流行的大规模可编程ASIC主要有CPLD(复杂可编程逻辑器件)和FPGA(现场可编程门阵列)。无论CPLD和FPGA的结构有多复杂,其基本原理都与可编程逻辑器件PLD类似。
PLD的基本原理和结构如图1所示。只要对电路上半部分的列线与行线交叉点进行连接,就可以实现任意三输入变量的乘积项(与项);电路的下部分则可以实现任意乘积运算后的和(或项)。而任意的三输入变量的组合逻辑都可以化为积之和的形式,即最小项之和。图1中逻辑[(aANDb)OR(NOTc)}就是通过f1输出实现的。对列线与行线的交叉点进行连接。就是对器件编程,这就是PLD的基本原理。目前,编程的介质有一次性的PROM、电可擦除的EEPROM、FlashROM和SRAM等。
大多数的PLD结构都和上述的类似,如PLA、GAL.等,这种方式只能实现组合逻辑。在图1电路的输出端加上寄存器,并将输出反馈到与阵列中。
就构成了简单的时序可编程逻辑电路的基本结构,如图2所示,这些基本结构称为逻辑宏单元。大量宏单元的互联能实现复杂的逻辑电路。另外,在CPLD和FPGA中还有大量的可编程的连线、开关矩阵,以及可编程的I/0模块单元等。
2.CPLD和FPGA的区别
CPLD和PFGA的宏单元结构基本类似。在CPLD中,宏单元的组合逻辑部分相当庞大,可实现十个以上的输入变量,即通常所说的扇入大;而在FPGA中,宏单元的组合逻辑部分相对较小,有的只有4~9个输入变量,即扇人小。对相同逻辑门数的CPLD和FPGA而言,CPLD所含的宏单元个数必定少于FPGA,而一个宏单元所含的寄存器个数是基本相同的,因此,CPLD中寄存器资源较FPGA贫乏,所以CPLD适合实现组合控制逻辑,而FPGA更适用于时序控制逻辑、数据运算存储等。
CPLD大多采用EEPROM和FlashROM工艺,编程后掉电不挥发,使用简单,但逻辑功能较弱,可以用于简单系统级逻辑;FPGA大多采用RAM工艺,每次上电都要加载数据,一般可使用PC机电缆或专用配置芯片加载数据,其逻辑功能强,可用于实现复杂系统级逻辑,如数字信号处理中的滤波器组、FFT算法、各种接口(USB、PCI等)电路,甚至CPU的功能都可以用FPGA来实现。很多爱好者已成功地在FPGA上编写出自己的CPU,而且越来越多的商业lP(集成内核)、软CPU核都可以软代码形式下载到FPGA中。如Ahera公司就有51单片机及处理器NiosII等软核,可下载到其FPGA中运行。
目前制造CPLD和FPGA的厂家主要有Xilinx、ALTEra和Lattice。CPLD产品有:Xilinx的XC9000系列,Altera的MAX、MAXⅡ系列,Lattice的MACH系列;FPGA产品有:Xilinx的XC4000、5000、Virtex和Spartan系列,Altera的APEX,以及最新的Cyclone系列等。
3.如何使用可编程ASIC设计数字电路
用可编程ASIC设计数字电路使用硬件描述语言HDL。HDL位于用户和EDA工具之间。用户使用HDL描述逻辑,通过EDA工具软件编译、综合,生成网表文件和连线信息下载到器件。
目前流行的HDL,主要是VHDL和VerilogHDL,这些语言都可以用行为描述(告诉计算机电路的功能、行为)来创建电路的模型,类似C、BASIC语言等,大大简化了设计。
VHDL是美国国防部为超高速集成电路计划VHSIC提出的硬件描述语言,最先仅用于系统描述和仿真,以后越来越多的EDA工具支持部分VHDL语言的综合。VHDL语言的基本结构和语法规范很多,有兴趣的读者可查阅相关书籍。