FPGA底层原理结构及内部资源

FPGA底层原理结构及内部资源

    • FPGA组成结构
      • FPGA资源分布图
      • FPGA管脚
      • CLB
      • 触发器(flip-flop)
      • IOB
      • BRAM
    • 总结

FPGA组成结构

博主刚开始接触FPGA时是在大三上EDA实验课,当时就对这种这种芯片的强大好奇,当时实验课用的VHDL语言,当时觉得这种并行的语言很有趣。后续又自学了verilg,从此就迈上了这条不归路,经过几年学习总感觉没啥进步,当初以为自己会用verilog就代表懂了FPGA,对于FPGA结构了解很少。本博文主要介绍FPGA内部组成以及资源。
FPGA内部主要有CLB(可配置逻辑块)IOB(输入输出单元)Block ram,丰富的布局布线资源以及底层嵌入的逻辑支援例如dsp,FIFO等逻辑资源供用。

FPGA资源分布图

博主以xilinx的K7系列的一款FPGA为例介绍:
FPGA底层原理结构及内部资源_第1张图片

FPGA管脚

FPGA底层原理结构及内部资源_第2张图片

CLB

CLB结构如图
FPGA底层原理结构及内部资源_第3张图片
其中CLB又由SLICELSLICEM两部分组成,其中这两部分有些许差异,SLICEL通常用来产生时序与组合逻辑,而SLICEM和还可以作为mem,移位寄存器,以及Multiplexers,例如程序中[15:0]RAMM[15:0]就是该部分组成。这两部分的结构通常由4个6输入的LUT,3个SELMUX2_1,1个CARRY4以及8个DFF组成
SLICEMSLICEL的主要区别在于LUT结构不同
SLICEM中的LUT结构如图
FPGA底层原理结构及内部资源_第4张图片
SLICEL中的LUT结构如图
FPGA底层原理结构及内部资源_第5张图片
因此可以实现6输入或5输入的逻辑函数,有兴趣的同学可以参考哪里不会点哪里。这里博主不再细讲。

触发器(flip-flop)

触发器结构
FPGA底层原理结构及内部资源_第6张图片
以下是博主认为别人写的不错,特意搬运来供大家参考

每个SLICE中有8个触发器。这个8个触发器可分为两大类:4个只能配置为边沿敏感的D触发器(Flip-Flop)和4个即可配置为边沿敏感的D触发器又可配置为电平敏感的锁存器(Flop&Latch)。当后者被用作锁存器的时候,前者将无法使用。
当这8个触发器都用作D触发器时,他们的控制端口包括使能端CE、置位/复位端口S/R和时钟端口CLK是对应共享的,也就是就是说共用的。{CE,S/R,CLK}称为触发器的控制集。显然,在具体的设计中,控制集种类越少越好,这样可以提高触发器的利用率。

内部的FF可以形成4种触发器

原语(Primitive) 功能描述 原语(Primitive) 功能描述
FDCE 同步使能,异步复位 FDRE 同步使能,同步复位
FDPE 同步使能,异步置位 FDSE 同步使能,同置复位

其中FDPE源语的写法如下

FDPE #(
.INIT(1'b0)
)FDPE_inst(
					.Q(Q),
					.C(C),
					.CE(CE),
					.PRE(PRE),
					.D(D)
);

其他几种写法都可以在vivado中的Language Template中找到。

IOB

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
FPGA底层原理结构及内部资源_第7张图片

BRAM

BRAM结构如图
FPGA底层原理结构及内部资源_第8张图片
其中BRAM由两部组成,上部分是18RAMB下半部分为FIFO18。通过原语可以调用该部分资源利用,且不会占用CLB资源。其中原语在vivado中的Language Template中找到。

总结

另外在内部资源中还有MMCM时钟管理单元以及DSP等资源,这里就不再继续叙述,感兴趣的同学可以查阅相关资料。对FPGA有一个清晰的认识对于我们写代码,后续时序分析,以及代码的鲁棒性都有益处。

你可能感兴趣的:(FPGA,资源)