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.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。
下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。
LUT是如何实现千万种逻辑结构的相关推荐
- 数据4种逻辑结构与常见的4种存储结构:
数据4种逻辑结构: 1.集合结构:数据元素之间没有任何关系. 2.线性结构:数据元素之间定义了线性关系.1对1 3.树形结构:数据元素之间定义了层次关系 1对多. 4.图状结构:数据元素之间定义了网状 ...
- 优化思路千万种,基于下界函数的最优化效率如何?
作者丨stephenDC 来源 | 大数据与人工智能(ID:ai-big-data) 导读:生活中我们处处面临最优化的问题,比如,怎么样一个月减掉的体重最高?怎么样学习效率最高?怎么样可以最大化实现个 ...
- 编程中的逻辑实现,三种逻辑结构(顺序、循环、分支)、跳转、函数以及错误处理
编程中常见的逻辑控制包括 1. 按顺序执行(顺序),2. 不同种情况分别处理(分支),3. 同一个操作重复执行(循环).搭配上跳转语句.函数和错误处理就可以实现大多数逻辑状况. 一.顺序 顺序是最常见 ...
- 计算机考研零基础英语怎么复习,考研英语复习办法千万种,总有一种适合你!...
摘要:考研英语的复习方法因人而异,有的人可能"零基础"备考要下很大的功夫,有的人可能是大神只是走个过场.无论你的英语底子怎么样,小编今天为大家分享一篇稳扎稳打的英语复习经验贴,好好 ...
- 数据结构的四种逻辑结构(简单介绍)
(1)集合结构:结构中的数据元素除了"同属于一个集合"外,无其他任何关系. (2)线性结构:结构中的数据元素之间只存在一对一的关系,除了第一个元素外,其余元素都有唯一前驱,除了最后 ...
- 什么是数据结构以及数据结构的存储方式、逻辑结构和存储结构的关系、数据结构的运算、逻辑结构的四种基本类型
一.什么是数据结构 1.数据结构的起源 数据结构不是研究数值计算的这些是数学家应该研究的问题,它是研究计算机存储.组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以 ...
- html制作的动态粒子图像,一种基于AnimateCC+Canvas的随机粒子动画效果设计
潘博 摘要:粒子动画是一种应用广泛的动画效果,也有不同的制作方法.Animate CC是Flash的延续和发展,在动画制作方面功能强大,而Canvas是HTML5在网页中绘制图形.制作动画的核心元素. ...
- 量子计算与AI“双拳”出击,他们锁定38种潜在抗疫药物
作者 | Just 出品 | AI科技大本营(ID:rgznai100) 医药研发行业有一个"三个十"的说法,即一种药物的发现需要投入十年以上的时间,花费十多亿美元,最后获得10% ...
- 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)
目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...
最新文章
- css怎么设置列表颜色,css怎么设置table颜色
- 长此以往的发展,以BCH为代表的数字货币终将会为自己正名
- API Hooking 的原理
- Spring5源码 - 11 Spring事件监听机制_源码篇
- 人的执念真的是非常的可怕
- mybatis教程--一对多查询
- java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...
- spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较
- mongodump 失败且导致mongo服务挂掉【本质原因,wt文件损坏】
- Jmter操作数据库
- 2021-5-18大搜车
- pip:你真的熟悉怎么用了吗?
- win98/win95
- 软件测试笔试面试题目完全汇总
- 手机整人脚本html,vbs整人代码_手机vbs整人代码_如何让别人执行vbs代码(3)
- qpython3安装kivy_kivy学习之路:kivy开发环境架设--- windows篇
- 助力CP扬帆出海,华为HiGame邀全国开发者共赢拉美市场
- mysql 5.6 触发器_【mysql】mysql触发器使用示例
- 用RNN做MNIST分类
- iOS14适配【解决iOS14下pop多层控制器至首页时,tabbar不显示问题】之问题分析篇
热门文章
- AndroidX和Support库使用记录
- 整合redisson了解分布式锁的配置熟悉lock的看门狗机制以及应用
- RecyclerView.smoothScrollToPosition(),不好用、偶尔失效;scrollToPosition()不好用、偶尔失效
- 人工智能数学基础6:极限、极限运算、ε-δ语言、ε-N语言、级数和函数连续性
- runTime runLoop
- 成功解决:IDEA 输入法切换不了的问题
- Unity PrefabUtility操作Prefab删除报错
- c语言大端存储,c语言 之大端小端存储问题
- 手机触屏触摸特效javascript-TouchSwipe(依赖于jquery库)中文说明
- iOS常用框架推荐(超好用)