EDA基础概念

EDA和CAD

CAD工具

计算机辅助设计工具,主要作用:绘图工具,使用者:遍布各个行业。电气CAD系统的目标与范围有:机械产品电气设计包括电路图、接线图、安装图、接线盒和电柜以及按钮站的设计。这五个部分之间不是孤立存在的,而是互相联系,这五个部分既能单独运行又能实现信息共享。为此电气CAD系统的目标与范围是:建立适应完成以上功能要求、保证设计质量又能提高效率、缩短设计周期、减少人工劳动的电气CAD系统,包括电路图、接线图、安装图、接线盒和电柜、按钮站的设计。

EDA工具

EDA:Electronic Design Automation,即电子设计自动化,是指是以计算机为平台,使用通用软件包,开展电子电路设计、电子电路仿真、PCB设计,CPLD/FPGA设计,IC设计等工作。也即在CAD绘图技术基础上融合了应用电子技术、计算机技术、信息处理技术等实现电子产品的自动设计。使用者:特指有关电子系统的相关的行业。
1.电子电路设计
例如:multisim和matlab都能进行电路仿真,例如可以画出电路图,仿真观察电压电流的波形
2.PCB设计(电路板设计)
例如:Protel、altium desinger可以进行PCB图的绘制
3.IC设计(芯片设计)
很复杂,包括模拟IC和数字IC。例如:芯片设计工具Cadence
4.PLD设计工具(可编程逻辑器件)
FPGA(现场可编程门阵列)的工具有Quartus是Altera公司出的软件,可以对其公司的FPGA芯片进行编程,下载。

注:
1.很多软件的功能非常复杂,在电子系统的各个级别(物理级、电路级、系统级)都有很强的功能。如:quartus既能做数字IC设计,也能做FPGA设计。
2.流程图绘制工具:Visio是半个EDA软件

EDA技术实现目标

利用EDA技术进行电子系统设计的最后的目标,是完成专用集成电路ASIC或印制电路板(PCB)的设计和实现。
在这里插入图片描述
作为EDA技术最终实现目标的ASIC,可以通过三种途径来完成:
1、可编辑逻辑器件
FPGA/CPLD是实现这一途径的主流器件
2、半定制或全定制ASIC
统称为掩膜ASIC,或直接称ASIC,分为以下三种
在这里插入图片描述
3、混合ASIC
在这里插入图片描述

可编程逻辑器件简称PLD发展历程

可编程逻辑器件简称PLD(Programable Logic Device),它是EDA技术发展的一个重要支持点,也是实现电子系统非常重要的一种方法,PLD的发展推动了EDA工具的发展,也改变了电子系统的设计方法。PLD的集成度分类:
在这里插入图片描述
PROM:或阵列可编程,与阵列不可编程(固定)
PLA:或阵列和与阵列都可编程
PAL:或阵列不可编程(固定),与阵列可编程
GAL:或阵列不可编程(固定),与阵列可编程,首次在PLD上采用EEPROM工艺
在这里插入图片描述
复杂PLD(CPLD与FPGA):

  • 1985年,美国Xilinx公司推出了现场可编程门阵列(FPGA,Field Programmable Gate Array)
  • CPLD(Complex Programmable Logic Device),即复杂可编程逻辑器件,是从Altera 的 EPLD 改进而来的。

CPLD简介

早期的CPLD是从GAL的结构扩展而来,但针对GAL的缺点进行了改进。CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于 CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。到90年代,CPLD发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线可编程等高级特性。较常用的有Xilinx公司的EPLD和Altera公司的CPLD。

FPGA简介

  • FPGA(Field- Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展出来的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
  • FPGA 普遍用于实现数字电路模块,用户可对 FPGA 内部的逻辑模块和 I/O模块重新配置,以实现用户的需求。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。
  • FPGA的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块 RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。
  • FPGA 的设计流程包括算法设计、代码仿真以及设计、板级调试,设计者以及实际需求建立算法架构,利用 EDA 建立设计方案或 HD 编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至 FPGA 芯片中,验证实际运行效果。

FPGA 架构主要包括可配置逻辑块 CLB(Configurable Logic Block)、输入输出块 IOB(Input Output Block)、内部连线(Interconnect)和其它内嵌单元四个部分。
在这里插入图片描述
CLB是FPGA的基本组件,它提供逻辑和存储功能。基本逻辑块可以是晶体管、与非门、多路复用器、查找表 (LUT)、类似PAL的结构甚至处理器之类的任何东西。Xilinx和Altera都使用基于查找表 (LUT) 的逻辑块来实现逻辑和存储功能。CLB实际数量和特性会依器件的不同而改变,但是每个 CLB 都包含一个由 4 或 6个输入、若干选择电路(多路复用器等)和触发器组成的可配置开关矩阵。基于Xilinx的FPGA中的逻辑块称为可配置逻辑块或CLB,而基于Altera的FPGA中的类似结构称为逻辑阵列块或LAB(CPLD中称为逻辑阵列块LAB)

FPGA 可支持许多种 I/O 标准,因而可以为系统设计提供理想的接口桥接。FPGA 内的 I/O 按 bank 分组,每个 bank 能独立支持不同的 I/O 标准。目前最先进的 FPGA 提供了十多个 I/O bank,能够提供灵活的 I/O 支持。

CLB 提供了逻辑性能,灵活的互连布线则负责在 CLB 和 I/O 之间传递信号。布线有几种类型,从设计用于专门实现 CLB 互连(短线资源)、到器件内的高速水平和垂直长线(长线资源)、再到时钟与其它全局信号的全局低 skew 布线(全局性专用布线资源)。

CLB、Slice、logic cell、LUT概念

以Xilinx-SPARTAN6-XC6SLX25为例
在这里插入图片描述

LC —Logic Cell—逻辑单元

首先介绍概念最简单的逻辑单元,Logic Cell是Xilinx定义的一种标准,用于确定不同系列器件的“大小”。而在所有器件中,LC与LUT都有一个比例,但不同器件的LUT和FF搭配不一定相同,因此该比例往往会在数据手册中给出。例如在SPANTAN-6的UG384中就给出:
在这里插入图片描述
针对LC的含义,下面是Xilinx官方回答:
A “logic cell” is a marketing thing. It is an attempt to create a “unified” metric that can be used across different device families (and even different vendors) to compare sizes of devices even when the underlying architecture is different.

The “logic cell” is supposed to represent a 4-input LUT with no other functionality. In older Xilinx technologies (with 4-input LUTs) they used to use 1.25 as the multiplier to get from LUTs to Logic Cells, since the Xilinx slice also had the carry chain and wide MUX, which made it possible to do more than a simple 4-input LUT would be able to do.

In later technologies, which use the 6-input LUT, they use the multiplier 1.6.

Also remember there are two flip-flops per LUT…
So, the device has 2,443,200 flip-flops, which means 1,221,600 6-input LUTs. Multiply this by 1.6 and you get 1,945,560, which is the published “Logic Cells” number.

大概意思就是说“logic cells” 是 Xilinx 创造提出来的一个市场说法,可以用来衡量不同内部结构甚至不同厂商的FPGA芯片的资源情况。

"logic cells"代表的是一个没有其他任何功能的4输入LUT,在老一些的Xilinx的FPGA中,他们使用LUT的数目乘以1.2来计算LC的数目,因为一个LUT中还有一个进位链和MUX,这样可以使一个LC比淡出的4输入LUT实现更多功能。

在较新的FPGA中,Xilinx采用了6输入LUT,这时他们采用系数1.6。

另外请记住一个LUT对应这两个FF,也就是一个查找表对应两个寄存器。

CLB—Configurable Logic Block

可配置逻辑块,是实现时序电路与组合电路的重要逻辑资源。CLB由一对(一般为4个或2个SPANTAN-6,并行垂直列)Slice和附加逻辑(算数和进位链)构成。每个CLB模块不仅可以用于实现组合逻辑和时序逻辑,还可以配置为分布式RAM和分布式ROM。
在这里插入图片描述
在这里插入图片描述
SPARTAN-6中每一个CLB的资源如下:
在这里插入图片描述
Xilinx 7系列芯片,在vivado软件上的视图:
完整芯片:
在这里插入图片描述
其中一个Bank:
在这里插入图片描述

LS—Logic Slice

逻辑片,逻辑片由LUT、FF、各种逻辑(门阵列)组成。Slice有三种类型,分别是:SliceL(logic)与SliceM(memory)、SliceX。在每一列CLB中有两列Slice,其中一列为SliceX,另一列M与L交替。他们特征/功能如下表。
在这里插入图片描述
注意SLICEL 没有distributed RAM 和 shift registers,可以从表中看出就功能而言M>L>X。

SliceM

SliceM中的LUT可作为6输入1输出的LUT/相同5地址的双5输入2独立输出的LUT。同样可配置为64位/双32位(1个32位位移寄存器SRL32/2个可寻址的16位移寄存器SRL16s)的分布式RAM,在CLB中,每个LUT的输出可以及存在FF内。

简言之,SliceM可以作为查找表、触发器、宽位多路数据选择器、进位逻辑、分布式RAM、移位寄存器等。
在这里插入图片描述

SliceL

查找表、触发器、多路数据选择器、进位逻辑。
在这里插入图片描述

SliceX

查找表、触发器。
在这里插入图片描述

Slice的组成

在SPANTAN-6中,一个Slice包含4个6输入LUT和8个FF以及多种逻辑。并包含SliceM(1/4),SliceL(1/4),SliceX(1/2)。1个LS包含6.4个LC,故3758*6.4=24051.2个LC。

V7系列FPGA的slice包含4个部分:
(1)LUT查找表,1个slice里包含4个6输入的查找表。
(2)存储单元,也就是常说的触发器,1个slice里包含8个触发器。每4个触发器为一组,可配置成D触发器或锁存器。
(3)多路复用器,也就是1位宽的数据选择器,数量非常多,足够使用。
(4)进位逻辑,它与本列的上下slice的进位逻辑相连,实现数据运算时的进位操作。

因此,许许多多的slice相结合,再加上全局时钟就能实现复杂的数字功能。有的CLB由2个sliceL构成,有的则是由1个sliceL和一个sliceM构成。SliceM除了基本功能外,可以实现RAM和移位寄存器的功能,这两种功能很有用,通过工具软件可以自动实现,不用咱们操心。

一个完整的slice:
在这里插入图片描述
两个slice组成一个CLB:
在这里插入图片描述

LUT—Look Up Table

查找表是最FPGA中实现逻辑的基本单元,通常有4输入查找表和6输入查找表(4/6 input LUT)。

以4输入查找表为例,可以看成4位地址输入,1位数据输出的存储器,存储的内容是真值表,依照输入的地址的真值输出对应的数据。

LUT是组合的,如果RTL是时序电路,则实际上是LUT+FF组成。

LUT就是一个4/6地址为的RAM。为什么是4/6输入?因为对于多输入的信号处理的时候,就需要有多个LUT的级联来实现,而级联有不可避免的会导致延时过分,导致时序不满足。因此在实际的FPGA产品中多采用的是4输入或者6输入的LUT。(更快,满足时序)
在这里插入图片描述
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构。

LUT本质上就是一个RAM。它把数据事先写入RAM后, 每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。

LUT的重要作用-逻辑函数发生器:
Spartan-6中的函数生成器中,每个Slice中的四个函数生成器(A、B、C和D)有6个独立输入(A1-A6)和2个独立输出(O5-O6)。本质上,逻辑函数发生器存储的是真值表(Truth Table)的内容,而真值表则是通过布尔表达式获得。SPARTAN-6中函数生成器可以实现6输入布尔表达式(O6输出)或者5输入布尔表达式(O5和O6),只要这两个布尔表达式共享公共输入即可。
在这里插入图片描述
查找表的输出可以从O6直接输出,或者从AMUX, BMUX, CMUX, DMUX输出O5;O6输出也可进入专用异或门、O5也可进位逻辑链; O6输出进入进位逻辑多路复用器的选择线、或者存储单元的D输入;或者O6进入3输入D选择器。

存储单元(即触发器,Flip-flops)

每个slice有8个存储元素。

四个可以配置为边沿触发D型触发器或电平敏感锁存器。 D输入可以通过AFFMUX,BFFMUX,CFFMUX或DFFMUX的LUT输出直接驱动,也可以通过AX,BX,CX或DX输入绕过函数发生器的BYPASS slice输入直接驱动。 当配置为锁存器时,当CLK为低电平时,锁存器是透明的。对应如下右图

还有四个额外的存储单元,它们只能配置为边沿触发的D型触发器。 D输入可以由LUT的O5输出驱动,也可以由AX,BX,CX或DX输入的BYPASS slice输入驱动。 当原始的四个存储单元配置为闩锁时,这四个附加的存储单元将无法使用。对应如下左图

slice中的两种配置版本: 4个寄存器和4个寄存器/锁存器
在这里插入图片描述

Distributed-RAM

分布式RAM,与块RAM相比消耗逻辑资源,即SliceM中的LUT。Distributed-RAM适合存储小型缓存数据、FIFO或寄存文件。对于大型存储需求使用块RAM。分布式RAM是同步写资源异步读资源,然而同步读资源可以通过添加一个FF在同一个Slice中实现,添加FF可以降低延迟。SliceM中的LUT可以通过多种组合方式来存储更多数据。
在这里插入图片描述
详细介绍:
浅谈XILINX FPGA CLB单元 之 分布式RAM (Distributed RAM Available in SLICEM Only、RAM128X1D、Verilog原语描述)

移位寄存器(Shift Registers)

SliceM中的函数发生器还可以配置为移位寄存器,详细介绍:
浅谈XILINX FPGA CLB单元 之 移位寄存器(移位寄存器、SRLC32E、SRL16E)

多路复用器(Multiplexers)

7系列FPGA中的函数发生器和相关的多路复用器可以实现以下功能:

  • 使用一个LUT的4:1多路复用器
  • 每片四个4:1 MUX
  • 使用两个LUT的8:1多路复用器
  • 每个slice两个8:1 MUX
  • 使用四个LUT的16:1多路复用器
  • 每片一个16:1 MUX

详细介绍:
浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))

进位逻辑(Carry Logic)

详细介绍:
浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理分析,超前快速进位逻辑结构)

FPGA容量评估

我们经常说到FPGA容量是多少,FPGA器件的容量通常用逻辑单元来衡量,这在逻辑上等同于经典的4输入LUT和触发器。 7系列FPGA逻辑单元和6输入LUT的数量之比为1.6:1。所以,逻辑单元和Slice的数量比是6.4:1
在这里插入图片描述
下图是ZYNQ xc2z020clg400-2器件的基本资源情况表:
在这里插入图片描述
以XC7V585T为例:
LUT总数=Slices* 4=910504=364200
Logic cells总数=LUT1.6=364200*1.6=582720
在这里插入图片描述

Altera 基本结构

Altera的基本结构参考这篇文章即可:
FPGA中的基础逻辑单元–Altera
Cyclone IV系列芯片,在Quartus ii软件上的视图:
完整芯片:

在这里插入图片描述

FPGA中的HP Bank、HR Bank、HD Bank

在开发FPGA绑定管脚时,经常会看到HP Bank、HR Bank和HD Bank,它们分别是什么意思?分别可以适用于哪些应用个?

这几个概念都是在7系列之后才有的,其中7系列的FPGA中有HP Bank和HR Bank,UltraScale FPGA有HP Bank、HR Bank和HD Bank,但并不是一个FPGA中会同时包含HP/HR/HD Bank。

  • HP:High Performance
  • HR:High Range
  • HD:High Density

HP Bank,从名字就可以看出来,应用于高性能也就是速度比较高的场景,比如DDR或者其它高速差分总线(不是gtx),由于速率比较高,Bank电压最高也只能到1.8V。

HR Bank表示支持wider range of I/O standards,最高能够支持到3.3V的电压。

HD Bank应用于低速I/O的场景,最高速率限制在250M以内,最高电压也是支持到3.3V
在这里插入图片描述
Kintex UltraScale 和Virtex UltraScale中有HP Bank和HR Bank,Virtex UltraScale+系列中只有HP Bank,Zynq UltraScale+ MPSoC 和Kintex UltraScale+ 系列包含HP和HR Bank。

由于应用场景不同,支持的IO原语也有差异,下图是7系列FPGA HP Bank和HR Bank支持的特性:
在这里插入图片描述
在这里插入图片描述
下图是UltraScale系列FPGA HP Bank(高性能)和HR Bank(高范围)支持的特性:
在这里插入图片描述
在这里插入图片描述
HD Bank由于相对特殊一些,单独列了出来:
在这里插入图片描述
在这里插入图片描述
SelectIO管脚可根据各种I/O标准 (包括单端和差分)进行配置。

单端I/O标准包括LVCMOS、LVTTL、HSTL、SSTL、HSUL和POD等。

差分I/O标准包括LVDS、Mini_LVDS、RSDS、PPDS、BLVDS、TMDS、SLVS、LVPECL、SUB_LVDS以及差分 HSTL、POD、HSUL和SSTL等。

Xilinx 7系列FPGA用户BANK

FPGA的器件管脚按照Bank进行划分,每个Bank独立供电,以使FPGA I/O适应不同电压标准,增强I/O设计的灵活性。每个用户Bank包括50个I/O管脚或者24对差分对管脚(48个差分信号),顶端和底端各一个单端管脚。
在这里插入图片描述
在上图中,我们可以看到红色圈住的两个单端信号,绿色线条圈住的_CC时钟管脚不用作时钟输入时可以作为用户I/O来使用,另外,还可以看到蓝色标记的VREF管脚,当该BANK I/O用作DDR内存接口时,需要提供伪差分所需的阈值电压,此时_VREF_管脚需要接DDR外设要求的参考电压。

Notes: 所谓伪差分电平,就是信号在接收端是一个差分的接收器,但其中一端固定接参考电压,而另一端接单端信号线。输入信号电压与参考电压之间进行比较,作为判断输入信号高低的标准。

HR和HP BANKS的LVDS电平

当两个BANS的I/O口作为LVDS电平时,HR BANKs的I/O电压VCCO只能为2.5V,HP BANKS的I/O口电压为1.8V。两个BANKS支持LVDS的标准不同,HR I/O BANKS的I/O只能分配LVDS_25标准,HP分配为LVDS标准。LVDS_25的直流特性如下表所示:
在这里插入图片描述
LVDS的直流特性如下表所示:
在这里插入图片描述
对比上述两表可知,虽然LVDS_25和LVDS的BANK的工作电压不同,但是LVDS电平的直流特性一样。高速AD/DA的LVDS工作电压一般为1.8V,在初次使用7系列时,一些硬件工程师可能担心:HR BANK的工作电压为2.5V,那么HR BANK的LVDS是否可以直接连接工作电压为1.8V的AD/DA的LVDS接口,通过查看它们LVDS的直流特性,可以放心的连接。

FPGA和CPLD区别

各个厂家叫法不尽相同:
PLD(Programmable Logic Device)是可编程逻辑器件的总称,早期多EEPROM工艺,基于乘积项(Product Term)结构。FPGA (Field Programmable Gate Arry)是指现场可编程门阵列,最早由Xilinx公司发明。多为SRAM 工艺,基于查找表(Look Up Table)结构,要外挂配置用的EPROM。

Xilinx把SRAM工艺,要外挂配置用的EPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺),乘积项结构的PLD叫CPLD;

Altera把自己的PLD产品:MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD)。由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA
在这里插入图片描述
下面整理一下CPLD和FPGA的主要区别:
1、CPLD的逻辑阵列更适合可重复编程的EEPROM或Flash技术来实现。而FPGA显然是利用SRAM技术更合适。

2、 由于是EEPROM或者Flash工艺决定了CPLD是有一定的擦写次数限制的。而FPGA在实际使用中几乎可以说是无配置次数限制。

3、CPLD由于采用的是EEPROM或者Flash工艺所以配置掉电后不丢失,也就不需要外挂配置芯片。而FPGA采用的是SRAM工艺,配置在掉电后就没有了,因此需要一个外部配置芯片。

4、CPLD的安全性更高。由于配置芯片的存在,FPGA的保密性就会比CPLD略差。逻辑数据有可能被读取。(当然FPGA芯片会有一定的加密措施)

5、 CPLD由于不需要上电重新配置,所以上电后可以马上工作。而FPGA上电后需要配置时间,逻辑量的大小配置方式的区别也会影响配置时间的长短。

6、由于CPLD的连续式布线结构,决定了它的时序延时是均匀和固定的。而FPGA采用的分段式布线结构造成了延时不固定。

7、由于工艺难度的差异,CPLD一般集成度较低,大多为几千门或几万门的芯片规模,做到几十万门已经很困难。而FPGA基于SRAM工艺,集成度更高,可以轻松做到几十万门甚至几百万门的芯片规模,最新的FPGA产品已经接近千万门的规模。

8、 同样由于结构的差异,CPLD更适合完成的是复杂的组合逻辑,如编、译码的工作。而FPGA更适合做复杂的时序逻辑。换句话说就是FPGA更适合触发器丰富的逻辑结构,CPLD适合于触发器有限但是乘积项丰富的逻辑结构。

9、也是由于工艺的原因,一般CPLD会比FPGA的功耗高。

当然以上只是CPLD和FPGA通常意义上的区别,技术是在不断发展中的,这些差异也不能一概而论。随着技术的发展,CPLD和FPGA也在不断的更新当中。
在这里插入图片描述

是否需要同时学习FPGA和CPLD

完全没有必要,因为FPGA和CPLD的设计语言都是Verilog,至于CPLD和FPGA内部结构不一样,在编码阶段完全看不出来,软件会根据CPLD还是FPGA自动生成编程文件,所以学习的话建议值学习FPGA即可,FPGA学会了,基本就会用CPLD了。另外现在的电路设计规模越来越大,动不动都是上万个或者几十万个甚至上百万个寄存器规模,这种规模下,CPLD资源太少,不会被考虑。

Xilinx(赛灵思)公司介绍(AMD收购)

XILINX成立于1984年位于美国,是全球领先的可编程逻辑完整解决方案的供应商,也是目前排名第一的FPGA解决方案提供商。首创了现场可编程逻辑阵列(FPGA)并催生了一个新的行业,并于1985年首次推出商业化产品。1994年,Xilinx发布了Virtex®FPGA,完成了其原始FPGA在架构和性能方面的突破。2012年,Xilinx推出了第一款28nmZynq®器件,这是一款支持应用处理器并包含缓存、内存控制器、外设、FPGA逻辑、DSP模块和SerDes模块的完整SoC系统。Xilinx第二代ZynqSoC(异构MPSoC)于2017年问世,并添加了新的处理引擎,目标是为正确的任务启用正确的硬件引擎,优化复杂系统的处理要求。2018年,Xilinx发布了Alveo™数据中心加速卡,简化了数据中心高性能、适应性强的FPGA加速的开发和部署。2019年,Xilinx发布了第一个自适应计算加速平台(ACAP)Versal。Versal®ACAP支持多种特定领域架构(DSA)和计算结构,其核心优势在于其作为多核通用SoC的功能,包括额外的硬件和软件可编程引擎,以实现最佳的功率和性能权衡。

美国当地时间2022年2月14日,AMD宣布以全股份交易(all-stock transaction)方式完成对赛灵思(Xilinx)的收购。

开发工具

Xilinx目前开发工具包括ISE和Vivado。ISE是老开发软件了,目前基本上已经被vivado取代,只有xilinx公司的一些十几年前生产的FPGA才使用ISE开发,新的FPGA都支持更好用的vivado。

ISE® design suite 支持 Spartan®-6、 Virtex®-6、和 CoolRunner™ 器件,及其上一代器件系列。

Xilinx 推荐 Vivado® Design Suite ,针对 Virtex-7、Kintex-7、Artix-7、和 Zynq®-7000 起的全新设计。

FPGA厂家的开发工具都有第三方仿真平台的接口,调用最多的第三方仿真软件就是Modelsim,ISim是ISE自身集成的仿真工具,两者功能差不多。用modelsim的人比较多,然后教程也多,容易学。跑大型的工程,Modelsim快很多。所以我们在以后的教程中使用Modelsim演示。

Xilinx产品

其FPGA产品包括如下几个部分:
1、Spartan系列:定位于低端市场,目前最新器件为Spartan7,为28nm工艺,Spartan6以前都是45nm工艺,该系列器件价格实惠,逻辑规模相对较小。

2、Artix系列:Xilinx推出Artix系列FPGA产品,其目的应该是作为低端Spartan和中高端Kintex系列FPGA的过渡产品,尤其在通信接口方面,Artix系列相比Spartan有很大优势,所以,如果设计不是仅仅需要逻辑资源,而是需要先进的高速接口,不妨考虑Artix系列。

3、Kintex和Virtex系列为Xilinx的中、高端产品,包含有28nm的Kintex7和Virtex7系列,20nm的Kintex7 Ultrascale和Virtex7 Ultrascale系列,还有16nm的Kintex7 Ultrascale+ 和Virtex7 Ultrascale+系列。其拥有丰富的高速接口,主要用于通信,雷达,信号处理,IC验证等高端领域。

4、全可编程SoC和MPSoC系列,包括有Zynq-7000和Zynq UltraScale+ MPSoC系列FPGA,内嵌有ARM Cortex系列CPU内核。
在这里插入图片描述
在这里插入图片描述
XILINX FPGA型号系列分类参考
XILINX FPGA型号

Altera(阿尔特拉)公司介绍(Intel收购)

业界与Xilinx齐名的FPGA供应商,2015年被CPU芯片届的大佬Intel收购了,因此现在也称为Intel的FPGA。

开发工具

QuartusII。Intel的FPGA软件是Quartus,目前最新的版本已经到了19版本。

分为3个版本:
英特尔® Quartus® Prime 精简版
英特尔® Quartus® Prime 标准版
英特尔® Quartus® Prime 专业版

其中精简版是免费的,无需付费许可,而且内置了modelsim仿真软件。

Altera产品

产品系列:
1、MAXII系列
MAXII 系列为CPLD,Altera以其CPLD闻名。

2、Cyclone系列
最新为Cyclone10,性价比高,类似于xilinx 公司的Spartan系列和Artix系列。

3、Stratix系列
最新为Stratix10,为高端应用,与Xilinx的Kintex、Virtex系列竞争。

4、Arria系列
SOC系列FPGA, 内置ARM Cotex A9的核。

5、Intel的新产品arria 10 fpga系列
支持DDR4存储器接口的FPGA。硬件设计人员现在可以使用最新的Quartus II软件v14.1,在Arria10 FPGA和SoC设计中实现DDR4数据读写。
Altera FPGA型号系列分类参考

Xilinx和Altera产品对比

总的来说,目前国内用的最多的还是xilinx和altera(Intel)的FPGA,但从目前市场上的用户需求来看,xilinx的FPGA使用量又大大超过altera的FPGA,因此建议小白直接从xilinx公司的FPGA开始入门
在这里插入图片描述
在这里插入图片描述
Xilinx:
工具工艺制程,可以分为6系(45nm)、7系(28nm)、UltraSCALE(20nm)、UltraSCALE+(16nm),按照型号系列还可以分为Spartan、Artix、Kintex、Virtex等系列,另外还有嵌入式系统开发的Zynq系列。

Intel:
Intel目前在售的FPGA产品系列主要有MAX系列、Cyclone系列、Arria系列、Stratix系列、Agilex系列以及SoC FPGA系列产品。

两大企业占据近90%的市场份额

Lattice公司(中文:莱迪思)

著名的可编程逻辑解决方案供应商,实力仅次于Xilinx和Altera。2015年Lattice以6亿美元收购Silicon Image公司;基于保护国家战略资产的考虑,16年底美国总统特朗普下达行政指令,宣布停止具有中资背景的私募股权基金(Canyon Bridge)收购美国FPGA芯片制造商Lattice(莱迪思)的交易,要求买卖双方完全、永久性地放弃收购。

开发工具:ISPLEVER

产品介绍:
1、ECP系列为Lattice自己的开发的FPGA系列,提供低成本,高密度的FPGA解决方案,而且还有高速Serdes等接口,适用于民品解决方案居多。
2、ICE系列为收购SilioncBlue的超低功耗FPGA,也曾用在iPhone7里面,实现了FPGA首次在消费类产品中应用,可见其功耗有多低。
3、Mach系列替代CPLD,实现粘合逻辑的最佳选择。作为CPLD的发明者,Lattice在CPLD领域依然表现卓越。

Microsemi(中文:美高森美)

并购了actel,专注于美国军工和航空领域,产品为反熔丝结构FPGA和基于Flash的FPGA为主,具有抗辐照和可靠性高的优势,最近Microsemi又被Microchip(微芯)并购。

开发工具:Libero

产品介绍:
1、基于FLASH的通用FPGA系列,包括有PolarFireMid-Range FPGAs,RTG4Radiation-Tolerant FPGAs,IGLOO2Low-Density FPGAs三个高、中、低端系列。
2、特殊领域应用系列…

“两小”厂家 Lattice和Microsemi主攻的是特殊市场,比如军工、航天市场所用的反熔丝FPGA。反熔丝FPGA价格十分昂贵,只能烧录一次,抗辐照能力比较强。

Xilinx ZYNQ简介

ZYNQ 的全称是 Zynq-7000 All Programmable SoC,也就是说,ZYNQ 实际上是一个片上系统(System on Chip,SoC),ZYNQ 是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC),它将处理器的软件可编程性与 FPGA 的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。与传统 SoC解决方案不同的是,高度灵活的可编程逻辑(FPGA)可以实现系统的优化和差异化,允许添加定制外设与加速器,从而适应各种广泛的应用。

Zynq-7000 系列是 Xilinx 于 2010 年 4 月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理能力与计算性能。这款基于 ARM 处理器的 SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

ZYNQ 的本质特征,ZYNQ 是由两个主要部分组成的:一个由双核 ARM Cortex-A9 为核心构成的处理系统(PS,Processing System),和一个等价于一片 FPGA 的可编程逻辑(PL,Programmable Logic)部分。由于该新型器件的可编程逻辑部分基于赛灵思 28nm 工艺的 7 系列 FPGA,因此该系列产品的名称中添加了“7000”,以保持与 7 系列 FPGA 的一致性,同时也方便日后本系列新产品的命名。ZYNQ 架构的简化模型如下图所示:
在这里插入图片描述
上图中,PS 具有固定的架构,包含了处理器和系统的存储器;而 PL 完全是灵活的,给了设计者一块“空白画布”来创建定制的外设。在 ZYNQ 上,ARM Cortex-A9 是一个应用级的处理器,能运行像 Linux 这样的操作系统,而可编程逻辑是基于 Xilinx 7 系列的 FPGA 架构。

ZYNQ 架构实现了工业标准的 AXI 接口,在芯片的两个部分之间实现了高带宽、低延迟的连接。这意味着处理器和逻辑部分各自都可以发挥最佳的用途,而不会产生在两个分立器件之间的接口开销。与此同时,又能获得系统被简化为单一芯片所带来的好处,包括物理尺寸和整体成本的降低。

FPGA/CPLD设计流程

在这里插入图片描述

硬件描述语言(HDL)

硬件描述语言HDL(Hardware Description Language ) 类似于高级程序设计语言. 它是一种以文本形式来描述数字系统硬件的结构和行为的语言, 用它可以表示逻辑电路图、逻辑表达式,复杂数字逻辑系统的逻辑功能。用HDL编写设计说明文档易于存储和修改,并能被计算机识别和处理.

HDL是高层次自动化设计的起点和基础,目前常用的HDL有VHDL、Verilog HDL、System Verilog和System C(C++语言的硬件描述扩展),VHDL和Verilog HDL是电子设计主流描述语言,同时也是IEEE推出的两种标准。

HDL综合

HDL综合器的作用,是将用HDL语言描述的RTL级电路转化成门级网表。生成的网表是由用导线相互连接的寄存器传输级功能块组成。在这一转化过程中,包含了三个步骤:
(1)转化:将系统的HDL描述,转化为各个功能单元连接的电路结构的门级网表;
(2)优化:根据设计者施加的时序、面积等约束条件,针对实际目标器件的结构将转化的门级网表按一定的算法进行逻辑重组和优化;
(3)映射:根据时序和面积约束条件,从目标器件的工艺库中搜索恰当的单元来构成电路。

综合工具,一般有RC和DC;分别来自cadence和synopsys。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

FPGA详细设计流程

FPGA设计流程是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的设计流程如上图所示:包括设计定义、代码实现、功能仿真、逻辑综合、前仿真、布局布线、后仿真和板级调试等步骤
在这里插入图片描述

设计定义

设计定义阶段主要进行方案验证、系统设计和FPGA芯片选择等准备工作。根据任务要求,评估系统的指标和复杂度,对工作速度和芯片本身的资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。

这个阶段往往会花费大量的时间,这个阶段之后一般已经完成了系统建模,功能划分,模块划分以及设计文档的撰写等工作。

代码实现

代码实现阶段是将划分好的各功能模块用硬件描述语言表达出来,常用的硬件描述语言有Verilog HDL和VHDL。以后的教程中我们主要讲解如何使用Verilog HDL进行FPGA设计。

下面是一个四选一电路的代码实现过程:
在这里插入图片描述
常用的代码编辑器软件由notepad++和UltralEdit等,它们支持几乎所有主流编程语言的高亮显示、代码补全、自定义快捷键等功能,外观漂亮、功能强大,扩展性强,具有丰富的插件包,极大的提高工作效率。

功能仿真

功能仿真是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。这里我们补充一个延迟类型的知识点
在这里插入图片描述
我们知道信号在电路中传输时会有两种延迟:器件延迟和路径延迟。顾名思义,器件延迟是信号在经过器件传输时的延迟时间,路径延迟是信号经过连接线时的延迟时间。上图中信号从a到b的延迟时间为T1+T2+T3+T4+T5,其中器件延迟是T1、T3、T5,路径延迟是T2、T4。在功能仿真中,这些延迟信息都为零。

逻辑综合

逻辑综合的概念是:将高级抽象层次的描述转化成较低层次的描述。

也就是说将语言描述的电路逻辑转化成与门、或门、非门、触发器等基本逻辑单元的互连关系。

还是以四选一电路为例,综合过程将Verilog代码翻译成了门级互连网表。
在这里插入图片描述
综合的概念很重要,利用Verilog 做电路设计时我们总是强调可综合的概念,可综合就是我们的这段代码可以被翻译成门级网表,不可综合就是代码不能被翻译成门级网表。

前仿真

前仿真也叫做综合后仿真,仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去。

因为综合后只能体现基本的逻辑门之间的互连关系,并没有连线长度信息,所以前仿真只能评估门延时带来的影响,不能估计路径延时,前仿真结果和布线后实际情况还有一定的差距,并不十分准确。

目前的综合工具较为成熟,一般的设计可以省略这一步。但如果布局布线后发现电路功能与设计意图不符,就需要回溯到前仿真来确定问题所在。

布局布线

布局布线有时也叫作实现与布局布线,布局布线是将逻辑网表中的门级连接关系配置到FPGA芯片内部的固有硬件结构上。
在这里插入图片描述
布局布线的过程是先将综合后的基本逻辑门映射到FPGA的可编程逻辑块(CLB)中(上一讲中我们知道FPGA中许许多多的CLB组成了巨大的逻辑资源阵列,CLB是FPGA可配置的基础),相关的逻辑配置在临近的CLB中,这就是一个布局的过程;

布线是利用FPGA中丰富的布线资源将CLB根据逻辑关系连接在一起。

布局布线策略有两种:速度优先和面积优先,布局布线时往往需要在速度最优和面积最优之间做出选择。

后仿真

后仿真也称为时序仿真,是将布局布线的延时信息反标注到设计网表中来检测有无时序违规。

经过布局布线后,门与门之间的连线长度也确定了,所以后仿真包含的延迟信息最全,也最精确,能更好的反映芯片的额实际工作情况。

现在我们可以总结一下功能仿真、前仿真和后仿真的区别了:
1、功能仿真:无延迟信息;
2、前仿真:只有门级的延迟;
3、后仿真:门级延迟和连线延迟;

板级调试

我们的FPGA设计不能只在电脑上跑仿真,最终还是要在电路板上应用起来的,设计的最后一步就是板级测试了,将EDA软件产生的数据文件(位数据流文件)下载到FPGA芯片中,进行实际的测试。

FPGA工程师还需要有一定的硬件知识,能够看懂电路板原理图设计和PCB是最低要求了,能够独立设计原理图是最好的了。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只嵌入式爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值