您可以使用两个条件来评估数字项目,以帮助您确定最符合条件的部分。第一个是设计大小/复杂性-涉及多少逻辑。第二个是引脚数对输入和输出的要求。如果可以估计最慢的功能,则可以考虑速度。一旦找到合适的解决方案,供应商的工具(Altera Quartus II,Xilinx ISE等)将为您提供帮助。
PAL / PLA / GAL:这些旨在替代您通常可作为LSI逻辑芯片(7400、4000系列)实现的中小型电路。由于I / O重新映射以及许多简单的逻辑功能,它们可以提供更好的电路板布局。这些芯片包含非易失性存储器(或一次性可编程熔丝),并且不需要上电配置时间。它们可能不包含数据存储元素。
CPLD:这些是PLA的堂兄。设计可以是小型状态机,甚至是非常简单的微处理器内核。我看到的大多数CPLD芯片都没有任何片上SRAM,尽管您链接的大型赛普拉斯CPLD却具有。CPLD更有可能通过闪存进行重新编程,并且它们在上电时也不需要配置时间。
FPGA:与CPLD不同,逻辑块基于SRAM而不是闪存,从而加快了逻辑运算的速度。FPGA的主要缺点是,由于配置存储在SRAM中,因此每次设备加电时,FPGA必须将其编程加载到该SRAM中。根据设计的大小和非易失性存储的速度,这可能会导致从加电到正常运行的明显延迟。一些FPGA具有片上闪存来存储其数据,但是大多数FPGA使用单独的存储芯片。FPGA通常具有硬连线的乘法器,PLL和其他逻辑功能,以提高计算速度。还提供大块的片上RAM。您还将能够使用高性能I / O规范,例如LVDS,PCI和PCI-Express。
具有微处理器硬核的FPGA:我不熟悉这些,但是我可以想象您的设计将围绕微控制器编程,而FPGA将扩展微控制器。识别出的零件使您看起来像是从微控制器和FPGA开始设计,然后将两者组合成一个芯片/封装。
如何确定最适合您的方法:
最好的方法是先完成代码(Verilog / VHDL),然后使用供应商的工具尝试将其尽可能地缩小。我知道Altera的工具可以让您相当轻松地更改编程目标,因此您可以继续选择较小的FPGA,然后选择较小的CPLD,直到您的设计使用率接近75%。如果需要性能,请尝试选择具有降低逻辑速度要求的功能(快速乘法器)的设备。同样,供应商工具将帮助您确定是否需要升级或是否可以降级。
使用哪一部分的另一个因素是易用性。与使用离散逻辑门(74HC *,4000等)构造功能相比,使用PAL / PLA / GAL逻辑可能要花更多的精力。CPLD通常只需要一个电源电压,不需要额外的电路。它们实际上是独立的。FPGA开始为I / O和逻辑内核,复杂的I / O标准,独立的程序存储器,多层(> 2)PCB和BGA封装使用多个电源。
缩小设计要求的步骤包括:
识别FPGA / CPLD的所有输入和输出。这通常是设计阶段的简单部分。这样,您就可以知道要查看的包装以及将包装切到该边缘的距离。
画出内部逻辑框图。如果您的模块看起来很简单(每个模块都有完整的逻辑门和寄存器),那么您可能可以使用CPLD。但是,如果您的块具有诸如“以太网收发器”,“ PCI-Express x16接口”,“ DDR2控制器”或“ h264编码/解码”之类的标签,那么您几乎可以肯定正在使用FPGA并使用HDL。
- 查看并查看您的接口是否具有特殊的I / O要求,例如特殊的电压,LVDS,DDR或高速SERDES。获得支持它的芯片比获得额外的翻译器芯片容易。
CPLD应用示例:
- 带SPI接口的多通道PWM
- I / O扩展器
- CPU地址空间解码
- 时钟(计时)
- 显示多路复用器
- 简单的DSP
- 一些简单的程序可以转换为CPLD设计
业余爱好者FPGA应用示例:
- 小型片上系统(SoC)设计
- 视频
- 复杂的协议桥
- 信号处理
- 加密/解密
- 旧版系统仿真
- 逻辑分析仪/模式发生器
对于大多数业余爱好者的工作,除非要焊接BGA封装,否则您将只能使用相对较小的FPGA。我会选择大型CPLD还是廉价的FPGA,而尺寸/速度要求将决定我需要哪一个。