系统的比较,与大家共享: 尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点: ①CPLD更适合完成各种算法和组合逻辑,FP
GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP
GA可在逻辑门下编程,而CPLD是在逻辑块下编程。
④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
⑤CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
CPLD使用经验 使用EPM7128SLC84-15,其中主要的功能是移位寄存器,就是类似于74LS164或4518那样的功能。PCB加工好,元件装配,程序下载,一切顺利,但是系统开机后就发现麻烦了:不能正常移位。
把本来相对复杂的功能全部去掉,最后只剩下一个最基本的移位寄存器:DATA,CLK,QOUT。但是就是无法移位。
还在CPLD可以在线重复编程,就试用了几种模式,结果发现无论是用原理图画出来的,还是用VHDL写的,还是LPM调用的都是一样的结果。尝试了若干次后发现其实不是不能移位,而是移位数不对:100位的移位只移动了不到10位就到输出了。如果移位数小于几十就一下移出了。
怀疑是CLK信号上有毛刺,但是用TEK210示波器看不出。
换板,换芯片,换电脑,无效。
因为此前已经用EPM7128S搞好一块板子,故实在想不出有什么问题。两天过去了,电话咨询骏龙科技,还是不知如何解决。决定把板子带到上海去让骏龙科技的技术支持人员看看。
所有东西收拾好,到了骏龙,一位毛工程师接待。看了半天,说是时钟信号的质量可能有问题。天哪,我的时钟是用AT2051模拟的,P1口直接输出,如果这个还不行,那我那系统上的时钟质量还要差。 毛工提到以前遇到过一位宁波的也是一个类似的问题,不过是分频器,最后用施密特触发器对时钟进行整型后就好了。
他如此一说,我好像也看到了答案。由于板上的输入信号很多是从比较远的一个机箱过来的,在上次做的那块板时就发现信号上会有杂波和毛刺,加一个RC低通就好了。所以我就把后设计的所有输入信号都加上了RC(信号经过一个1K的电阻到CPLD的输入,同时在CPLD的输入和地线之间接一个103的电容)。
既然用示波器看不出毛刺,那是不是波形的上升太慢,导致在逻辑临界点出现了多个时钟,由于分立元件速度太慢,不会有太大的影响,用了快速的CPLD影响就很明显了。
当场拆掉RC,好,移位正常。不,移位数还是不对,但是已经很接近实际数了。谢过毛工后回。
回公司后,觉得是不是加一上拉电阻就可以提升上升沿的速度。加上后没有效果。
加一74LS14,一个下午,所有功能都调试出来了。
问题时是很简单,但是还是费了好大的周折
|