FPGA 的发展历史
小型的 通用数字集成电路
我们从逻辑功能的特点上将数字集成电路分类,可以分为通用型和专用型两类。
前面介绍到的中、小规模集成电路(如 74 系列)都属于通用型数字集成电路。
它们的逻辑功能都比较简单,而且是固定不变的。
由于它们的这些功能在组成复杂数字系统时经常要用到,所以这些器件具有很强的通用性。
大型 专用数字集成电路 V1.0 - ASIC
从理论上来讲,用这些通用型的中、小规模集成电路可以组成任何复杂的数字系统。
随着集成电路的集成度越来越高,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量和功耗,而且可以使电路的可靠性大为提高。
像这种为某种专门用途而设计的集成电路称为专用集成电路,即所谓的 ASIC(Application Specific Integrated Circuit)。
缺点
在用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而且设计制造的周期也很长。
但是在用量大的情况下, ASIC 是 最优选择,并不是有了 2.0 就淘汰了 1.0
大型 专用数字集成电路 V2.0 - PLD
是作为一种通用器件生产,但它的逻辑功能是由用户通过对器件进行编程来设定的。
而且有些 PLD 的集成度很高,足以满足设计一般数字系统的需要。
这样就可以由设计人员自行编程从而将一个数字系统“集成”在一片 PLD 上,做成“片上系统”(System on Chip,SoC),而不必去请芯片制造厂商设计和制作专用集成电路芯片了。
fix了哪些问题
fix了 ASIC 在"用量不大"时的缺点
大型 专用数字集成电路 V3.0 - PLD的升级款(CPLD)
CPLD:complex PLD
大型 专用数字集成电路 V4.0 - CPLD的升级款(FPGA)
FPGA(field-programmable gate array,现场可编程门阵列
FPGA是什么
FPGA是 PLD 的进化版 , PLD 本身 是 可被用户编程的
FPGA 并没有 失去 这一个特性
所以目前 FPGA 可以被用户编程
作为一种可编程器件,FPGA 能实现任何数字器件的功能,上至高性能 CPU,下至简单的 74 电路,都可以用 FPGA 来实现。
FPGA 就像一张白纸,任由你在上面涂鸦或者作画;
FPGA 又如同一堆积木,随便你用来搭建城堡或者玩“过家家”
FPGA的应用场景
fpga应用领域(灵活性,高计算性能)
通信和网络
数据中心智能网卡(服务器)
航空航天和军事国防
流片前的硬件测试平台
家里使用的高清电视
附近的无线电接收塔;
从银行门口的 ATM 机,
微软数据中心的服务器
FPGA 广范应用在汽车、军用装备、图像处理、有线和无线通信、医药,以及工业控制等诸多领域。
FPGA 相较于"其他可替代产品"的优势
fpga特点
硬件可编程
高性能
频率低但是并发处理,任务优化度高(一条指令可以完成cpu的N条指令任务)
不用流片,可重复编程
SOC
优点:控制
缺点:串行处理数据
可编程逻辑天生就为并行地实现算法提供了理想的资源。
比如在图像处理中,要同时对大量的像素点进行数学运算,而 FPGA 就很适合像这种像素点级别的图像处理所需的快速、并行的操作
FPGA 并 并 行的特性决定了它在某些特定行业应用上具有得天独厚的优势,例如在医疗领域。医学影像比
普通图像纹理更多,分辨率更高,相关性更大。因此,为严格确保临床应用的可靠性,对图像的压缩、分
割等预处理、图像分析及图像理解等要求更高。这些要求恰恰可以充分发挥 FPGA 的优势,通过 FPGA 加
速图像压缩进程、删除冗余、提高压缩比、并确保图像诊断的可靠性。
在金融领域,由于采用流水线逻辑体系结构,数据流处理要求低延时,高可靠性。这在金融交易风险
建模算法应用中是重要的关键点,而 FPGA 正具备了这种优势。类似的行业和领域还有很多,特别是在深
度学习和神经网络,以及图像识别和自然语言处理等领域,FPGA 正显示出其独有的优势。
FPGA组成
简化的 FPGA 基本结构由 6 部分组成,分别为
可编程输入/输出单元、
基本可编程逻辑单元、
嵌入式块RAM、
丰富的布线资源、
底层嵌入功能单元
内嵌专用硬核
它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求
大多数 FPGA 的 I/O 单元被设计为可编程模式,
即通过软件的灵活配置,可以适配不同的电气标准与 I/O 物理特性;可以调整匹配阻抗特性、上下拉电阻、以及调整驱动电流的大小
可编程 I/O 单元支持的电气标准因工艺而异,
不同芯片商、不同器件的 FPGA 支持的 I/O 标准不同,
一般来说,常见的电气标准有 LVTTL,LVCMOS,SSTL,HSTL,LVDS,LVPECL 和 PCI 等。
可编程 I/O 支持的最高频率越来越高,
一些高端 FPGA 通过 DDR 寄存器技术,甚至可以支持高达 2Gbit/s 的数据数率。
基本可编程逻辑单元是
可编程逻辑的主体,
可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。
逻辑单元的最小组成部分
基本可编程逻辑单元
比较经典的基本可编程逻辑单元几乎都是由
查找表(LUT,Look Up Table)
Xilinx 7 系列 FPGA 内部查找表为 6 输入,查找表一般完成纯组合逻辑功能。
寄存器(Register)组成。
FPGA 内部寄存器结构相当灵活,
可以配置为带同步/异步复位或置位,时钟使能的触发器,也可以配置成锁存器,
FPGA 依赖寄存器完成同步时序逻辑设计。
不同厂商的寄存器与查找表也有一定的差异,而且寄存器与查找表的组合模式也不同。
当然这些可编程逻辑单元的配置结构随着器件的不断发展也在不断更新,
最新的一些可编程逻辑器件常常根据需求设计新的 LUT 和寄存器的配置比率,并优化其内部的连接构造。
Altera 基本可编程逻辑单元通常被称为 LE(Logic Element),
由一个寄存器加一个 查找表 构成。
Xilinx 7 系列 FPGA 中的基本可编程逻辑单元叫 CLB(Configurable Logic Block,可配置逻辑块)
每个 CLB里包含两个逻辑片(Slice)。
每个 Slice 由 下面组成
4 个查找表
8 个触发器
其他一些逻辑
逻辑阵列模块
Altera 大多数 FPGA 将 10 个 LE 有机地组合在一起,构成更大的功能单元——逻辑阵列模LAB,Logic Array Block)。
LAB 中除了 LE 还包含 LE 之间的进位链,LAB 控制信号,局部互联线资源,LUT 级联链,寄存器级联链等连线与控制资源。
目前大多数 FPGA 都有内嵌的块 RAM(Block RAM),
FPGA 内部嵌入可编程 RAM 模块,大大地拓展了 FPGA 的应用范围和使用灵活性。
除了块 RAM,
还可以灵活地将 LUT 配置成 RAM,ROM,FIFO 等存储结构,
这种技术被称为分布式 RAM。根据设计需求,块 RAM 的数量和配置方式也是器件选型的一个重要标准
不同器件商或不同器件族的内嵌块 RAM 的结构不同,
Lattice
常用的 块 RAM 大小是 9KBIT;
Altera
的块 RAM 最灵活,一些高端器件内部同时含有 3 种块 RAM 结构,分别是 M512 RAM,M4K RAM,M9K RAM。
Zynq-7000
块 RAM 和 Xilinx 7 列 FPGA 里的那些块 RAM 是等同的,它们可以实现 RAM、ROM 和 先入先出(First In First Out,FIFO)缓冲器。每个块 RAM 可以存储最多 36KB 的信息,并且可以被配置为一个 36KB 的RAM 或两个独立的 18KB RAM。默认的字宽是 18 位,这样的配置下每个RAM 含有 2048 个存储单元。
RAM 还可以被“重塑”来包含更多更小的单元(比如 4096 个单元 x9 位,或 8192x4 位),或
是另外做成更少更长的单元(如 1024 单元 x36 位 512x72 位)。
把两个或多个块 RAM 组合起来可以形成更大的存储容量。
布线资源连通 FPGA 内部的所有单元
而连线的"长度"和"工艺"决定着信号在连线上的"驱动能力"和"传输速度"。
FPGA 芯片内部有着丰富的布线资源
这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为4 类不同的类别:
第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;
第二类是长线资源,用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;
第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;
第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
在实际中设计者不需要直接选择布线资源,
布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。
从本质上讲,布线资源的使用方法和设计的结果有直接的关系。
底层嵌入功能单元的概念比较笼统,这里我们指的是
那些通用程度较高的嵌入式功能模块
比如 PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU 等。
随着 FPGA 的发展,这些模块被越来越多地嵌入到 FPGA 的内部,以满足不同场合的需求。
PLL/DLL
目前大多数 FPGA 厂商都在 FPGA 内部集成了 DLL 或者 PLL 硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、相移等功能。
目前,高端 FPGA 产品集成的 DLL 和 PLL 资源越来越丰富,功能越来越复杂,精度越来越高。
DSP/CPU
另外,越来越多的高端 FPGA 产品将包含 DSP 或 CPU 等硬核,从而 FPGA 将由传统的硬件设计手段逐步过渡到系统级设计平台。
例如 Altera 的 Stratix IV、Stratix V 等器件内部集成了 DSP 核;
Xilinx 的 Virtes II 和 Virtex II pro 系列 FPGA 内部集成了 Power PC450 的处理器。
FPGA 内部嵌入 DSP 或 CPU 等处理器,使FPGA 在一定程度上具备了实现软硬件联合系统的能力,FPGA 正逐步成为 SOPC 的高效设计平台。
这里的内嵌专用硬核与前面的底层嵌入单元是有区分的,
这里讲的内嵌专用硬核主要指那些通用性相对较弱,不是所有 FPGA 器件都包含硬核。
ZYNQ中的XADC
在ZYNQ的PL端有一个数模混合模块——XADC,它就是一个硬核。
XADC包含两个模数转换器(ADC),一个模拟多路复用器,片上温度和片上电压传感器等。
我们可以利用这个模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号
FPGA市场
amd/xilinx 的 xilinx芯片
intel/altera 的 altera芯片
amd/xilinx 的 vivado (仿真,综合,布局布线)
intel/altera 的 quartus
synopsys 的 vcs (仿真,比较专业)
synopsys 的 Verdi (时序查看)
mentor 的 modelsim (仿真时序查看,通用型)
Cadence 的 RTL供应(DDR RTL)