VHDL STD_LOGIC_VECTOR 通配符值

2024-05-08

我一直在尝试用 VHDL 代码为我在 Altera DE1 板上实现的简单 16 位处理器编写有限状态机。在有限状态机中,我有一个CASE处理不同 16 位指令的语句,这些指令由 16 位 STD_LOGIC_VECTOR 带入 FSM。但是,我在有限状态机解码指令的解码状态中遇到了一些麻烦。其中一条指令是 ADD,它采用两个寄存器作为操作数,第三个作为目标寄存器。不过,我还有一条 ADD 指令,它采用一个寄存器和一个 5 位立即值作为操作数,以及第二个寄存器作为目标。我的问题是在CASE声明中,我需要能够区分两个不同的 ADD 指令。所以,我想如果我在中使用“-”或“X”等通配符值CASE声明中,我将能够仅用两种情况来区分两者,而不是列出所有可能的寄存器/立即值组合。例如:

    CASE IR IS --(IR stands for "Instruction Register")
      WHEN "0001------0-----" => (Go to 3-register add);
      WHEN "0001------1-----" => (Go to 2-register/immediate value add);
      WHEN OTHERS => (Do whatever);
    END CASE;

这并不是我仅有的两条说明,我只是将这两条说明放在一起以使这篇文章变得更短一些。当我编译并运行此代码时,处理器在进入“解码”状态时停止执行。另外,Quartus 给出了很多很多警告,比如“LC3FSM.vhd(37) 处的 VHDL 选择警告:忽略包含元值“0001------0-----””的选择” 我不知道如何实现这一目标。我真的不会也可能不需要定义每个 16 位组合,并且我希望有一种方法可以在 STD_LOGIC_VECTOR 中使用通配符来最大限度地减少我必须定义的组合数量。

有人知道如何做到这一点吗?

Thanks


不幸的是,这是不可能的。对于大多数用户来说出乎意料的是,比较运算符=case比较执行字面比较。这是因为std_logic类型只是一组字符,由于其他函数的方式(例如and and or) 被定义。

VHDL-2008 引入了新的 case 语句case?它按照您的预期执行 - 您需要告诉编译器在 VHDL 2008 模式下运行。此外,还有一个?=VHDL 2008 中的运算符比较两个值,考虑到-s.

如果你被一个编译器搞得一团糟still不支持VHDL 2008,向供应商投诉。还有一个std_match函数允许您在较旧的 VHDL 版本中进行比较,但据我所知,没有什么可以使case声明就是这样工作的。

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

VHDL STD_LOGIC_VECTOR 通配符值 的相关文章

随机推荐

  • Dockerfile 从 amazon s3 或其他需要凭据的源复制文件

    我正在尝试构建 Docker 映像 并且需要将一些文件从 S3 复制到该映像 我正在使用的 Dockerfile 内部 Dockerfile FROM library ubuntu 16 04 ENV LANG C UTF 8 LC ALL
  • 从 BitBucket 请求 OAuth 令牌

    在过去的 4 个小时里 我一直在尝试将 BitBucket 集成到我的应用程序中 但没有成功 在阅读的过程中BitBucket 的 RESTful API 文档 https confluence atlassian com display
  • 使用 gin 索引和 sqlalchemy 返回排名搜索结果

    我为全文搜索设置了 GIN 索引 我想获取与搜索查询匹配的记录列表 按排名排序 记录与搜索查询的匹配程度 对于结果 我只需要记录及其列 不需要用于排序的实际排名值 我有以下查询 它运行良好并从我的 postgresql 数据库返回预期结果
  • 如何使用 Github Pages 分支正确提交到存储库中

    我有一个问题 情况基于gh pages https pages github com 我的项目使用预处理器和其他困难的人员 因此 我的项目结构如下所示 主分支 src node modules public js css etc index
  • Swit 中的函数式编程将数组元素分配到正确的“桶”

    我是函数式编程的新手 我的问题是我有一个主数组和固定数量的 目标 数组 我想根据每个元素的特定值将主数组中的元素分配到正确的结果数组中 我猜测一种方法是使用一个映射函数来遍历主数组元素 确定正确的 目标数组 值 基于某种逻辑 然后将元素添加
  • 我可以在 iOS 中测量蓝牙信号强度吗?

    Can I 测量信号强度我的 iPhone 范围内的蓝牙设备数量 基本上我想要做的是扫描范围内的设备列表 然后查看哪个设备的信号强度最高 在 iOS 中是否可行 如果可以 我该怎么做 是的 有一种方法可以测量蓝牙低功耗 4 0 的信号强度
  • 锚标记内的 CakePHP Span 标记

    我试图让 CakePHP 输出一个如下所示的链接 a href foo bar class some other classes span class icon new span FooBar a 所以我在我看来使用以下代码
  • 使用 string.whitespace 删除 Python 中的空格

    Python 的 string whitespace 很棒 gt gt gt string whitespace t n x0b x0c r 如何在不手动输入 t n 等正则表达式的情况下将其与字符串一起使用 例如 它应该能够转动 请不要伤
  • jQuery:评估 ajax 响应中的脚本

    来自我的 web 应用程序的 XML 响应既有要添加到页面的 HTML 也有要运行的脚本 我正在尝试从我的网络应用程序发回 XML 例如
  • 散景服务器获取鼠标位置

    我正在开发一个带有散景 0 12 2 的交互式应用程序 它根据特定的交互更新绘图 现在 我使用滑块来更改图中字形的位置 但实际上我想访问鼠标在特定图中的位置 数据集是一个多维矩阵 张量 密集数据 每个图在特定位置显示一个维度 如果我更改一个
  • 与 Ruby 1.9.X 中的 Iconv.conv("UTF-8//IGNORE",...) 等效吗?

    我正在从远程源读取数据 偶尔会得到另一种编码的一些字符 它们并不重要 我想得到一个 最佳猜测 utf 8 字符串 并忽略无效数据 主要目标是获得一个我可以使用的字符串 并且不会遇到以下错误 编码 UndefinedConversionErr
  • 使用 Doctrine2 时的多重歧视级别

    我正在使用 Doctrine2 来管理我的模型 如下 有一个抽象概念Content与复合模式Gallery 也是一个抽象概念Media从中Video and Image继承 我的选择是添加鉴别器Content and Media表以便区分G
  • 改变 RGB 颜色的色调

    我正在尝试编写一个函数来改变 RGB 颜色的色调 具体来说 我在 iOS 应用程序中使用它 但数学是通用的 下图显示了 R G 和 B 值如何随色调变化 看起来 编写一个函数来改变色调似乎应该是一个相对简单的事情 而不需要对不同的颜色格式进
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • EF 6 基于代码的迁移:向现有实体添加非空属性

    我想向现有表添加一个非空外键列 环境 EF 6 代码优先 基于代码的迁移 Code from Migration class for new entity Currency CreateTable dbo Currency c gt new
  • 了解子表单何时关闭

    我有一个带有按钮的 Form1 当您单击按钮时 将执行以下代码块 Form2 frm new Form2 frm Name Form musteriNumarasi ToString frm Text Kullan c musteriNum
  • 有没有办法自动折叠解决方案资源管理器中的脚本文档部分?

    在调试模式下 解决方案资源管理器有一个脚本文档部分 默认情况下它是展开的 当调试器运行时 新的ScriptDocumentxxx poll txt文件被添加到此部分 当我浏览资源管理器文件时 添加这些新行项目会导致资源管理器的整个内容向下移
  • 如何获取每个类别(例如 WooCommerce 后端)的产品数量?

    我正在建立一个新网站 我对 Woocommerce 非常满意 我只需要一个快速技巧来获取每个类别中的产品数量 我已经调出了每个产品的类别 但无法弄清楚如何从该类别中获取产品数量 我有一个适合我的产品的列表样式 实际上是活动网站的活动 查看图
  • 如何找到类路径上具有特定方法注释的所有类?

    我想在Java中实现一个基于注释的初始化机制 具体来说 我定义了一个注释 Retention RetentionPolicy RUNTIME Target ElementType METHOD public interface Initia
  • VHDL STD_LOGIC_VECTOR 通配符值

    我一直在尝试用 VHDL 代码为我在 Altera DE1 板上实现的简单 16 位处理器编写有限状态机 在有限状态机中 我有一个CASE处理不同 16 位指令的语句 这些指令由 16 位 STD LOGIC VECTOR 带入 FSM 但