碎碎思 · 2021年09月28日

RTL与LUT的关系理解

image.png
Quartus II EDA工具进行综合

image.png

布局布线后,点击“Chip Planner”,Chip Planner打开后可以看到在版图模型中有一个块蓝色区域的颜色变深,说明有该区域的资源被占用,我们知道这是一个逻辑阵列块LAB,我们将该区域放大

image.png

放大后可以看到蓝色变深的区域中有16个小块,这16个小块就是LE(它们的走线时延的关系如下:同一个LAB中(最快) < 同列或者同行 < 不同行且不同列),其中只有一个LE的颜色变是蓝色的,说明该处的资源被使用了,双击蓝色的LE即可观察其内部的结构

image.png
双击打开LE后内部的结构如下图所示,其中蓝色显示的是真实使用到的结构,灰色的是未使用到的结构,我们可以看到有两个输入和一个输出,与RTL代码的描述是对应的,红色框就是查找表LUT。

image.png

依次打开上图红色箭头标记的5个LE

image.png
image.png
image.png
image.png
image.png

可以看到前4个LUT是b[0]~b[15],第5个LUT是Equal,结合Chip Planner视图可以初步推理出,16bit的b每连续的4个输入用一个LUT,输出的结果传到第5个LUT。再结合Technology Map Viewer(Post Mapping)视图可知,前4个LUT其实是存储了0000_0000_1101_0101,也就是16’hd5这个值,然后每连续的4个一组,与输入分别比较,如果LUT的值与输入的值相等则LUT的输出为1,如果不相等输出为0,所以第5个LUT的内部输入名为“Equal”我们也就不难理解了。而第5个LUT存储了1111,当前4个LUT与输入的比较结果与第5个LUT中存储的值比较,如果相等则输出0,如果不相等则输出1。

选中第五个LE,点击Generate Fan-in Connection也可以显示出16bit的b每连续的4个输入用一个LUT,输出的结果传到第5个LUT

image.png

目前大部分FPGA都基于6输入LUT的(本例选用FPGA较老,是基-4 LUT),如果一个输出对应的判断条件大于四输入的话就要由多个LUT级联才能完成,这样就引入一级组合逻辑时延,我们要减少组合逻辑,无非就是要输入条件尽可能的少,这样就可以级联的LUT更少,从而减少了组合逻辑引起的时延。

例如:一个32位的计数器,该计数器的进位链很长(cnt<=cnt+32'd1),必然会降低工作频率,我们可以将其分割成4位和8位的计数,每当4位的计数器计到15后触发一次8位的计数器,这样就实现了计数器的切割,也提高了工作频率。

原文:FPGA 的逻辑
作者:碎碎思

相关文章推荐

推荐阅读
关注数
10512
内容数
513
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息