LUT是如何实现千万种逻辑结构的

目录

(1)FPGA和LUT简介 

(2)LUT框图结构

(3)LUT内部结构

(4)LUT实现C = A + B(A:1bit B:1bit) 

(5)总结LUT实现逻辑原理


(1)FPGA和LUT简介 

FPGA是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

LUT指显示查找表(Look-Up-Table),本质上就是一个RAM。它把数据事先(很重要,由分析综合工具完成)写入RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。

非常重要的概念:输入的信号 <====> 输入的地址  ===> 输出结果

(2)LUT框图结构

下图为四输入查找表结构。xilinx FPGA内部是通过六输入查找表实现的。
       

(3)LUT内部结构

从图中可以看出,LUT是通过RAM实现的,4输入LUT通过16X1 RAM实现了,6输入查找表通过64X1 RAM实现。

下图为4输入查找表内部结构:

下图为6输入查找表内部结构:

(4)LUT实现C = A + B(A:1bit B:1bit) 

综合完毕之后,可以查看电路如下,查找表1被初始化为4'h6(3'b110),查找表2被初始化为4'h8(3'b1000)。

可以推断A+B以下的种情况:

当A为0,B为0时,2个查找表输入的地址都为0,因此第1个查找表输出4'h6(3'b110)第0位0,第2个查找表输出'h8(3'b1000)第0位0,因此Q的值为2'b00 = 0; ==> 0 + 0 = 0

当A为1,B为0时,第1个查找表输入的地址为1,第2个查找表输入的地址为2,因此第1个查找表输出4'h6(3'b110)第1位1,第二个查找表输出'h8(3'b1000)第2位0,因此Q的值为2'b01 = 1; ==> 1 + 0 = 1

当A为0,B为1时,第1个查找表输入的地址为2,第2个查找表输入的地址为1,因此第1个查找表输出4'h6(3'b110)第2位1,第二个查找表输出'h8(3'b1000)第1位0,因此Q的值为2'b01 = 1; ==> 0 + 1 = 1

当A为1,B为1时,两个查找表输入的地址都为3,两个因此第一个查找表输出4'h6(3'b0110)第3位0,第二个查找表输出'h8(3'b1000)第3位1,因此Q的值为2'b10 = 2。 ==> 1 + 1 = 2

哈哈,是不感觉很费劲呢?如果你看下C = A+B(A、B都是5位的时候)会更加复杂,此时会用到Slice内部复杂的进位链逻辑快。因此我们只要知道原理就行,上面的操作综合分析工具和LUT已经帮我们做了,大家细细品味。下面列了一个表:

(5)总结LUT实现逻辑原理

本质上来说,就是把我们输入的数据作为LUT的地址信号,然后查找出预先定义好的逻辑结果,这个就是逻辑代码实现原理。编译器在编译verilog代码的时候会遍历所有逻辑输入并且计算出输出存入RAM里面,在硬件运行的时候根据线上的当前状态确定LUT输出从而实现了数字电路的一切设计逻辑。


1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。

2.未经原作者允许不得转载本文内容,否则将视为侵权;

3.转载或者引用本文内容请注明来源及原作者;

4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。

  • 26
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
8.1.1 LUT (Look-Up Table) 是一种基本的数字逻辑元件,可以将输入值映射到一个输出值。LUT实现原理是通过存储一个查找(Look-Up Table),输入的值作为地址,查找中对应的值作为输出。LUT 的大小决定了它可以实现逻辑功能的复杂度。LUT 可以通过级联实现更复杂的逻辑功能。 例如,一个 2-输入的 AND 逻辑门可以通过一个 2 × 1 的 LUT 实现LUT查找可以存储如下的真值: | A | B | Output | |---|---|--------| | 0 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 | 当输入为 A=1,B=1 时,LUT 将会输出 1,实现了 AND 的功能。 8.1.2 FPGA结构上主要由以下几个部分组成: 1. 可编程逻辑单元(FPGA CLBs):是 FPGA 中最基本的逻辑单元,通常包含 LUT、寄存器和多路选择器等元件。CLBs 可以通过级联实现更复杂的逻辑功能。 2. 片上存储器(FPGA Memory):包括 BRAM(Block RAM)和 DPRAM(Distributed RAM)等,用于存储数据。 3. 时钟管理器(FPGA Clocking):用于产生时钟信号,控制各个逻辑单元的时序关系。 4. I/O 接口(FPGA IO):用于与外部设备进行通信,包括输入输出口、高速串行接口等。 5. 连接资源(FPGA Routing):用于连接各个逻辑单元和 I/O 接口,形成逻辑电路FPGA 的主要功能是实现数字逻辑电路,其可编程性使得它可以根据设计需求灵活地实现各种逻辑功能。同时,FPGA 的可重构性也使得它在硬件加速、数字信号处理等领域具有广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个早起的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值