关于FPGA和CPLD,选择哪一个比较好?
这两者之间的主要区别是什么?对于高速的电路系统,选择哪一个比较好?
笼统的说,两者的区别在于资源的规模和芯片工作速度。FPGA规模大于CPLD,但系统工作频率低于CPLD。此外,PIN的延迟上,CPLD比FPGA要好。
由于FPGA内部资源比较丰富,如大量的寄存器,RAM,因此特别适合算法实现,如FFT,网络通讯协议等。
CPLD的工作速度高,延迟更容易确定,通常也比较小,因此适合作控制系统、译码部分,如总线控制器、开关网络等。
但是不要把这两者绝对起来,具体问题需要具体分析。例如很多人就用FPGA实现PCI总线接口。
用altera的flex 10ke 做了一个sdram 控制器但用max9000系列去编译设计,然后仿真, 时序一塌糊涂!按理说, max9000的fmax也很高呀。
无论是在FPGA还是在CPLD上进行设计,都必须充分利用所用芯片的体系结构才能设计一个高速的系统。MAX9000的速度确实比10KE快,但也不意味着就一定可行。
我姑且假设你的10KE逻辑的已经调试好了。因此你可能针对10KE的体系结构进行了优化。而这种优化对于9000来说很有可能是无效的,而且说不定会引入新的麻烦。例如,在10KE中,状态机通常用ONE-HOT编码方式效率会比较高,而在MAX9000中如果仍然采用ONE-HOT是否会同样有效呢?
此外,由于器件的结构特点,在进行大规模设计时,通常都会最初的行为设计进行一定程度的调整,例如一个大的状态机改变为几个层次小状态机等,否则是无法达到系统速度的。因此,通常不能指望最初的行为设计就是最终的逻辑设计,两者通常会有一定程度的差别。
|