VHDL:IEEE std_logic 库中的真值表

2023-12-13

我研究了 IEEE 如何定义其库。当我打开的时候标准逻辑库,我看到了一些被定义为常数的真值表。我不知道真值表是如何运作的。请解释如何使用真值表返回结果。这是我找到的“AND”门:

TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic;

-- truth table for "and" function
CONSTANT and_table : stdlogic_table := (
--      ----------------------------------------------------
--      |  U    X    0    1    Z    W    L    H    -         |   |  
--      ----------------------------------------------------
        ( 'U', 'U', '0', 'U', 'U', 'U', '0', 'U', 'U' ),  -- | U |
        ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ),  -- | X |
        ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ),  -- | 0 |
        ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | 1 |
        ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ),  -- | Z |
        ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ),  -- | W |
        ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ),  -- | L |
        ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ),  -- | H |
        ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' )   -- | - |
);

FUNCTION "and"  ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS
BEGIN
    RETURN (and_table(l, r));
END "and";

“UX01”定义为

SUBTYPE UX01 IS resolved std_ulogic RANGE 'U' TO 'Z';

我不知道“解决”这个关键词是如何使用的。 “resolved”被定义为库中的函数

FUNCTION resolved (s: std_ulogic_vector) RETURN std_ulogic;

我用谷歌搜索了真值表的工作原理一段时间,但没有找到解释。请解释该表如何评估输入。多谢


充满您显示的声明的 AND 表是一个二维数组,由 std_ulogic (枚举)值索引。 AND 函数有一个左参数和右参数(l 和 r),用于索引表中的结果。

该表显示为二维数组以使其用户可读,列注释枚举值索引和行注释枚举值索引的交集指示逻辑AND运算的结果。

解析功能有点复杂,涉及标准或各种解释性文本的高级阅读。

解析函数用于“解析”信号上的多个驱动器。各种驱动程序值被组织为一个向量,其长度等于驱动程序的数量,其中第一个驱动程序值针对默认驱动程序“解析”后(在本例中请参阅 std_logic_1164 的包体,默认值是result是“Z”),每个连续的驱动程序都通过解析表查找累积的来解析result.

目的是确定具有多个驱动器的信号的“解析”信号值,在本例中使用作为 IEEE 标准(IEEE Std 1164,现在是 VHDL 标准的一部分)采用的 MVL9(具有 9 级的多级逻辑)。语言的(而不是像盖伊·瑟顿(Guy Sirton)那样仅表明电气工程问题)。

设置分辨率是在细化过程中发生的,它是模拟的函数。

驱动同一信号的任何两个并发语句都需要解析。即使只有一个驱动程序(相对于默认的“Z”)也能解决问题。如果您不使用已解析的类型,您将收到一条错误消息。如果您使用解析类型,您将获得一个解析值,并且不会受到保护,以防止将多个驱动程序连接到同一信号(当您可能不应该这样做时)。

addendum

还有一个问题。为了浏览二维数组,我想我们使用 数组索引。就像 (1,2) = 第 1 行,第 2 列。使用 and_table(U,1) 的效果如何 匹配第 1 行、第 4 列或第 1 列第 4 行? – 潘红 1 小时前

问题和答案格式未设置为“还有一个问题”。

索引是 std_ulogic 类型,而不是数字类型。枚举类型具有可以表示为数字类型的位置值。对于 std_ulogic 枚举值,第一个值是“U”,下一个是“X”,...到“-”。要查找 std_ulogic 位置值,您可以使用 'POS 属性,其中std_ulogic'POS(l)将返回索引位置值l。您可以使用 'VAL 属性将表示位置值的通用整数转换为 std_ulogic 值。

指标值l and r按照惯例用于表示左和右operands到预定义的二元运算符。l AND r提供两个索引为l and r.

FUNCTION "and"  ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS
BEGIN
    RETURN (and_table(l, r));
END "and";

不允许您使用接口列表指定预定义运算符 -AND(l,r). l是第二个维度,指定行,而r指定列。在这些情况下并不重要,表的工作方式相同,切换两个索引。

请注意,返回值是 std_ulogic 的子类型 (UX01),并且在表中只能找到这四个值。

所有这些都可以由知识渊博的 VHDL 用户从您在示例中提供的信息中辨别出来。它说明了需要一篇关于该语言的好文本或访问标准(IEEE Std 1076-2008),其中可以找到所有答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VHDL:IEEE std_logic 库中的真值表 的相关文章

  • FPGA设计:如何用半加器和全加器构成四位全加器

    今天来分享一下关于FPGA设计的文章 如何用半加器和全加器构成四位全加器 首先 我们看一位半加器的代码 1 一位半加器的程序代码及 图 library ieee use ieee std logic 1164 all entity half
  • 【VHDL】随机存储器RAM、只读存储器ROM

    VHDL 随机存储器设置 RAM程序 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL ENTITY RAM 8 IS PORT CS RD WR IN STD LOGIC CLK IN STD LOGIC
  • 在 VHDL 中找到运算符“+”的“0”定义

    首先我想指出 这是我第一次尝试 VHDL 所以请客气一点 我想读取 X1 X4 输入并在输出处生成输入的总和 这是我的代码 library IEEE use IEEE STD LOGIC 1164 ALL entity counter of
  • 是否有理由在 VHDL 和 Verilog 中初始化(而不是重置)信号?

    我从未初始化过信号 这样 任何缺少重置或分配的信号都将是未知的或已初始化 在一些参考代码中它们有初始化 这违背了我的愿望 此外 由于初始化不可综合 因此可能会出现模拟 综合不匹配的情况 在这种情况下有什么理由初始化信号吗 编辑 2011 年
  • 无法使用 VHDL 2008 Quartus Prime 进行编译

    我正在使用 Quartus Prime Lite Edition 并且我想使用一元运算符nand像这样的 std logic vector library ieee use ieee std logic 1164 all use ieee
  • 使用通用参数作为端口数组长度

    我想做的事 entity FIRfilter is generic NTAPS integer port h in array 0 to NTAPS 1 of std logic vector 15 downto 0 end FIRfitl
  • 在 vhdl 中计算(并验证)以太网 FCS (crc32)

    我正在使用Spartan 3E 入门套件我正在尝试通过 100MBit 链路接收以太网帧 对于那些不知道的人 该板具有 PHY 芯片 暴露了 25MHz 的接收时钟 我 几乎 已经通过缓冲接收到的帧并通过串行链路重新发送它们来验证接收工作正
  • ERROR:Xst:827 = 信号计数无法合成,同步描述错误

    我正在尝试模拟电梯 结果出现错误 ERROR Xst 827 Signal count cannot be synthesized bad synchronous description 我正在关注此来源的代码 https www yout
  • 是否需要初始化?

    在VHDL中 创建信号或向量时是否需要初始化 如果忘记初始化信号或整数值会发生什么 In 模拟 如果你这样做not设置一个初始值 向量的每个元素都会得到default值 这是由 VHDL 语言规范定义的 对于枚举类型 这是枚举类型中定义的第
  • “等待上升沿(clk)”与“如果上升沿(clk)”有什么区别?

    我在 VHDL 中遇到了两种风格的过程语句 process clk begin if rising edge clk do something 另一种是 process begin wait until rising edge clk do
  • 同时读取和写入寄存器

    我计划在 FPGA 上用 VHDL 设计一个类似 MIPS 的 CPU CPU 将具有经典的五级管道 没有转发和危险预防 在计算机体系结构课程中 我了解到第一个 MIPS CPU 用于在时钟上升沿读取寄存器文件并在时钟下降沿写入 我使用的F
  • 在VHDL中初始化记录数组

    我有一条记录定义如下 type ifx t is record data std logic vector 127 downto 0 address std logic vector 19 downto 0 WrReq std logic
  • 使用 1 位 ALU 制作 16 位 ALU

    你好 我正在尝试从几个 1 位 ALU 创建一个 16 位 ALU 我创建了一个名为 basic alu1 的包 其中包含 1 位 ALU 的组件 其代码是 library ieee use ieee std logic 1164 all
  • VHDL - FSM 未启动(仅在时序仿真中)

    我正在写我的硕士论文 而且我对 VHDL 还很陌生 但我仍然必须实现一些复杂的东西 这是我必须编写的最简单的结构之一 但我仍然遇到了一些问题 它是一个 FSM 采用低电平有效同步信号 用于对 DAC 进行编程 实现 24 位移位寄存器 这只
  • 如何从 Spartan 6 写入 Nexys 3 FPGA 板上的 Micron 外部蜂窝 RAM?

    我到处都查过了 数据表 Xilinx 网站 digilent 等等 但什么也没找到 我能够使用 Adept 工具来验证我的蜂窝 RAM 是否正常运行 但我找不到任何库存 VHDL 代码作为控制器来写入数据和从中读取数据 帮助 找到了此链接
  • 仅使用 std_logic_vector 包将 std_logic_vector 与常量进行比较

    我仅在 VHDL 文件中使用以下包 library IEEE use IEEE STD LOGIC 1164 ALL 在代码中 我将 std logic vector 信号 A 与常量值进行比较 例如 if A lt 00001011 th
  • VHDL 中的 #define 等价物是什么

    VHDL 中的 define ifdef 和 ifndef 相当于什么 我想使用泛型作为 define 并根据它们更改设计 举一个简单的例子 定义一个字符串泛型并用它来确定时钟是单时钟还是差分时钟 generic something boo
  • 32x8 寄存器文件 VHDL 测试台

    我已经用 vhdl 编写了该电路的汇编代码 我想用测试台来模拟它 RegWrite 1 位输入 时钟 写寄存器个数 3位输入 写地址 写入数据 32 位输入 数据输入 读取 寄存器编号 A 3 位输入 读取地址 读取寄存器编号 B 3 位输
  • 设计用于初始化的VHDL状态机

    如何最明智地设计用于初始化芯片的 VHDL 状态机 我当前的设计是 伪代码 案例状态 当 s0 gt VHDL CODE FOR WRITING VALUE TO REGISTER状态 s1 当 s1 gt VHDL CODE FOR WR
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar

随机推荐

  • 如何使用 Python 创建一个流式传输在线广播的 Discord 机器人

    正如标题所提到的 我该怎么做呢 到目前为止 我花了几个小时试图找到答案 但由于这不是一个受欢迎的请求 因此没有任何相关内容 我发现的大部分内容只是使用 youtube dl 下载 yt 音频并播放它 编辑 更新以使用FFmpegPCM音频流
  • 从文件中解析逗号分隔的 JSON

    我正在读取一个包含用逗号分隔的 JSON 的文件 例如 JSON JSON JSON 我确定它们是用逗号分隔的 但不确定它们是用换行符分隔的 该 JSON 可能全部位于一行 但可以肯定的是它们是用逗号分隔的 我还没有收到该数据 我想知道如何
  • 当数组包含日期时,从 Firestore 中删除数组项不起作用

    我花了几天时间研究这个问题 包括各种答案 例如 Firebase Firestore 从文档数组中追加 删除项目以及我之前的问题 从 Firestore 中删除数组项但无法弄清楚如何真正使其发挥作用 事实证明 问题在于对象中存在日期属性 如
  • WPF - ItemTemplate 未按预期运行

    我有一个UserControl我用它来显示列表UIElement是 该控制由一个单一的ItemsControl与它的ItemPanelTemplate切换为水平StackPanel its ItemsSource绑定到一个Dependenc
  • 插入表变量 CTE

    如何将 cte 的结果插入到表变量中 像这样的东西吗 DECLARE myData TABLE Title nvarchar 350 NOT NULL Id int NOT NULL INSERT INTO myData with CTE
  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not
  • 尽可能均匀地分配数量

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 上 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 5 个 我们无法 填
  • 有没有直接的方法将 Informix 上的 Unix 时间转换为 YYYY-MM-DD HH:MM:SS?

    我知道使用 PHP 或 Perl 可以轻松完成类似的事情 但我想知道是否有一种方法可以直接在 Informix 上完成 例如函数FROM UNIXTIME 在 MySQL 上 我认为你可以使用 dbinfo 和 utc to datetim
  • 使用php将mysql表列表从mysql导出到csv文件

    我想知道是否有人可以向我展示一个示例 PHP 代码 说明如何将 MySQL 数据库中的大约 50 个表导出到 CSV 文件 我的数据库名称是 samples 该数据库下有大约 49 个表 我希望该数据库下的每个表 大约有 20 00 行 导
  • 使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

    我需要比较两个单元格值并在它们不同时对其采取行动 然而 在比较单元格内容时 我的 if 语句总是返回 false 我不明白为什么 function onEdit var ss SpreadsheetApp getActiveSpreadsh
  • Haskell 继承、数据、构造函数

    所以我想为我的小行星游戏 作业定义多个数据类 data One One oneVelocity Velocity onePosition Position other properties unique to One data Two Tw
  • 如何在C#中从mysql结果中读取某些数据

    我想从 C 对 mysql 进行某些查询 这样我就可以返回例如姓名和姓氏 我不知道如何在 C 中处理这个问题 我想尽量减少 SQLinjection 这是我的代码 con new MySqlConnection server localho
  • 无法加载实体框架提供程序类型“Oracle.ManagedDataAccess.EntityFramework”

    我正在尝试在 MVC 应用程序中使用 Entity Framework v6 使用 Oracle Data Provider NET ODP NET 连接到 Oracle 我从这里安装了 ODP NET https www nuget or
  • 根据 WooCommerce 中的产品类别自定义“缺货”文本

    每件缺货产品都显示 缺货 有很多functions php覆盖文本的脚本 但我只是尝试覆盖特定于 类别 A 的文本 或者如果我知道类别 id 编号 那也可以工作 我找到了这个脚本 但它只允许您修改每个产品 ID 的 txt add filt
  • 视图内的 Rails 布局名称

    如何打印视图中当前布局的名称 Example puts controller current layout Thx 这适用于 Rails 3 0 7 controller send layout 显然 这是一种私有方法 因此使用时需要您自担
  • VHDL:IEEE std_logic 库中的真值表

    我研究了 IEEE 如何定义其库 当我打开的时候标准逻辑库 我看到了一些被定义为常数的真值表 我不知道真值表是如何运作的 请解释如何使用真值表返回结果 这是我找到的 AND 门 TYPE stdlogic table IS ARRAY st