PLD,CPLD,FPGA有何不同?
不同厂家的叫法不尽相同,PLD(Programmable Logic Device)是可编程逻辑器件的总称,FPGA (Field Programmable Gate Arry)是指现场可编程门阵列(SRAM 工艺,要外挂配置用的EPROM)。Xilinx把SRAM工艺,要外挂配置用的EPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺)的PLD叫CPLD; Altera 把自己的PLD产品:MAX系列(EEPROM工艺),FLEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD),由于FLEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX系列产品也叫做FPGA。
一个74系列设计的电路,工作很正常,为什么原封不动集成到PLD中以后却不能正常工作,是芯片有问题吗?
设计PLD/FPGA内部电路与设计74的分立电路是有区别的。这个问题是由于电路中的毛刺产生的。电路布线长短不同造成延时不一致,有竞争冒险,会产生毛刺。分立元件之间存在分布电容和电感可以滤掉毛刺,所以用分立元件设计电路时,很少考虑竞争冒险和毛刺问题,但PLD/FPGA内部没有分布电容和电感,不可以滤掉任何毛刺(哪怕只有1ns)。有些毛刺是可以忽略的,有些是致命的。这些致命的毛刺将导致电路不能正常工作。这是设计FPGA和设计分立元件最大的不同。可以通过修改电路减少有害毛刺。根据经验,几乎所有稳定性或可靠性问题都是由PLD内部电路设计不合理造成的。
如何将信号做一定延时?
当需要对某一信号作一段延时时,初学者往往在此信号后串接一些非门或其它门电路,此方法在分离电路中是可行的。但在FPGA中,开发软件在综合设计时会将这些门当作冗余逻辑去掉,达不到延时的效果。用ALTERA公司的MaxplusII开发FPGA时,可以通过插入一些LCELL原语来产生一定的延时,但这样形成的延时在FPGA芯片中并不稳定,会随温度等外部环境的改变而改变,因此并不提倡这样做。在此,可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移位寄存器的级数,移位寄存器的输出即为延时后的信号。此方法产生的延时信号与原信号比有误差,误差大小由高频时钟的周期来决定。对于数据信号的延时,在输出端用数据时钟对延时后信号重新采样,就可以消除误差。
什么是IP核或IP库? 有那些种类?
IP核是指:将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等等设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发展趋势。
如何设计3.3v,2.5v 等低电压PLD/FPGA的电源?
用低压差线形稳压器(LDO)或采用开关电源,详细内容参见低电压PLD/FPGA的相关供电设计。
CPLD/FPGA的宏单元是怎么定义?是否是指包含的触发器的数量?按照门来算,一个宏单元对应多少门?
宏单元(或逻辑单元)是PLD/FPGA的最基本单元,不同产品对这种基本单元的叫法不同,如LE,MC,CLB,Slices等,但每个基本单元一般都包括两部分,一部分实现组合逻辑,另一部分实现时序逻辑。各个厂家的定义可能不一样。对ALTERA的芯片,每个基本单元含一个触发器;对Xilinx的部分芯片,每个基本单元单元含两个触发器。一般不用“门”的数量衡量PLD/FPGA的大小,因为各家对门数的算法不一样,象ALTERA和Xilinx对门的计算结果就差了一倍,推荐用触发器的多少来衡量芯片的大小。如10万门的Xilinx的XC2S100有1200个slices,即含2400个触发器;5万门的ALTERA的1K50则含2880个LE,即2880个触发器。