初识FPGA

1.1 FPGA是什么

1.1.1 名词解释

FPGA是一种以数字电路为主的集成芯片,于1985年由Xilinx创始人之一发明,属于可编程逻辑器件(PLD)的一种。这个时间比摩尔定律出现晚了20年左右,但是FPGA一经发明,后续的发展速度之快,超出了大多数人的想象。

1.1.2 FPGA 发展历程

在PLD未发明之前,工程师使用若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂逻辑的功能实现比较困难。

为了解决这个问题,20世纪70年代,可编程逻辑阵列(Programmable logic array, PLA)问世,PLA中包含了一些固定数量的与门、非门,分别组成了 与平面 和 或平面 ,即 与链接矩阵 和 或链接矩阵 。以及仅可编程一次的连接矩阵,因此可以实现一些相对复杂的与、或多项表达式。

与PLA一起问世的还有可编程只读存储器(Programmable Read-Only memory ,PROM),与PLA相同,PROM内部包含 与链接矩阵 和 或链接矩阵 ,但是与门链接矩阵是硬件固定的,只有或门链接矩阵是可以编程的。

若只有 与门 的连接矩阵可编程,而或门 的连接矩阵是硬件固定的,这种芯片叫做可编程阵列逻辑器件(Programmable array logic,PAL),根据输出电路工作模式的不同,PLA可分为三态输出、寄存器输出、互补输出,但是PAL任然使用熔丝工艺,只可编译一次。

在PAL的基础上,有发展出了通用阵列逻辑器件(Generic array logic,GAL),相比与PLA,GAL有两点改进:一是采用了电可擦除的CMOS工艺,可以多次编程。二是采用了可编程的输出逻辑宏单元。通过编程OLMC可将GAL的输出设置成不同的状态,仅用一个型号的GAL就可以实现所有的PAL器件输出电路的工作模式,增强了器件的通用性。

|--------|-------------------------|-------------------|
| 器件种类特性 | FPGA | CPLD |
| 内部结构 | 查找表(look up table) | 乘积项(product term) |
| 程序存储 | 内部为SRAM,外部为Flash或EEPROM | 内部为Flash或EEPROM |
| 资源类型 | 触发器资源丰富 | 组合逻辑资源丰富 |
| 集成度 | 高 | 低 |
| 使用场合 | 完成比较复杂的算法 | 完成控制逻辑 |
| 速度 | 快 | 慢 |
| 其他资源 | RAM,PLL,DSP等 | / |
| 保密性 | 一般不能保密(可以使用加密 IP) | 可加密 |

FPGA的类型是从内部的实现机理来讲的,可以分为SRAM技术、基于反熔丝技术、基于EEPROM/Flash技术。就电路结构结构来讲,FPGA可编程是指三个方面的可编程:可编程逻辑块、可编程IO、可编程布线资源。可编程逻辑块是FPGA可编程的核心,上面提到的三个技术也是针对可编程逻辑块的技术。

相关推荐
乌恩大侠5 小时前
USRP 毫米波通信解决方案
网络·5g·fpga开发
XINVRY-FPGA9 小时前
XCZU19EG-2FFVB1517I FPGA Xilinx AMD ZynqUltraScale+ MPSoC
arm开发·嵌入式硬件·fpga开发·硬件架构·硬件工程·dsp开发·fpga
霖0018 小时前
ZYNQ实现FFT信号处理项目
人工智能·经验分享·神经网络·机器学习·fpga开发·信号处理
文火冰糖的硅基工坊1 天前
[硬件电路-150]:数字电路 - 数字电路与模拟电路的异同
嵌入式硬件·fpga开发·电路·运放·跨学科融合
m0_575046341 天前
Verilog 仿真问题:打拍失败
fpga开发·fpga打拍失败
做一个优雅的美男子1 天前
FPGA设计思想与验证方法学系列学习笔记003
笔记·fpga开发
晓晓暮雨潇潇1 天前
Diamond基础1:认识Lattice器件
fpga开发·diamond·latticeecp3
ChipCamp2 天前
Chisel芯片开发入门系列 -- 18. CPU芯片开发和解释8(流水线架构的代码级理解)
开发语言·青少年编程·fpga开发·scala·dsp开发·risc-v·chisel
I'm a winner2 天前
基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程
linux·ubuntu·fpga开发
9527华安2 天前
FPGA实现Aurora 8B10B数据回环传输,基于GTP高速收发器,提供6套工程源码和技术支持
fpga开发·aurora·gtp·高速收发器·sfp·8b10b