FPGA和外围接口-第一章 爱上FPGA
第1章 爱上FPGA
这章在原计划中是没有的,网上关于FPGA的介绍不说有万篇,千篇文章是有的,所以这章简介部分会很简洁,但是对于Xilinx和Intel家的FPGA主流芯片选型指导和命名规则会详细介绍,因为这部分会是入门遇到的第一个问题。这章第二个问题会是资源的查找,一百篇文章所能遇到的问题都不一定会解决你所面临的问题,所以接下来会分享下网上常见的资源网站和论坛。在这里感谢网上各位大神和前辈的指导资料,在此一一谢过,本系列文章主要是以交流和学习为主,欢迎各位转载,转载请注明下出处,谢谢! PS:阅读过程中,有什么问题或者建议可以在微信公众号:OpenFPGA 后台留言,一定悉心听取各位前辈和大佬的建议。 |
1.1 FPGA简介
什么是 FPGA ?
FPGA是FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
什么是 CPU ?
中央处理单元(CentralProcessing Unit),是整个系统的核心,也是整个系统最高的执行单位。它负责整个系统指令的执行,数学与逻辑的运算,数据的存储与传送,以及对内对外输入与输出的控制。
什么是 MCU(单片机)?
微控制单元(MicrocontrollerUnit;MCU) ,又称单片微型计算机(Single ChipMicrocomputer )或者单片机,是把中央处理器(Central ProcessUnit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
什么是 ASIC ?
ASIC(Application Specific Integrated Circuits,专用集成电路),是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。
这四者有什么区别呢?
CPU不用说了,就是用于处理数据的已经固化的数字电路;MCU里边装了个CPU还有其它各个外设,这个都是已经作死了的,不能再修改;ASIC是针对特定用途,做好了相应的电路逻辑,然后在里边作死了,不能更改;而FPGA里边全是能够构成数字电路的资源。
FPGA有什么特点?
自由:可以用它构建CPU(资源足够的话可以构建很多个同时用都行),构建纯数字外设(也可以结合外部构建数模混合等)。
灵活:而它的资源是可以用画电路图的方式来配置的(可反复擦写),而这种方法没有代码的方式好,所以现在基本上都是用HDL语言来描述它内部数字电路(注意,是描述,相当于画电路)。而其它三种都是固定的内部逻辑,不能更改。
强大:所以FPGA可以做出一些芯片的功能,也可以把单片机在其内部实现,这样假设一块板上是单片机和一堆数字芯片的话,就可以用一片FPGA芯片来实现整个系统了。
高速:而且单片机的速度低,最高100多兆,而FPGA轻松上几百,是单片机望尘莫及的。
FPGA的工作原理呢?
FPGA采用了逻辑单元阵列LCA(Logic CellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogic Block)、输出输入模块IOB(Input OutputBlock)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
OK,这部分就这样,详细的介绍,例如结构、工作原理等,都可以在网上找到,而且会让你耳目渲染。 |
1.2 Xilinx FPGA和Intel FPGA区别
大部分文章都会以一种平台FPGA或者Xilinx或者Intel为主,但是本次不会严格区分两个平台,不管Quartus II还是ISE(Vivado)都只是一种工具,如果学习FPGA是以学习工具为主,那就把“路”走偏了。碎碎思认为任何一种语言(Python、C、PHP等)包括Verilog HDL和VHDL核心都是编程思想,你只要编程思想学会了,这门语言才是真正的入门了。 |
两家FPGA的本质区别主要有两方面:1.基本逻辑资源;2.内部基本架构。
从使用角度来看,相对而言Xilinx FPGA要比Intel FPGA好用一些,但是Intel FPGA也相对便宜一些。Xilinx FPGA的短线资源非常丰富,这样在综合实现的时候,布线的成功率很高,尤其是逻辑做得比较满的时候。
Intel FPGA的短线资源经常不够用,经常要占用LE(逻辑单元在Intel FPGA叫作LE(Logic Element,LE),在Xilinx FPGA中叫作LC(LOGIC CELL),下面会详细介绍。)来充当布线资源,但是当你对FPGA理解的更深一点的时候,也能把他的性能发挥得很好。
1.2.1.基本逻辑资源对比
要比较 Xilinx 和 Intel 的 FPGA,就要清楚两个厂商 FPGA 的结构,由于各自利益,两家的 FPGA 结构各不相同,参数也各不相同,但可以用统一单位去衡量,那就是 LUT(Look-Up-Table)查找表。
以 Intel 的 Cyclone IV E系列的 EP4CE15,以及 Xilinx 的 Spartan-6 系列的 XC3S500E 为例。以下表格都可以参考芯片的Datasheet。
Cyclone IV E
图 1‑1 Cyclone IVE 系列资源列表
其中,EP4CE15有15408个LEs。
图 1‑2 Spartan-6 系列资源列表
其中,XC6SLX45有43661个LCs。
其中 Intel 的 LE 和 Xilnx 的 LC 对应于查找表(LUT)的结构。
图 1‑3 CycloneIV E系列LE结构
从图1-3 Cyclone IVE系列LE结构可以知道 1 LE = 1 LUT。
图 1‑4 Spartan-6系列SLICEM结构
从图1-4 Spartan-6 系列SLICEM结构可以知道:
1 CLB =4 Slice=9 LC。
Logic Cell = 4-input Look-Up Table (LUT) + a ‘D’flip-flop;
Datasheet 上有公式: "Equivalent Logic Cells" equals "TotalCLBs" x 8 Logic Cells/CLB x1.125 effectiveness。
即有: 9LEs/CLB 。
从而可以知道 Xilinx 和 Intel FPGA 逻辑资源的对应关系:
(为了统一度量衡(感觉像 QSH 一样),业界一般会归结到 BLM(Basic Logic Module)1 BLM= 1 LUT4(四输入查找表)+1 寄存器(可以配置成 1 触发器 DFF 或 1 锁存器)+多路复用器 mux。
1 BLM= 1 LC(Xilinx)=4/9 Slice(Xilinx)= 1/9 CLB(Xilinx)=1LE(Intel)=1LUT(Intel)=0.125 LAB(Intel) =2.25 Tile(Actel)。
于是就可以知道 Intel 的 Cyclone IV 系列的 EP4CE15有15408个LEs;Xilinx 的Spartan-6 系列的 XC6SLX45 有 43661个LCs,就有43661 个 LUT(LEs)。
1.2.2.内部基本架构
从1985年Xilinx公司推出第一片FPGA到现在,FPGA的使用已经有近30年的历史了。目前主流市场的FPGA主要还是Xilinx和Intel(2015年12月Intel公司斥资167亿美元收购了Intel公司,下面统一用Intel。)两大系列,下面分别来介绍下它们各自的基本结构组成。
1)Xilinx FPGA内部基本架构
Xilinx的FPGA主要由以下单元结构组成:可配置逻辑块(CLB)、时钟管理模块(CMT)、存储器(RAM/FIFO)、数字信号处理模块(DSP)和一些专用模块。以Virtex-5为例,简单介绍下各模块的功能。
1、CLB是FPGA中组成设计逻辑的主要资源,也是电路设计中工作的主要对象,下面对CLB的内外结构做一个简单介绍。
FPGA的逻辑就是由阵列排布的CLB实现的,每个CLB单元都和一个开关阵列相连,并受其控制以实现逻辑,如下图所示
图 1‑5 CLB单元结构
每一个CLB中包含有两个基本结构(Slice),每个基本结构中包含4个查找表(LUT)、4个存储单元、广函数多路器(Wide_function Multiplexer)和进位逻辑,这种基本结构(Slice)称为SLICEL。另外,有些基本结构(Slice)中还包含使用RAM存储数据的功能和使用32位寄存器移位的功能,支持这些功能的基本结构称为SLICEM。
2、时钟管理模块(CMT)
时钟管理模块(CMT)用于产生高质量的时钟,以Virtex-5系列器件为例,CMT包括两个数字时钟管理单元(DCM)和一个锁相环电路(PLL)。
3、存储器(RAM/FIFO)
现代Xilinx的FPGA都有内部的存储器块,以Virtex-5为例,内部包含若干块RAM,每一块36KB,并且RAM的大小可以灵活配置。Virtex-5内的RAM是同步的双口RAM,并且可以配置为多速率的FIFO存储器,极大地提高了设计的灵活性。
4、数字信号处理模块(DSP)
大多数的FPGA产品都提供了DSP。
5、其他专用模块
除了上述模块外,在现代的Xilinx的FPGA产品中还有一些其他专用模块,例如:Rocket IO千兆位级收发器、PCI Express端点模块和三态以太网MAC模块等。
2)Intel FPGA内部基本架构
Intel公司的产品一般包括如下单元结构:逻辑阵列模块(LAB)、TriMatrix存储器模块(RAM)、数字信号处理模块(DSP)和锁相环模块(PLL)。下面以StartixII 器件为例说明Intel 公司产品的结构。
1、逻辑阵列模块(LAB)
逻辑阵列模块(LAB)的主要结构是8个适应逻辑模块(ALM),还包括一些进位链和控制逻辑等结构。适应逻辑模块(ALM)是StratixII器件的基本模块,其结构如下图。
图 1‑6 ALM单元结构
每个ALM中都包含了两个可编程的寄存器、两个专用全加器、一个进位链、一个共享算术链和一个寄存器链。需要注意的是,在上图所示的组合逻辑块(Combinational Logic)中包含了两个4输入4 查找表(LUT)和4个三输入的查找表。
2、存储器模块(RAM)
StratixII器件具有TriMatrix存储结构,它包括3种大小的嵌入式RAM块。TriMatrix存储器包括512位的M512块、4Kb的M4K块和512Kb的M-RAM块,每个都可以配置支持各种特性。
3、数字信号处理模块(DSP)
DSP块结构是为实现多种最大性能和最小逻辑资源利用率的DSP功能而优化的。
4、锁相环(PLL)
StratixII器件具有多达12个锁相环(PLL)和48个独立系统时钟,可以作为中央时钟管理器满足系统时序需求。
以上可以看出,Xilinx与Intel的FPGA的结构最大不同还是其逻辑单元部分:Xilinx的逻辑单元基本组成为可配置逻辑模块(CLB),而Intel的为LAB,但更深一层讲,CLB和LAB里面也都是由LUT、触发器等构成的。两个公司的FPGA组成各有特点,这也决定了它们的FPGA产品在功能上各有特点。
总结一下:
Xilinx FPGA独有可配置逻辑块(CLB)/Slice |
Intel FPGA独有逻辑阵列模块(LAB) |
PS:今天就写到这里,后面更新会比较慢,等关注人数再多一点,可能会建立个群,供大家交流。
本文分享自微信公众号 - OpenFPGA(OpenFPGA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4583591/blog/4636959