LinCoding

【原创】FPGA内部基本结构

0
阅读(776) 评论(11)

【主题】:FPGA内部基本结构

【作者】:LinCoding

【时间】:2016.12.13

【声明】:转载、引用,请注明出处

      总结自《Altera FPGA/CPLD设计 基础篇》第二版。

FPGA的基本结构:

FPGA的基本组成有:可编程I\O单元、基本可编程逻辑单元、内嵌RAM块、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。

1、可编程I\O单元:

可编程I\O单元通过软件可适配不同的电气标准与物理特性。

2、基本可编程逻辑单元:

基本可编程逻辑单元是FPGA可编程逻辑的主体。FPGA一般是基于SRAM工艺。其基本可编程逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Register)组成。FPGA内部的LUT一般为4输入,主要完成纯组合逻辑功能。而内部寄存器结构相当灵活,可配置为带同步、异步复位或置位、时钟使能的触发器(FF,Flip Flop),也可配置为锁存器(Latch)。FPGA一般依赖寄存器完成同步时序逻辑设计。

比较经典的基本可编程逻辑单元的配置是一个寄存器和一个查找表。但不同厂商的寄存器和查找表的内部结构有一定差异,而且寄存器和查找表的组合模式也不同。

(1)Alerta的可编程逻辑单元通常被称为LE(Logic Element,逻辑单元),由一个Register和一个LUT组成。而Altera的大多数FPGA又将10个LE有机组合起来,构成更大的逻辑功能单元——逻辑阵列模块(LAB,Logic Array Block),LAB中除了LE还包含LE间的进位链、LAB控制信号、局部互连线资源、LUT级联链、寄存器级联链等连线和控制资源。

(2)Xilinx的可编程逻辑单元被称为Slice,由上下两部分组成。每部分都由一个Register和一个LUT组成,被称为LC(Logic Cell,逻辑单元),两个LC间有一些共用逻辑。可以完成LC之间的配合与级联。

(3)Lattice的可编程逻辑单元叫PFU(Programmable Function Unit,可编程功能单元),由8个LUT和8—9个Register组成。

一般使用器件的Register和LUT的数量衡量器件的规模比较准确。

3、内嵌RAM块:

FPGA的内嵌RAM块可以灵活配置为单端口RAM(SPRAM,Single Port RAM),双端口RAM(DPRAM,Double Port RAM),伪双端口RAM(Pseudo DPRAM),CAM(Content Addressable Memory),FIFO(First Input First Output)等常用存储器结构。

FPGA中没有专用的ROM硬件资源,实现ROM的思路是对RAM赋予初值,并保持该初值。

CAM,即内容地址存储器。CAM这种存储器在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口相同的所有内部数据的地址。

总之,RAM是一种根据地址读、写数据的存储单元,而CAM返回的是与端口数据相匹配的内部地址。

FPGA内部实现RAM、ROM、CAM、FIFO等存储结构是基于内嵌RAM块的,并根据需求自动生成相应的粘合逻辑(Glue Logic)以完成地址和片选等控制逻辑。

Xilinx常见的RAM块大小是4Kbit和18Kbit两种结构,Lattice常用的RAM块大小是9Kbit,Altera的RAM块最为灵活,一些高端器件内部同时含有两种RAM块结构,分别是M9K RAM(9Kbit),M-144K(144Kbit)。

除了RAM外,Altera、Xilinx和Lattice的FPGA还可以灵活的将LUT配置成RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM(Distributed RAM)。

4、丰富的布线资源

布线资源连通FPGA内部所有单元,连线的长度和工艺决定了信号在连线上的驱动能力和传输速度。有以下三种布线资源可供利用。

(1)全局性的专用布线资源:用来完成器件内部的全局时钟和全局复位\置位的布线。

(2)长线资源:完成器件Bank间的一些高速信号和一些第二全局时钟信号的布线。

(3)短线资源:完成基本逻辑单元之间的逻辑互联和布线。

(4)在基本逻辑单元内部还存在各式各样的布线资源和专用时钟、复位等控制信号线。

5、底层嵌入功能单元

通用程度较高的嵌入功能模块,如PLL(Phase Locked Loop),DLL(Delay Locked Loop),DSP和CPU等。

Altera芯片集成的是PLL,Xilinx芯片主要集成的是DLL,Lattice的新型FPGA同时集成了PLL与DLL以适应不同的需求。

Altera芯片的PLL模块分为增强型PLL(Enhanced PLL)和快速PLL(Fast PLL)。

Xilinx芯片DLL的模块名称为CLKDLL,在高端FPGA中CLKDLL的增强型模块为DCM(Digital Clock Manager,数字时钟管理模块)。

6、内嵌专用硬核

       内嵌专用硬核的通用性相对较弱,不是所有FPGA器件都包含硬核。


       FPGA内部也有两个阵营:一方面是通用性较强,目标市场范围很广,价格适中的FPGA;另一方面是针对性较强,目标市场明确,价格较高的FPGA。


  1. 请教下,LinCoding用过microblaze软核吗?官网列出的这个性能也就比mcu强点,远远不如zynq的硬核啊。再加些网口等外设,不知道用哪个7系列芯片比较好?

    http://china.xilinx.com/products/design-tools/microblaze.html

  2. 写的不错,有xilinx的就更好了.

  3. 写的不错,少盲了

  4. 挺好的总结。赞

  5. 看贴,评论是一种美德 哈哈

  6. 扫盲了,学习了,mark

  7. 扫盲了,学习了,mark

  8. 赞,澄清了之前的一些模糊概念

  9. 基础的知识掌握与否,决定了硬件设计的水平。

  10. @AET-程品豹   

    越基础的 知识越让人忽视,往往这些知识才是解决问题的根本

    豹哥说的在理

  11. 越基础的 知识越让人忽视,往往这些知识才是解决问题的根本