VHDL 中的进程是可重入的吗?

2024-03-19

一个进程是否可以连续运行两次或多次VHDL?

如果在进程的顺序执行未完成的情况下发生另一个事件(在敏感信号列表上),会发生什么?

有可能还是我的VHDL流程中的模型完全错误?


进程运行时不会发生任何事件!

当进程被事件唤醒时,它会运行到完成(“结束进程”)或显式“等待”语句,然后进入睡眠状态。理论上,这需要零时间。这意味着,如果您的流程中有循环,它们会有效地完全展开,并且当您综合时,您将生成足够的硬件来并行运行每个迭代。此外,任何过程、函数等都花费零时间 - 除非它们包含显式的“等待”语句(在这种情况下,进程在“等待”处挂起,就像过程已被内联一样)。

在整个过程中,所有信号都具有进程唤醒时最初具有的值,并且所有信号分配都会被存储起来,以便稍后发生。 (变量立即更新;流程中的后续语句会看到新值)。

当进程挂起时(在“等待”或“结束进程”),在所有其他进程也挂起之前不会发生任何事情。 (但请记住,它们都需要零时间!)。如果进程在“结束进程”处挂起,当其敏感度列表将其唤醒时,它将从头重新启动。如果它在显式“等待”处挂起,则该“等待”将指定一个事件或未来时间,这将在“等待”之后重新启动它。 (注:1:不要在同一过程中混合敏感度列表和等待样式!2:等待直到某个事件可综合(尽管某些工具可能会反对);等待一段时间只是模拟)

然后执行所有信号分配。由于所有进程都处于睡眠状态,因此消除了所有竞争条件和计时风险。其中一些分配(例如时钟的“1”)将导致事件被调度到对它们敏感的进程上。

所有信号分配完成后,时间向前推进一个无限短的周期(称为增量周期),然后唤醒所有具有预定事件的进程。

这种情况一直持续到发生增量循环为止,其中没有安排新事件,最后模拟可以按实时步骤前进。

Thus

process(clk)
begin
if rising_edge(clk) then
   A <= B;
   B <= A;
end if;
end process;

在 VHDL 中是无危险的。

如果您需要使用 Verilog,请注意其中一些情况的发生方式有所不同,并且您不能依赖仿真结果中相同级别的可预测性。


当然,在综合过程中,我们生成硬件,这需要一些实时时间来执行此过程。然而,综合和后端工具(布局和布线)保证要么忠实地遵守该模型,要么失败并报告失败的原因。例如,他们会将所有实际延迟相加,并验证总和是否小于您指定的时钟周期。 (除非您将时钟速度设置得太高!)。

因此,结果是,只要工具报告成功(并且您正确设置了时钟速度等时序约束),您就可以假装上述“零时间”模型是正确的,并且真实的硬件行为将与模拟相匹配。有保证,排除工具错误!

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

VHDL 中的进程是可重入的吗? 的相关文章

  • 在 Java 中启动进程?

    有没有办法在Java中启动一个进程 在 Net 中 这是通过以下方式完成的 System Diagnostics Process Start processname Java 中是否有等效项 以便我可以让用户找到该应用程序 然后它适用于任何
  • 如何在 HTML 中打印每个项目之间有延迟的列表

    Id for each item p p p p p p
  • 如何在 C# 中执行 cmd,然后在同一窗口中执行后面的另一个命令?

    我想要完成的是一个基本上一键设置活动分区的程序 节省了使用 cmd 提示符等的时间和技巧 我已经研究了 System Management 名称空间 但无法弄清楚如何使用它 所以我求助于使用 CMD 我有一个用 C 编写的模块应用程序 基本
  • 不受信任的 URL 字符串的安全 Process.Start 实现

    我的目标是在用户默认浏览器中安全地打开网页 该网页的 URL 被视为 不受信任 将其视为使用该软件打开的文档中的链接 但该文档可能来自任何地方 并且其中的链接可能是恶意的 我想避免有人将 C Windows malicious code e
  • 关于僵尸进程和线程的问题

    自从我阅读一些有关进程和线程的新主题以来 我脑海中浮现出这些问题 如果有人能帮助我 我会很高兴 1 如果一个线程被标记为不可取消 然后该进程在临界区内被终止 会发生什么 2 我们的程序是否有操作系统已知的主线程 我的意思是操作系统是否给予程
  • Mule 中使用日期的 JMS 消息选择器

    在 Mule 3 3 1 中 在异步处理期间 当我的任何外部服务关闭时 我想将消息放在队列中 retryQueue 具有特定的 下次重试 时间戳 处理来自此的消息的流程retryQueue根据 下次重试 时间选择消息 如果 下次重试 时间超
  • C# 中防止子进程显示 shell 窗口

    我正在使用 ffmpeg 编译视频 我想防止它在执行操作时显示控制台 这是我启动 ffmpeg 的方法 ProcessStartInfo si new ProcessStartInfo si Arguments string Format
  • 从 C# .net 调用 python.py

    我在从 C 调用 python 脚本时遇到问题 我的 python 脚本根据参数 1 和参数 2 计算一个值并发送计算出的值 我无法获得计算值 比如说 我正在使用一个简单的 python 类并调用 C 以下是 python py impor
  • 如何知道gdb附加了哪个进程(stat: T)?

    当 gdb 附加进程时 该进程的 stat 为 T 例如 root 6507 0 0 0 0 67896 952 Ss 12 01 0 00 mytest root 6508 0 0 0 0 156472 7120 Sl 12 01 0 0
  • Process.Start 返回 null 时查找进程 ID?

    如果我尝试通过调用打开图像文件 视频或网站Process Start filepath 直接 那么它通常会成功 但是 Process Start 的返回值有时将为 null 正如这里所讨论的 https stackoverflow com
  • C# Process.MainWindowHandle 始终返回 IntPtr 零

    这是我的代码 using Process game Process Start new ProcessStartInfo FileName DatabaseCheck exe RedirectStandardOutput true Crea
  • 32x8 寄存器文件 VHDL 测试台

    我已经用 vhdl 编写了该电路的汇编代码 我想用测试台来模拟它 RegWrite 1 位输入 时钟 写寄存器个数 3位输入 写地址 写入数据 32 位输入 数据输入 读取 寄存器编号 A 3 位输入 读取地址 读取寄存器编号 B 3 位输
  • Objective C - 音频延迟估计的互相关

    我想知道是否有人知道如何执行互相关两个音频信号之间iOS 我想将接收器 我正在从麦克风接收信号 处获得的 FFT 窗口与发射器处 正在播放音轨 处的 FFT 窗口对齐 即确保每个窗口的第一个样本 除了发射机的 同步 周期之外 也将是接收机的
  • 通过从 .BAT 中查找进程正在使用的端口来终止进程

    在 Windows 中 什么可以查找端口 8080 并尝试通过 BAT 文件终止它正在使用的进程 打开命令提示符并运行以下命令 C Users username gt netstat o n a findstr 0 0 3000 TCP 0
  • 使用 Process.Start() 启动后等待 WPF 应用程序加载

    我有一个 WinForms 应用程序 它启动一个运行的 wpf 进程Process Start 我想知道 WPF 进程何时完成加载并且我可以访问process MainWindowHandle属性 在完全加载之前其值为 0 我尝试轮询 但句
  • Android中每10秒显示一次数据

    我必须每 10 秒后显示一些数据 谁能告诉我该怎么做 您还可以使用另一种方法按特定时间间隔更新 UI 以上两个选项都是正确的 但根据具体情况 您可以使用替代方法在特定时间间隔更新 UI 首先为 Handler 声明一个全局变量 用于从 Th
  • 无法从 GetProcessId(.. hWnd) (pInvoke) 中提取 processID

    我使用以下方法 DllImport kernel32 dll SetLastError true static extern int GetProcessId IntPtr hWnd 尝试获取正在运行的进程的 processId 我拥有的唯
  • 在 Mac 上查找(并杀死)锁定端口 3000 的进程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何找到 并终止 侦听 使用我的 TCP 端口的进程 我在 macOS 上 有时 在崩溃或出现一些错误后 我的 Rails 应用程序会锁定
  • 如何触发并忘记子进程?

    我有一个长时间运行的进程 我需要它来启动另一个进程 该进程也会运行很长一段时间 我只需要开始它 然后就完全忘记它 我设法通过从 Ruby 编程 一书中获取一些代码来完成我需要的操作 但我想找到最好 正确的方法 并了解发生了什么 这是我最初得
  • 在 Perl 中,如何从父进程向子进程发送消息(或信号),反之亦然?

    我正在编写一个管理多进程的程序 这就是我所做的 而且效果很好 但现在 我想将消息从子进程发送到父进程 反之亦然 从父进程到子进程 你知道最好的方法吗 你知道我所做的是否是我想要的正确方法 从子进程到父进程发送消息 信号或共享内存 反之亦然

随机推荐

  • 如何从 TypeScript 中的通用部分构建目标对象?

    我在用 电子邮件受保护 cdn cgi l email protection 我有一个目标对象 interface MyTarget a string b string c string d string 我想使用泛型创建部分对象的多个转换
  • jquery-confirm 对话框中的 jQuery UI 日期选择器

    我正在使用下面链接中的 jquery confirm 脚本 它能够在对话框中包含表单字段 您可以通过单击下面链接中的 按提示操作 蓝色按钮来查看此内容 我已经设置了表单 单个字段 但我希望这个输入是一个日期选择器 并且我不知道应该在哪里放置
  • Django Q 查询 & 在同一字段上?

    这是我的模型 class Event models Model user models ForeignKey User blank True null True db index True name models CharField max
  • 下拉菜单中的 jvectormaps,NS_ERROR_FAILURE:

    我的 jvector 地图位于下拉菜单中 它在 safari opera 和 chrome 中运行良好 但会损坏 没有地图 和错误消息 NS ERROR FAILURE 2 0 2 min js 第 700 行 return this no
  • LinkedList不能序列化?

    这是我的课程 http pastebin com 3dc5Vb1t http pastebin com 3dc5Vb1t 当我尝试跑步时 BookStore b new BookStore b LoadFromXML Server MapP
  • 如何替换 Tkinter 应用程序中的图标?

    我在 Windows 10 上使用 Python 3 5 0 并且想要替换它 要更改图标 您应该使用iconbitmap or wm iconbitmap我的印象是您想要将其更改为的文件必须是 ico 文件 import tkinter a
  • C#:GPS跟踪系统[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 C net 中构建带有移动设备 带 GPS 的 GPS 跟踪系统 场景是 通过支持 GPS 的手机跟踪用户 服务工程师 这里没
  • 保持鼠兔 BlockingConnection 存活而不禁用心跳

    我正在使用 pika 0 10 0 和 python 2 7 版本开发 RabbitMQ 消费者 在我的消费者客户端中 我有一个根据输入消息运行一段时间的进程 时间可能从 3 到 40 分钟不等 我不想禁用心跳 相反 我正在寻找一些回滚机制
  • Ruby on Rails - 简单表单自动完成关联搜索

    我在基本任务管理应用程序中有一个表单 允许将任务分配给用户 任务属于用户 我为此使用简单表格 目前 该关联以典型方式填充 带有用户下拉列表 如下所示 但是 随着用户数量的增长 我希望将其更改为自动完成表单字段以查找用户 我尝试过遵循Rail
  • 使用原生SQL查询时如何指定数据类型?

    我正在使用休眠 我已经编写了本机 SQL 查询 我想指定其中一列的数据类型 如下所示 sqlQuery addScalar NAME STRING 我正在查询 5 列并且ID是其中的一栏 但如果我使用addScalar 它不返回所有列 只返
  • 用于 BLE 的 BluezV5.42 DBUS C API?

    我开发了 BLE 应用程序openwrt using BLUEZV5 30 我能够通过提取源代码来创建应用程序gatttool and hcitool 我还添加了这些工具提供的更多功能 例如阅读rssi 不过 我已经升级了我的bluez堆叠
  • JSON.net - 字段可以是 string 或 List

    我有一种情况JSON从一个返回REST service 返回电影对象列表 所有对象都包含大量信息 其中有几个字段REST 服务结果根据可用信息而变化 举个例子 电影总是有一些屏幕截图 图像 演员和导演 根据所讨论的电影 可能有一张或多张图像
  • Intersection Observer rootMargin 在 x 轴上未按预期工作

    我正在尝试使用交集观察器 API 为一个侧面项目实现图像延迟加载 我面临的问题是 无论我如何调整 x 轴的 rootMargin 例如 0px 300px 0px 0px 交叉点似乎只发生在视口上 预期 在进入视口之前相交 300px 时加
  • 是否可以在 C# 类库中创建 Windows 窗体?

    我一直在用 C 构建 DLL 类库 用作提供自定义 API 的应用程序的附加组件 到目前为止 它们主要包括与数据库 计算 磁盘操作等的接口 我很想知道是否可以在 DLL 类库内构建和显示 Windows 窗体 显示文本框 按钮等 I tri
  • 如果“cargo build”比直接运行 rustc 慢,为什么我应该使用 Cargo?

    我创建了一个简单的 hello world 程序 fn main println Hello world 编译代码时使用rustc vs cargo build 货物命令显得较慢 它需要1 6s for cargo build vs 1s
  • 我们如何在Python中通用地使用sin、cos、tan(包括用户定义的类型)?

    编辑 让我尝试改写并改进我的问题 旧版本附在底部 我正在寻找一种以类型通用的方式表达和使用自由函数的方法 例子 abs x maps to x abs next x maps to x next at least in Python 3 x
  • 如何使用nosetests测试函数是否在函数内被调用

    我正在尝试为项目设置一些自动单元测试 我有一些函数 作为副作用 它们偶尔会调用另一个函数 我想编写一个单元测试来测试第二个函数是否被调用 但我被难住了 下面是伪代码示例 def a self data self get if len dat
  • FIREBASE 警告:无效的查询字符串段:[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在 Firebase 日志控制台中不断收到这些警告 FIREBASE 警告 无效的查询字符串段 我检查了所有内容 但找不到一些原
  • Reactjs 意外的标记“<”

    我用react redux redux创建了reactjs应用程序 启动reactjs项目时 在索引文件的第13行出现意外的令牌错误 索引文件如下 ERROR in src index js Module build failed Synt
  • VHDL 中的进程是可重入的吗?

    一个进程是否可以连续运行两次或多次VHDL 如果在进程的顺序执行未完成的情况下发生另一个事件 在敏感信号列表上 会发生什么 有可能还是我的VHDL流程中的模型完全错误 进程运行时不会发生任何事件 当进程被事件唤醒时 它会运行到完成 结束进程