FPGA-01-关于ZYNQ

该博文记录学习FPGA的演变过程、主要功能、性能差异等基础知识(感觉并没有什么参考意义….

PLD器件

FPGA: Field Programmable Gate Array,即现场可编程门阵列,属于可编程器件PLD(Programmable Logic Device),类似的有PLA、PAL、CPLD等器件。

PLA与PROM

PLA与PROM为早期反熔丝型PLD电路。PLA(Programmable Logic array)中通过与门、非门构成“与平面”,“或平面”,以及一次性的编程矩阵。

image can't load. PLA内部结构

可编程只读存储器PROM(Programmable Read-Only Memory)与PLA类似,均是通过“与连接矩阵与“或连接矩阵”组成,但是PROM的结构上与连接矩阵固定,仅”或矩阵”可进行一次编程,如下图。

image can't load. PROM内部结构

PAL与GAL

在PLA与PROM的基础上又延伸出其他两种类型,即PAL(Programmable Array Logic)和GAL(Generic Array Logic)。

其中PAL相对于PROM结构类似,只是PAL是仅”与连接矩阵”可编程,仍然为反熔丝工艺,仅可编程1次。

PAL根据输出电路工作模式可分为三类:

  • 三态输出
  • 寄存器输出
  • 互补输出
image can't load. PAL内部结构

GAL相对于PAL改进:

  • CMOS工艺,电可擦除,可多次编程
  • 可编程的输出逻辑宏单元OLMC(Output Logic Macro Cell)

其中OLMC可通过编程控制GAL输出,覆盖PAL的三种模式。

CPLD与FPGA

复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)可以看作若干PLA与可编程连接矩阵的集合。内部结构如图。

image can't load. CPLD内部结构

FPGA内大量使用LUT查找表和寄存器,可分为SRAM、反熔丝、Flash三种类型,包括可编程的:

  • 逻辑块
  • 布线资源
  • IO口
image can't load. FPGA与CPLD对比

FPGA的应用场景对比单片机和ARM,主要优势9是灵活高效、高吞吐量、低批量延时、快速并行运算、可重构、可重复编程、可实现定制性能和定制功耗。

ZYNQ

Xilinx内的ZYNQ系列芯片内包括一块Cortex-A9的硬件ARM处理器,称为为PS。其余的逻辑部分,称为PL,PL上可以使用逻辑块搭载MicroBlaze软核处理器。

PS 端

ZYNQ内除去ARM外,还包括应用处理单元APU(Application Processing Unit)、扩展外设、cache存储器、存储器接口、互联接口、时钟发生电路。

APU

image can't load.
APU框架
  • 双ARM核、NEONTM媒体处理引擎MPE(Media Processing Engine)、浮点计算单元FPU(Floating Point Unit)、内存管理单元MMU(Memory Management Unit)、一级cache存储器(指令+数据)
  • 一致性控制单元SCU(Snoop Control Unit):ARM与OCM和二级cache之间的连接桥。可用加速一致端口ACP(Accelerator Coherency Port)管理PS与PL的访问
  • 二级cache、片上存储器OCM(On Chip Memory),包括256kB的RAM和128kB的BootRAM。

存储器接口

ZYNQ-7000系列存储器接口包括动态+静态口。

  • 动态存储器控制器

    1. 核心存储控制器和调度器DDRC
    2. AXI存储器端口接口DDRI
    3. 数字PHY及控制器DDBP,可用于DDR2/3、DDR3L、LPDDR2
  • 静态存储控制器

    SMC(Static Memory Controller),可用作NAND闪存控制器、或并口存储器控制器,支持NAND闪存、NOR闪存、异步SRAM。

  • QSPI

    程序烧录,程序固化。

外部接口

PS和外部通信主要通过复用的输入/输出MIO(Multiplexed Input/Output,MIO)实现,直接连接在PS端。但扩展的MIO即EMIO需要通过PL端转接,QSPI、USB、SMC不适用于PL的EMIO接口。

出去4组32位的GPIO外,对外接口还包括各2组:SPI、I2C、CAN、UART、SD、USB、GigE(Ethernet)。

PL端

Xilinx FPGA芯片的组成部分:可编程输入输出单元IOB、可配置逻辑块CLB、嵌入式块RAM、布线资源、底层内嵌功能单元、底层内嵌专用硬核等。

IOB

需要注意,FPGA每个Bank的VCC电压不同,一个Bank仅有一个电压。

I/O组被分类为高性能HP(High Performance)和高范围HR(High Range)。

  • HP:VCC为1.8V,常作连接存储器和其他芯片的高速接口
  • HR:VCC为3.3V,适合各种IO标准

HP与HR均支持单端、差分输入,具体可以查阅引脚说明。

每个IOB包括IOSERDER,可作串转并或并转串。

CLB

CLB指可编程逻辑块,逻辑单元最小规模。Slice片是CLB的子单元。

ZYNQ的片是由4个查找表(LUT)+8触发前+其他逻辑组成的。

BRAM

嵌入式块RAM,用于生成RAM、ROM、FIFO及移位寄存器等常用的存储模块。

ZYNQ的BRAM由60个存储块组成:

  • 每个块RAM由2个18kB的BRAM组成;
  • 以块为单位使用;
  • 3类分组,即BRAM(36kB);BRAM(18kB)+BRAM(18kB),BRAM+FIFO。由于仅包括1个FIFO Logic,只能生成一组FIFO控制信号。

使用块RAM即在片内用小物理空间存储大量数据

硬核

ZYNQPL端内嵌XADC,即两个模数转换器。且有接口可以连接至PS端。

————————— End —————————

大梦谁先觉,平生我自知。–《三国演义》