信号分配在进程中如何工作?

2023-12-21

我了解到信号在遇到表达式时不会立即改变,而是在进程结束时立即改变。在此示例中:

...
signal x,y,z : bit;
...
process (y)
begin
  x<=y;
  z<=not x;
end process;

这个例子是这样说的:

如果信号 y 发生变化,则将在 x 上安排一个事件,使其与 y 相同。此外,在 z 上安排了一个事件,使其与 x 相反。问题是,z的值会与y相反吗?当然,答案是否定的,因为当执行第二条语句时,x上的事件还没有被处理,而z上调度的事件将与处理开始之前x的值相反。

嗯,我需要明白一些事情:

  1. 据我所知,信号值仅更新在过程结束时。它是否正确?
  2. 信号x已更新为第一个声明。这仍然不会改变的值x,此更改被放入队列中,以便在进程结束后执行。所以此声明之后的所有内容x <= y不会看到变化并且会看到x具有其旧的价值。它是否正确?
  3. 第二个语句是尝试改变信号的值z。同样,z 不会改变它的值,但它取决于另一个进程的值。变化于z将被放入队列中,在进程结束时执行。它是否正确?

该过程结束时会发生什么?

可能性编号 1) 中的值x改变了,所以 x 有了新的值。第二个信号z已更新,第一个信号x已更新,鉴于z依赖于取决于x,其值根据新更新的值进行更改x。这个例子应该可以正常工作。

可能性编号 2) 中的值x改变了,所以 x 有了新的值。第二个信号z已更新。鉴于z被分配了一个旧值x,这就是值z将保持,旧值x已更新,但不考虑此更新。

您能告诉我哪一种是正确的方法吗?


变量会在您分配时更新。信号在下一个增量周期(最早)得到更新。

a := '1'; -- variable
assert a = 1;
b <= '1'; -- signal
computationUsing(b); --reads old value of b
-- new value will be visible after this process ends or some time passes

Jan Decaluwe 在这里更详细地解释了这一点:http://www.sigasi.com/content/vhdls-crown-jewel http://www.sigasi.com/content/vhdls-crown-jewel

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

信号分配在进程中如何工作? 的相关文章

  • 无法使用 VHDL 2008 Quartus Prime 进行编译

    我正在使用 Quartus Prime Lite Edition 并且我想使用一元运算符nand像这样的 std logic vector library ieee use ieee std logic 1164 all use ieee
  • 子状态机

    我有一个有 5 个州的 FSM 其中3个是通过子FSM UML模式 设计的 对于 VHDL 中的实现 恕我直言 有两种方法可以做到这一点 将它们总结为一个 这样我就有了一份包含子 FSM 的文档和一个包含一个大 FSM 的产品 与所有州建立
  • vhdl中的4位加法器

    我对 vhdl 语言还很陌生 所以请耐心等待 我刚刚为 1 位加法器编写了 vhdl 代码 但在为 4 位加法器编写时遇到了麻烦 这就是我到目前为止所得到的 如果有人能指出我要查找的内容的正确方向 那就太棒了 VHDL代码 LIBRARY
  • 整数到字符串在综合中出错(宽度不匹配)

    我正在尝试将整数转换为字符串 使用integer image val 并将其填充或限制为特定长度 我已经制作了这个函数 当我使用时它可以很好地完成工作report陈述并模拟 function integer2string pad val i
  • 二进制补码 VHDL

    我只是想用 VHDL 制作一个简单的二进制补码设备 但它抛出了这个非常烦人的错误 我不确定我做错了什么 可能是一些非常愚蠢的事情 错误是 错误 10327 twocompliment vhd 21 处的 VHDL 错误 无法确定运算符 na
  • 如何使用触发器输出作为复位信号的输入

    我在柜台里放了 3D 触发器 一旦达到 5 101 我想将 FF 复位输入设置为高 使用或门 复位为低电平有效 这几乎可以工作 但是 当我最初运行程序时 触发器的 Q 输出都是未知的 因此 最初 或门的复位输入为低电平 但是 因为一开始 Q
  • VHDL:按钮去抖动(或不去抖动,视情况而定)

    我已阅读其他帖子 但似乎无法修复我的 我是 VHDL 新手 所以我确信这是一个简单的修复 简而言之 按钮没有防抖 代码编译和比特流程序 在测试台中 按下按钮可以工作 但输出 LED 不会改变 在板上 按下按钮会使随机 LED 亮起 我猜是因
  • VHDL乘法器

    library IEEE use IEEE STD LOGIC 1164 ALL entity Lab3 Adder1 is Port cin in STD LOGIC a in STD LOGIC VECTOR 3 downto 0 b
  • Altera Quartus 谎称未安装 Modelsim

    在 Fedora 22 64 位中安装 Quartus 13 0 和 Modelsim 在 32 位中运行 Quartus 因为否则我会遇到很多很多问题 不过 我可以启动 Quartus 创建项目 综合它 启动仿真窗口并配置输入信号 然后
  • 同时读取和写入寄存器

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

    我已经为我的项目设置了 Sphinx 文档 并希望提取源文件的文档字符串并将它们嵌入到最终文档中 不幸的是 Sphinx 不支持源文件的语言 VHDL VHDL 似乎没有 Sphinx 域 所以我的想法如下 挂钩 Sphinx 运行并在 S
  • VHDL 上的反转位顺序

    我在做类似的事情时遇到困难 b 0 to 7 lt a 7 downto 0 当我用ghdl编译它时 出现顺序错误 我发现使我的电路工作的唯一方法如下 library ieee use ieee std logic 1164 all ent
  • 错误(10028):无法解析网络的多个常量驱动程序... VHDL 错误

    我正在尝试编写一个代码来检测 din 信号的上升沿 并在发生后将 doout 提高 5 个时钟周期 我在编译时不断收到不同的错误 但我不确定它们的含义 我认为我对 VHDL 中的一些概念缺乏基本的了解 但遗憾的是在网上查找并没有给我带来太大
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • Quartus初始化RAM

    我制作了一个实体 其中 quartus 成功识别 RAM 并为其实例化 RAM 宏功能 如果我可以从文件初始化 RAM 那就太好了 我找到了制作此类文件 mif 文件 的教程 现在我已经创建了该文件 我不知道如何让 quartus 初始化该
  • 在VHDL中将8位二进制数转换为BCD

    该算法众所周知 您进行 8 次左移 并在每次移位后检查个位 数十位或数百位 每个 4 位 如果它们超过 4 个 则将 3 个添加到该组中 依此类推 这是一个基于流程的解决方案 但不起作用 它会编译 但输出不是我想要的 有什么想法可能是什么问
  • 将 n 位的 std_logic_vector 向右或向左移位

    我有一个向量signal tmp std logic vector 15 downto 0 我必须将它向左或向右移动 n 位 我怎样才能实现这个操作 我想到了串联操作 但我不知道如何使用它 Use the ieee numeric std库
  • VHDL 中的 #define 等价物是什么

    VHDL 中的 define ifdef 和 ifndef 相当于什么 我想使用泛型作为 define 并根据它们更改设计 举一个简单的例子 定义一个字符串泛型并用它来确定时钟是单时钟还是差分时钟 generic something boo
  • VHDL FSM多驱动网Q连接到常量驱动程序,其他驱动程序被忽略,我的代码有什么问题?

    这段代码是一个 FSM 它是一个摩尔机 艾莉莎 P 哈克 Alyssa P Hacker 有一只蜗牛 沿着纸带爬下去 上面有 1 和 0 蜗牛 每当最后两个时都会微笑 它爬过的数字是 01 设计摩尔和米利 蜗牛大脑的 FSM 代码如下所示
  • VHDL 中的 if 语句

    我有一个关于 VHDL 中 if 语句的问题 请参见下面的示例 signal SEQ bit vector 5 downto 0 signal output bit if SEQ 000001 and CNT RESULT 111111 t

随机推荐

  • sin 和 cos 是如何在硬件上实现的?

    我一直在研究如何计算正弦和余弦 我发现了一些 标准 方法 包括查找表 CORDIC 算法和泰勒级数 我还发现大多数现代处理器都有计算三角函数的汇编指令 我想知道的是这些命令是如何工作的 所以 我的问题是 当前一代处理器使用什么特定算法来计算
  • 有没有办法使用内置的苹果 API 在 mkmapview 中获取方向?

    我知道谷歌地图被认为是最好的地图 但我不想下载一堆额外的库之类的 我更喜欢做一些快速简单的事情来获得从 A 点到 B 点的快速路线并完成它 有没有办法使用内置函数 库来做到这一点 有人能指出我正确的方向吗 EDIT 我并不是想逐个轮流指示或
  • 如何从 Java 字符串中删除空字符 (\0)

    我知道 C 中的这段代码试图删除nul人物 0 来自字符串 string Join mText Split new string 0 StringSplitOptions None 有什么方法可以在 Java 中有效地做到这一点吗 你可以写
  • 对于大 n,java.lang.Math.pow(x, n) 的准确/精确度如何?

    我想计算一下 1 0 p n其中 p 是 0 到 1 之间的双精度值 通常非常接近 0 n 是一个正整数 可能约为数百或数千 可能更大 我还不确定 如果可能的话我想只使用Java的内置java lang Math pow 1 0 p n 为
  • PhantomjsDriver 无法在 Windows 和 Linux 上运行

    我有一个使用 Selenium Webdriver 从站点获取一些信息的应用程序 它在 FirefoxDriver 和 ChromeDriver 上工作得很好 但是当我尝试切换到 PhantomJSDriver 时 我遇到了一些困难 在 W
  • 猫鼬承诺与蓝鸟和打字稿

    我正在使用 nodejs typescript 和 mongodb 数据库开发一个应用程序 为了查询数据库 我正在使用mongoose http mongoosejs com index html 我刚刚读过 mongoose 文档中的一篇
  • 如何在 Swift 中子类化自定义 UIViewController?

    我想创建一个可重用的视图控制器UsersViewControllerBase UsersViewControllerBase延伸UIViewController 并实现两个代表 UITableViewDelegate UITableView
  • 如何知道 spring 生成的 bean 中的 bug 行?

    我有一个使用 Spring 和 jpa 由 hibernate 构建的网站 我遇到了错误 但我不知道如何识别错误出现的行 我无法在我的IDE上调试它 因为它是实时版本 在本地一切运行良好 我有日志说 哦 rg springframework
  • Bash:导出未将变量正确传递给父级

    子脚本中导出的变量在父脚本中未定义 a sh bin bash This is the parent script a sh export var 5e 9 b sh var export result res res is defined
  • 与 SQL 的时区协调

    问题1 3 我有多个MySQL要连接的数据库并希望确保查询之间的时间一致性 例如 其中一台服务器当前位于CDT时区 gt select CURRENT TIMESTAMP system time zone global time zone
  • Xcode:避免使用 Interface Builder 是好主意还是坏主意? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在慢慢学习如何在 Xcode 和 Objective C 中构建应用程序 并且我一直在阅读这篇博文 http blog teamtreeho
  • Rails:使用 CanCan 根据单个模型的实例定义多个角色?

    我目前陷入如何根据我们想要的每个条件来分离 CanCan 角色的问题 在我们的应用程序中 有很多类别 例如数学 英语 历史等 每个类别都有很多课程 每个用户可以在每个类别上拥有许多不同的角色 例如 约翰可以是数学 读者 这意味着他可以阅读数
  • 在 C# 中分割、编码和合并视频部分

    可以将文件分成许多部分 是否可以对每个部分进行编码 然后再次将它们连接起来 这个想法是在多台计算机上对一个视频进行编码 在 NET中 谢谢 您可以从 C 代码中调用 ffmpeg exe 来完成此操作 还有一些库可以完成此任务
  • SNMP:ifAdminStatus 与 ifOperStatus

    我有关于 ifAdminStatus 和 ifOperStatus 的问题 以下是使用 ifAdminStatus 的网络接口状态的输出 snmpwalk Os c public v 1 192 168 1 1 1 3 6 1 2 1 2
  • 通过扩展 Django-Registration 应用程序创建 Django 注册表单

    我尝试通过扩展 django registration 应用程序并使用 Django Profile 创建注册表单 我已经为配置文件创建了模型和表单 当我通过 django shell 检查时 它正在生成字段 对于配置文件字段 我使用 Mo
  • 在续集中的嵌套急切加载中排序不起作用

    我有四个模型 Tehsil Ilr Patwar 和 Village 他们的关联是 Tehsil gt 1 m gt Ilr gt 1 m gt Patwar gt 1 m gt 村庄 我想在我的所有四个模型上应用 order by Que
  • 使用 Android Studio 和 Facebook 4.6.0 膨胀类 com.facebook.login.widget.LoginButton 时出错

    在我的 build gradle 中 我正在导入 Facebook compile com facebook android facebook android sdk 4 6 0 在我的应用程序类中 我正在初始化 Facebook SDK
  • MySQL中反斜杠\算作一个字符吗?

    如果我有一个包含固定长度列的表 mySQL 会将反斜杠算作字符吗 例子 people name 10 age 3 如果我在名称列中存储 MySQL 转义值 例如 Blahblah sMySQL会按照报价砍掉它吗 Thanks 不 转义字符不
  • 如何实际重置 $httpBackend 期望?

    我已经尝试过并试图让它发挥作用 这文档 https docs angularjs org api ngMock service 24httpBackend充其量是简洁的 重置期望 重置所有请求期望 但保留所有后端定义 通常 当您想要重用 h
  • 信号分配在进程中如何工作?

    我了解到信号在遇到表达式时不会立即改变 而是在进程结束时立即改变 在此示例中 signal x y z bit process y begin x lt y z lt not x end process 这个例子是这样说的 如果信号 y 发