"); //-->
根据数字电路设计的基本方法知,任何一个电路的输出方程和激励方程都可以用“与或”表达式(积之和表达式)来描述。因此,所有的PLD都可以看成是由与门阵列和或门阵列组成的矩阵式结构,在PLD器件中有一定规模的与阵列和或阵列,与阵列用于产生有关“与”项(也即是乘积项),或阵列把上述“与”项的计算结果进行“或”运算,原理图如下:
输入信号——>输入电路——>与门阵列——>或门阵列——>输出电路——>输出信号
上面的输入电路起着输入信号电平适配作用,它可以生成互补的输入信号,供后续阵列使用。输出电路既有缓冲作用,也可以提供不同的输出结构,如三态输出或寄存器输出等,以便根据需要选择输出方式。
PLD器件的分类有很多种,根据可编程逻辑器件的物理结构和编程方式,可将PLD划分为简单可编程逻辑器件(SPLD),复杂可编程逻辑器件和现场可编程门阵列。其中,SPLD又包括可编程阵列逻辑(PAL:Programmable Array Logic)、可编程式逻辑阵列(PLA:Programmable Logic Array)和通用阵列逻辑(GAL: Generic Array Logic)。三者之间的区别在于,PAL的与门阵列可编程,或门阵列不可编程式;PLA的与门阵列和或门阵列都可编制程;GAL的与门阵列可编制程,或门阵列不可编程,但其输出电路较前两者具有更灵活的组积结构。GAL的输出单元称为输出逻辑宏单元,且有可编程性。
当前主流的CPLD都采用基于EEPROM和基于Flash ROM的乘积项结构,主流的FPGA采用的是基于SRAM的查找表(LUT: Look-Up Table)结构和基于Anti-fuse(反熔丝)的多路开关单元结构。
Xilinx公司的FPGA基本结构是CLB(Configuration Logic Block),各CLB之间通过开关阵列进行互联。
CLB是基于查找表(LUT)结构的。所谓查找表,顾名思义就是根据逻辑输入的功能从一个存在的列表中找到相应的逻辑输出。LUT的本质就是RAM存储器,基中存储着LUT所能完成的所有逻辑功能的输出结果的真值表,将用户编程式输入作为地址选择信号,通过多路选择器选择相应的逻辑输出。
目前FPGA多使用四输入的LUT,所以每一个LUT可以看成一个有4位地址线的16 * 1的RAM,当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA软件会根据用户描述自动生成逻辑电路的成有可能结果,并将结果事先写入RAM,因此每输入一个逻辑运算信号就等于输入一个地址进行查表,从RAM中找到该项地址对应的内容,然后输入。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。