0-1学习FPGA之底层资源——LUT

目录

碎碎念!

1. 什么是LUT?

2.  LUT 与传统逻辑门的对比

3. LUT可以怎么用?

3.1 实现组合逻辑

3.2 搭建LUT_RAM(分布式RAM)

3.3 移位寄存器

碎碎念!

开这个专栏是为了重新巩固基础,温故而知新,顺便查漏补缺弥补之前的知识漏洞~内容会尽量写的清晰,0基础的小伙伴也能看懂,欢迎交流~如有问题请艾特我^ w ^

1. 什么是LUT?

LUT(look-up table)就是查找表,是FPGA中实现组合逻辑功能的基本单元。可以看做一个小SRAM,存储逻辑真值表,输入看做地址线,读取出对应的逻辑输出结果。(后面有举例)

LUT有LUT1、LUT2、LUT3、LUT4、LUT5、LUT6。分别指代的输入口的数量,输入口可以作为地址去读写"RAM"内的数据。譬如LUT4,代表4个输入地址Bit,可以读写总共0000~1111,也就是0~15个地址的bit数据。

图1.1 LUT4真值表

不同的LUT之间可以级联,LUT1可以和LUT1~6级联,一般来说LUT层级不要超过6,否则可能有时序问题,若LUT层级超过6就需要中间插入寄存器、降低频率的方式改善时序。

通过设置LUT的初始值来实现逻辑,譬如实现2bit的A,B是否相等,可以这样安排输入:I3=A[1]、I2=A[0]、I1=B[1]、I0=B[0],若输入出现有A=B的情况,就在该输入地址对应的位置上写入1。

A=B有以下情况:0000、1111也就是在0地址和15地址上写入1,其余为0,初始值应该设置为16'b1000_0001代码例化:

LUT4 #(
.INIT(16'b1000001) // Logic function
)
LUT4_inst (
.O(O), // 1-bit output: LUT
.I0(B[0]), // 1-bit input: LUT
.I1(B[1]), // 1-bit input: LUT
.I2(A[0]), // 1-bit input: LUT
.I3(A[1]) // 1-bit input: LUT
);

当输入为0000/1111时输出为1,A=B。

2.  LUT 与传统逻辑门的对比

传统逻辑门为与或非等逻辑门,EDA工具首先将逻辑综合为门级电路,也就是RTL级通过与或非逻辑门搭建的电路,最后综合为LUT,为什么FPGA选择使用LUT查找表而不是直接选择通过门电路实现逻辑呢?这是一个很有意思的问题~我也去网上搜寻了这个问题,找到两个觉得很不错的回答,能满足我现在的疑问~以下是链接:

用大白话从底层理解FPGA——LUT(干货) - 知乎

为什么FPGA使用LUT而不是传统的逻辑门?-腾讯云开发者社区-腾讯云

我总结一下,第一个是从性能的角度解释:倘若使用门电路,每个逻辑门都有不同的时延,那么在一段组合逻辑中门逻辑越多,时延越长,为满足时序要求,不得不延长周期,整个系统的速度很容易有瓶颈。

而使用LUT则可以很好解决延时,无论多少逻辑门,只要输入位宽确定,就能确定组合逻辑中LUT的层级(级联的数量),LUT可以看成SRAM,内部早已写好逻辑输出结果,所以只要逻辑运行时给到输入,就能越过门电路的延时直接读取到输出结果。


第二个从FPGA的底层原理入手:FPGA(Field Programmable Gate Array)为现场可编程门阵列,是一种半定制电路,解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。 FPGA可以反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构,也就是LUT查找表。LUT本质是SRAM,里面的初始值可以包含各种与或非门级电路的逻辑,因此FPGA可以做到不需要改变电路就可以重复改变逻辑。很神奇

~

3. LUT可以怎么用?

LUT一般来说有两种SLICEL、SLICEM。SLICEL的LUT只能用于实现组合逻辑,SLICEM的LUT有时钟输入口,可以实现数据存储、组合逻辑,内部结构比SLICEL的LUT更复杂。

3.1 实现组合逻辑

如第1点中的例子所示,通过改变初始值实现组合逻辑;

3.2 搭建LUT_RAM(分布式RAM)

FPGA中最多的就是LUT,在数据量不是很大的时候可以直接使用LUT搭建分布式RAM,节省BRAM。1个BRAM至少为18Kbit,倘若一些少量的存储需求就要花费一个BRAM实在浪费,BRAM在FPGA中资源有限。并且LUT搭建的分布式RAM读写为0周期,也能节省时间。

LUT_RAM都有IP可以直接用,具体使用看对应板卡的IP手册。

3.3 移位寄存器

除了寄存器外,通过级联多个LUT(SLICEM)可以实现多位宽的移位寄存器。SLICEM里的LUT带CLK时钟输入口,一个LUT6可以作为32位的移位寄存器。时间有点晚了,后续我再具体写这个如何实现,并补充SLICEL、SLICEM的LUT的区别~~^ w ^

Read more

DataX-web安装使用教程

DataX-web安装使用教程

1. 环境准备 * MySQL (5.5+)  必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 * JDK (1.8.0_xxx)  必选 * Python (2.x) 必选 (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) ,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造 2.DataX安装 2.1 下载DataX安装包 DataX详情介绍:https://github.com/alibaba/DataX/blob/master/introduction.md DataX官网下载地址:https://github.com/alibaba/DataX 网盘地址链接:https://pan.

全员DeepSeek时代,前端能做些什么?

全员DeepSeek时代,前端能做些什么? 2025–2026 年,随着 DeepSeek V3 / R1 系列(尤其是代码生成、前端页面生成能力)的爆发式提升,“全员DeepSeek”已经从梗变成了很多团队的真实工作流。 AI 正在快速吃掉“机械重复的前端编码”,但这并不意味着前端要凉,反而是一次非常大的角色升级机会。 下面从现实、趋势和可执行路径三个层面给你讲清楚:前端在 DeepSeek 时代到底能/该干什么。 1. 先认清现实:DeepSeek 已经抢走了哪些活? 根据大量实测和社区反馈(2025 年下半年尤为明显),DeepSeek 系列在以下场景已经非常实用: * 常规 CRUD 后台管理系统页面(表单、表格、抽屉、树形结构) * 中后台常见的组件组合(搜索 + 列表 + 分页 + 操作栏) * Tailwind + React / Vue

WebUI界面优化:Emotion2Vec+ Large自定义主题部署实战

WebUI界面优化:Emotion2Vec+ Large自定义主题部署实战 1. 为什么需要优化这个WebUI? Emotion2Vec+ Large语音情感识别系统本身功能强大——它能精准识别9种人类基础情绪,从愤怒到惊喜,从悲伤到中性,甚至支持帧级细粒度分析。但原生Gradio界面有个明显问题:灰白配色、默认布局、缺乏视觉引导,用户第一次打开时常常要花几秒才能找到“上传音频”按钮,更别说理解“utterance”和“frame”这两个专业术语的区别了。 这不是模型的问题,而是交互体验的断层。科哥在二次开发过程中发现,很多用户不是不会用,而是“不敢点”“怕点错”“不知道下一步该做什么”。尤其当面向非技术背景的产品经理、客服主管或心理学研究者时,一个友好的界面,往往比多0.5%的准确率更能决定系统是否被真正用起来。 所以这次优化,我们不碰模型权重,不改推理逻辑,只做一件事:让WebUI自己会说话。 2. 自定义主题部署全流程(零命令行焦虑版) 2.1 准备工作:确认环境已就绪 你不需要重装Python,

DeepSeek-OCR-WebUI部署指南:7种识别模式,GPU加速大模型应用!

DeepSeek-OCR-WebUI部署指南:7种识别模式,GPU加速大模型应用!

前一章调试了官方推理代码,官方代码并没有UI界面,输入输出都不直观。DeepSeek-OCR-WebUI 是一个基于DeepSeek-OCR 模型的图像识别web应用,提供直观的用户界面和识别功能。 相当于给官方的推理代码套了一层外衣。 仓库地址:https://github.com/neosun100/DeepSeek-OCR-WebUI 1.DeepSeek-OCR-WebUI介绍 1.1核心亮点 * • 🎯 7 种识别模式 - 文档、OCR、图表、查找、自定义等 * • 🖼️ 边界框可视化 - Find 模式自动标注位置 * • 📦 批量处理 - 支持多张图片逐一识别 * • 📄 PDF 支持 - 上传 PDF 文件,自动转换为图片 * • 🎨 现代化 UI - 炫酷的渐变背景和动画效果 * • 🌐 多语言支持 - 简体中文、繁体中文、英语、日语