您可以使用两个标准来评估数字项目,帮助您确定哪个部分最符合您的标准。首先是设计规模/复杂性——涉及多少逻辑。二是在引脚数方面的输入和输出要求。如果您可以估计最慢的功能是什么,则可以考虑速度。一旦您进入正确的球场,供应商工具(Altera Quartus II、Xilinx ISE 等)将为您提供帮助。
PAL/PLA/GAL:这些旨在替换通常作为 LSI 逻辑芯片(7400、4000 系列)实现的中小型电路。由于 I/O 重新映射和许多简单的逻辑功能,这些可以提供更好的电路板布局。这些芯片包含非易失性存储器(或一次性可编程熔丝)并且不需要上电配置时间。它们可能不包含数据存储元素。
CPLD:这些是解放军的大表亲。这些设计可以是小型状态机,甚至可以是非常简单的微处理器内核。我见过的大多数 CPLD 芯片都没有任何片上 SRAM,尽管您链接的大型赛普拉斯 CPLD 有。CPLD 更有可能通过闪存重新编程,并且它们也不需要上电时的配置时间。
FPGA:与CPLD不同,逻辑块基于SRAM而不是闪存,逻辑运算速度更快。FPGA 的主要缺点是,由于配置存储在 SRAM 中,每次设备上电时,FPGA 都必须将其编程加载到该 SRAM 中。根据您的设计大小和非易失性存储的速度,这可能会导致从通电到完全运行的明显延迟。一些 FPGA 具有用于存储数据的片上闪存,但大多数使用单独的存储芯片。FPGA 通常具有硬连线乘法器、PLL 和其他逻辑功能,以提高计算速度。大块的片上 RAM 也可用。您还可以使用高性能 I/O 规范,例如 LVDS、PCI 和 PCI-Express。
带有微处理器硬核的 FPGA:我不熟悉这些,但我想您的设计将围绕微控制器编程,而 FPGA 将增强微控制器。您确定的部件使您看起来像是从微控制器和 FPGA 开始设计,然后将两者组合到一个芯片/封装中。
如何决定哪个适合您:
最好的方法是完成您的代码(Verilog/VHDL),然后使用供应商的工具尝试将其安装到尽可能小的部分中。我知道 Altera 的工具让您可以相当轻松地更改编程目标,因此您可以继续选择更小的 FPGA,然后选择更小的 CPLD,直到您的设计使用率接近 75%。如果您需要性能,请尝试选择具有降低逻辑速度要求的功能(快速乘法器)的设备。同样,供应商工具将帮助您确定是否需要升级或是否可以降级。
使用哪个部件的另一个因素是易用性。使用 PAL/PLA/GAL 逻辑可能比使用离散逻辑门(74HC*、4000 等)构建函数更费力。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
- 输入输出扩展器
- CPU 地址空间解码
- 时钟(计时)
- 显示多路复用器
- 简单的数字信号处理器
- 一些简单的程序可以转换成CPLD设计
业余爱好者 FPGA 应用示例:
- 小型片上系统 (SoC) 设计
- 视频
- 复杂的协议桥
- 信号处理
- 加密/解密
- 旧系统仿真
- 逻辑分析仪/模式生成器
对于大多数业余爱好者的工作,除非您想焊接 BGA 封装,否则您将受限于相对较小的 FPGA。我会在大型 CPLD 或廉价 FPGA 之间进行选择,尺寸/速度要求将决定我需要哪一个。