1.3 7系列FPGA CLB

1 7系列FPGA xc7a35t

使用的器件为Artix-7系列的FPGA,型号为xc7a35t, 在Artix-7中处于中端。
5200个SLICE,其中3600个SLICEL,1600个SLICEM。(Slices分为SliceL和SliceM,一般情况下,SliceL>SliceM数)每个SLICE包含4个6输入查找表LUT,共有20800个查找表。Artix-7A35T可以分配400Kb的分布式RAM,200Kb的移位寄存器,41,600个触发器。

SLICE由哪些部分组成
1.触发器和锁存器
2.进位链
3.查找表LUT

2 CLB(可配置逻辑块)

CLB组成

1CLB=2SLICE
1SLICE = 4*LUT6+8*storage elements+3MUX+CARRY4进位链
(LUT,寄存器,MUX,进位链,几乎所有的FPGA器件的SLICE都是这四大件组成,只是组合不太一样而已)

1个CLB里面有2个SLICE,SLICE可分为SLICEM和SLICEL,M代表memory,L代表logic,顾名思义,带M的SLICE可以用于组成disturbuted ram和shift register,带L的SLICE用于逻辑资源。

1个SLICE中有4个LUT6,8个寄存器,3个2选1MUX和一个4bit的加法器进位链。

2.1 LUT(look up table)

查找表是FPGA最小组成单元,有6位输入,2个独立输出,功能类似于ROM,可以理解为通过6位“地址线”来索引输出。LUT内部有真值表,可以作为一个有6输入1输出的布尔函数。

此外,1个SLICE除了包含LUT,还有3个多路选择器(F7AMUX, F7BMUX, and F8MUX),F7的意思是与LUT6和1个额外输入组成1个7输入选择器,F8代表与LUT6和2个F7MUX额外输入共组成8输入选择器。可参见如下示意图:
在这里插入图片描述
1.理解LUT与真值表的关系,明白FPGA是用LUT来替代门电路的,以及这样做的好处。

   只要逻辑表达式是6位以内输入1位输出,无论编译后门电路复杂还是简单,综合后的结果都是一个LUT6。
   当然因为LUT6的结构的原因,当5位相同输入2位输出时,综合后的结果也是一个LUT6。

	LUT6中INIT存放的结果初始值就是我们逻辑表达式真值表的结果,这就是LUT与真值表之间的关系啦。
	同时这也是FPGA最为“灵性”的地方,它用LUT来实现各式各样的门电路功能。
	只要是6位以内输入,1位输出的门电路,无论它多么的复杂,只需要我们修改LUT6的INIT值,都可以将其与门电路一一映射。
	
	LUT6本质上是64x1(深度为64,位宽为1)的ROM,因为当我们把它的输入I5~I0看作ROM的6根地址线,那么O就是当前输入地址所输出的结果。

2.理解FPGA 是如何通过两个相同输入的LUT5和一个MUX组成LUT6的。
在这里插入图片描述
参考文档:FPGA从入门到精通(2) - LUT

2.2 存储单元

每个Slice有8个存储单元,4个可配置成DFF或者锁存器,另外4个只能配置为DFF。
在这里插入图片描述
控制信号
而SliceL与SliceM最大的区别就是没有分布式RAM和移位寄存器。

2.3 分布式RAM(仅限SliceM)

SLICEM可以配置成分布式RAM,多bit的情况需要增加相应倍数的LUT进行并联。
在这里插入图片描述
在这里插入图片描述
分布式RAM比块RAM有更好的灵活性,但块RAM的资源比较宝贵,分布式RAM适用小规模存储场景。

2.4 移位寄存器(仅限SliceM)

SLICEM在不使用触发器的情况下可以设置成32bit的移位寄存器,4个LUT可级联成128bit的移位寄存器。SliceM之间级联还可形成更大的移位寄存器。
在这里插入图片描述

2.5 多路复选器MUX

1个LUT可配置成4:1MUX
在这里插入图片描述
2个LUT最多可配置成8:1MUX
在这里插入图片描述
4个LUT最多可配置成16:1MUX
在这里插入图片描述

2.6 加法器进位链(CARRY4)

SLICE另一个重要资源就是加法器进位链,每个SLICE中有一个4bit加法器进位链,每bit都由一个进位MUX和一个异或门组成,也叫CARRY4,可以与前后级SLICE组成更长的进位链,可实现加法/减法器时生成进位逻辑,也可产生一般逻辑。其结构如下图所示:
在这里插入图片描述
CARRY4进位链原理

假设有24bit加数:a[3:0],b[3:0]
S0~S3为输入端异或,即S=a^b;
DI0~DI3为其中1个输入,比如D=a;
CIN为上一级CARRY4的进位端;
O0为对应bit位加法结果:O=S^CIN=a^b^c,也就是说2输入和CIN有奇数个1时,对应bit输出1,符合加法器原理;
CO为加法器进位端,通过上图可知:C0 = ~(a^b)&a+a^b&c;其中c为上一级的进位端

大家可以列一个真值表,发现其可实现加法器的进位端输出,只是不是我们常用的化简公式而已。

参考资料:大佬们的链接FPGA基础结构
FPGA从入门到精通(2) - LUT
FPGA的基础架构,什么是CLB?

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于FPGA(Field-Programmable Gate Array)的CLB(Configurable Logic Block)测试,可以执行以下步骤: 1. 配置测试环境:准备好适用于FPGA的测试工具和开发环境。这可能包括Xilinx Vivado、Intel Quartus Prime等。 2. 设计测试模块:根据您的需求,设计一个用于测试CLB的模块。这可以是一个简单的逻辑电路,也可以是更复杂的组合电路。 3. 生成测试向量:根据设计的测试模块,生成一组适当的输入测试向量。这些向量应该包含各种可能的输入组合,以验证CLB的功能和性能。 4. 编译和综合:使用测试工具,将设计和测试向量编译成适合FPGA的比特流文件。这个过程通常包括将设计映射到FPGA的逻辑资源,并生成适当的时序约束。 5. 下载和配置:将生成的比特流文件下载到目标FPGA设备中,并进行配置。这样,CLB就会被正确地实现和配置在FPGA上。 6. 运行测试:使用适当的测试工具和方法,对已经配置好的FPGA进行测试。这可能包括检查输出结果是否与预期相符,测量时序延迟等。 7. 分析和调试:如果测试发现问题,可以使用调试工具和技术来分析和修复问题。这可能涉及查看波形、调整时序约束、重新设计电路等。 需要注意的是,具体的CLB测试方法可能因FPGA厂商和工具而异。因此,在进行CLB测试之前,建议参考相关的FPGA厂商文档和测试指南,以获取更详细和准确的信息。 希望这些信息能对您有所帮助!如果您有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值