verilog高级语法-原语-ibuf-obuf-LUT

概述:

原语直接操作FPGA的资源,对FPGA的结构更加清晰,使用原语之前需要对FPGA的资源进行了解,本节为初识原语

学习内容

1. 输入缓冲原语 IBUF

2. 输出缓冲原语 OBUF

3. 查找表原语    LUT

1. IBUF,OBUF原语简介

输入输出端口必须添加缓冲后才能进入FPGA内部逻辑,用于与外部隔离。功能就是起到缓冲隔离的作用。

代码

  IBUF   b_IBUF (
    .I(b),
    .O(b_IBUF_3)
  );
  OBUF   c_OBUF (
    .I(c_OBUF_7),
    .O(c)
  );

结构图

 

2. LUT查找表简介

代码 一个 c1=a|b逻辑功能的查找表代码如下

  LUT2 #(
    .INIT ( 4'hE ))
  c11 (
    .I0(a_IBUF_1),
    .I1(b_IBUF_3),
    .O(c1_OBUF_6)
  );

端口简介,LUT2也就是有2个输入地址线,分别对应组合逻辑的两个输入a,b。o为输出端口,也就的是得到的结果c1。具体功能就通过设计.INIT(4'hX)的值来决定,具体的功能看真值表的输出值,直接填上去。原理就是输入地址线的最小项的权重组成的数值。a|b的针织表如下图,也就是4'b1110≡4'hE。所以.INIT (4‘hE)就是这么来的

真值表

RTL结构图

技术原理图

3. verilog c代码与原语代码比较

c代码

module primitive1(
	input a,b,
	output c,c1
    );
assign c = a&b;
assign c1 = a|b;

endmodule

原语代码


module primitive1 (
  a, b, c, c1
);
  input a;
  input b;
  output c;
  output c1;
  wire a_IBUF_1;
  wire b_IBUF_3;
  wire c1_OBUF_6;
  wire c_OBUF_7;
  LUT2 #(
    .INIT ( 4'hE ))
  c11 (
    .I0(a_IBUF_1),
    .I1(b_IBUF_3),
    .O(c1_OBUF_6)
  );
  LUT2 #(
    .INIT ( 4'h8 ))
  c1_2 (
    .I0(a_IBUF_1),
    .I1(b_IBUF_3),
    .O(c_OBUF_7)
  );
  IBUF   a_IBUF (
    .I(a),
    .O(a_IBUF_1)
  );
  IBUF   b_IBUF (
    .I(b),
    .O(b_IBUF_3)
  );
  OBUF   c_OBUF (
    .I(c_OBUF_7),
    .O(c)
  );
  OBUF   c1_OBUF (
    .I(c1_OBUF_6),
    .O(c1)
  );
endmodule

RTL结构图

技术原理图

3. 总结

1. ibuf,obuf是端口缓冲,所有与外部相连接的端口都需要添加,用于电气隔离

2. FPGA使用LUT查找表实现组合逻辑,具体的功能可以通过设置.INIT中的值来实现,设置的值就是真值表的输出结果。

3. 原语是直接对FPGA电路结构进行操作和连接,设计开发效率比较低,但是他可以更好的利用底层资源进行设计,可以获得更加灵活的设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/248407.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode的文件和文件夹的警告标志如何消去

由于平时用vscode写一些java的小demo, 但是这个vscode的警告和错误管理很奇怪, 这个警告信息会显示在这个侧边的文件和文件夹中, 我上网上找能不能把这个给去掉的办法, 找了半天没找到。 于是我就自己去查了一下这个vscode的设置, 真让我找到了这方面的开关, 把下面的这个关闭…

智能物联网(IoT)VS AI物联网(AIoT)

#IoT# #AIoT# 智能物联网(IoT)和AI物联网(AIoT)区别 概念: 物联网(IoT):即“万物相连的互联网”,是在互联网基础上延伸和扩展的网络,将各种信息传感设备与网…

点云格式转换:将 ros PointCloud2格式数据转为livox CustomMsg格式

将 ros PointCloud2格式数据转为livox CustomMsg格式 前言点云格式PointCloud2 点云格式livox CustomMsg 点云格式 将 ros PointCloud2格式数据转为livox CustomMsg格式测试 前言 览沃科技有限公司(Livox)成立于2016年。为了革新激光雷达行业&#xff0…

Docker及其使用思维导图

Docker的架构 构建分发运行镜像 Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。Images(镜像):是一个只读模板,含创建Docker容器…

JAVA对文档加密

当 Word 文档中包含无法公开的机密信息时,我们可以对其进行加密,使其在没有密码的情况下无法打开。本文将向您介绍如何使用 Spire.Doc for Java 加密 Word 文档和移除 Word 密码保护。 加密 Word 文档删除 Word 密码保护 安装 Spire.Doc for Java 首先…

Linux系统中如何开启和配置OpenGauss数据库的远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试7. 结语 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…

分布式 SQL 数据库与表格优化技术

分布式 SQL 数据库会将应用程序数据存储在多个节点上,从存储和计算的角度提高了可扩展性。这种分布意味着某些应用程序请求,包括 JOIN 操作和聚合,可能跨多个数据库节点,可能导致数据在网络中的传输。 为了减轻网络延迟对整体应用…

Echarts 热力图与折线图的结合

热力图与折线图结合使用(文末含源码) 这种需求并不多见,遇到后第一时间翻看了Echars官方文档,并没有发现类似的例子。于是自己动手合并了双轴,后发现折线图会被遮盖。经过排查发现了一个关键参数:visualMap的配置。这个配置在热力…

什么是客服RPA?客服RPA应用场景有哪些?客服RPA解决什么问题?

客服RPA,全称Robotic Process Automation,即机器人流程自动化。它是一种软件机器人,可以模拟人类在计算机上执行的任务,包括数据输入、网络浏览、电子邮件和文本消息发送等。 客服RPA适用于自动化处理客户咨询、投诉、退货等业务流…

wps左上角有绿色小三角的数字如何求和

1.这个状态是求和不了的,使用求和公式求出来的也是0 2.进行如下操作 3.转换好后 则可以求和成功了

C++ 学习系列 -- 模板 template

一 C 模板介绍? C 为什么引入模板? 我的理解是: C 引入模板的概念,是为了复用重复的代码,当某些代码除了操作的数据类型不同以外,其他逻辑全都相同,此时就适合采用模板的方式。 定义模板类或者…

2023.12.13 关于 MySQL 复杂查询

目录 聚合查询 聚合函数 group by 子句 执行流程图 联合查询 笛卡尔积 内连接 外连接 左外连接 右外连接 自连接 子查询 单行子查询 多行子查询 EXISTS 关键字 合并查询 union on 和 union 的区别 聚合查询 聚合函数 函数说明COUNT([DISTINCT] expr)返回查询到…

ClickHouse Kafka 引擎教程

如果您刚开始并且第一次设置 Kafka 和 ClickHouse 需要帮助怎么办?这篇文章也许会提供下帮助。 我们将通过一个端到端示例,使用 Kafka 引擎将数据从 Kafka 主题加载到 ClickHouse 表中。我们还将展示如何重置偏移量和重新加载数据,以及如何更…

数据库和数据仓库的区别

数据仓库是在数据库已知大量存在的前提下,为了进一步挖掘数据资源,为了决策需要产生的;数据仓库在设计的时候有意添加反范式设计,目的是提高查询效率 对比内容数据库数据仓库数据内容近期值历史的 归档的数据数据目标面向业务操作…

【数学建模】《实战数学建模:例题与讲解》第十三讲-相关分析(含Matlab代码)

【数学建模】《实战数学建模:例题与讲解》第十三讲-相关分析(含Matlab代码) 基本概念典型相关分析综合评价模型对应分析因子分析聚类分析 习题10.41. 题目要求2.解题过程3.程序 习题10.51. 题目要求2.解题过程3.程序 习题10.6(1&a…

[原创][R语言]股票分析实战:周级别涨幅趋势的相关性

[简介]常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、De…

SQL Server数据库使用T-SQL语句简单填充

文章目录 操作步骤:1.新建数据库起名RGB2.新建表起名rgb3.添加三个列名4.点击新建查询5.填入以下T-SQL语句,点击执行(F5)6.刷新之后,查看数据 操作环境: win10 Microsoft SQL Server Management Studio 20…

Leetcode—237.删除链表中的节点【中等】

2023每日刷题(六十) Leetcode—237.删除链表中的节点 偷天换日实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { pub…

动态内存管理,malloc和calloc以及realloc函数用法

目录 一.malloc函数的介绍 malloc的用法 举个例子 注意点 浅谈数据结构里的动态分配空间 二.calloc函数的介绍 三.realloc函数的介绍 四.柔性数组的介绍 为什么有些时候动态内存函数头文件是malloc.h,有些时候却是stdlib.h 一.malloc函数的介绍 malloc其实就是动态开辟…