如何处理数字逻辑模拟器中的循环?

2024-05-23

我正在开发一个数字逻辑模拟器,以便稍后在其中构建我自己的 CPU(所以这是一个长期项目)。对于没有循环的电路,例如全加器,一切都非常有效。还有像 SR 锁存器这样的电路,其中一个门的输入连接到另一个门的输出。所以我陷入了循环,因为两个门都需要另一个门的输出来计算自己的输出。
解决这个问题的最佳方法是什么?我以某种方式实现它,(当检测到循环时)它将返回最后的输出。或者,当这是第一次运行时(因此没有先前的输出),我将返回零(低)。所以我只是假设所有输出一开始都是低/零。到目前为止它有效,但我确信这不是解决问题的好方法。

有任何想法吗?


在许多情况下,简单地将每个门建模为具有单位传播延迟是一种很好的方法。一个稍微复杂的替代方案是让大多数组件的“模拟步骤”例程检查模拟时间是否提前了“整步”,并且仅在是的情况下才更新其输出;一些组件可以省略该检查,而是请求在其他组件有机会更新后在模拟步骤中再次运行它们。这将允许某些组件假装具有零传播延迟,只要它们没有嵌套太深(模拟应该限制在决定组件不会执行之前尝试运行每个组件的评估状态例程的次数)达到稳定状态)。

根据具体模拟的内容,我建议您的组件除了“高”和“低”之外还有多种输出状态。即使添加“不确定”状态也会有所帮助,因为当组件的输入以可能影响其输出的方式发生变化时,输出将在最短传播时间后变得“不确定”,并在最大传播时间后呈现合法值输入有效后的传播时间。请注意,随着信号通过更多级别的逻辑,它们“不确定”的时间将会增加。有意义地模拟任何事物的唯一方法是拥有一个假设稳定的时钟,并确保时钟周期足够长,以便事物可以在它们之间完全稳定。

以这种方式进行模拟的优点是,虽然在许多实际工作的电路上模拟会“失败”(产生“不确定”值),但这种模拟产生确定性结果的事实表明,构建的真实电路同样的方式也会这样做。不幸的是,对于依赖边沿触发锁存器的电路,最常见的模拟结果将是“不确定的”,即使对于实际工作的可能性为 100% 的电路也是如此。为了缓解这个问题,人们通常会想对一些门进行“恶咒”,以免延长“不确定”的间隔。这样做有点像“作弊”,并且可能会导致电路在模拟中工作但在现实中失败。尽管如此,如果仔细应用这些作弊手段,它们可能会使模拟比其他方式更有用。

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

如何处理数字逻辑模拟器中的循环? 的相关文章

  • 在 Java 中循环数组的前 20 个元素

    我这里有这个循环 for int i 0 i lt prices length i if prices i gt largest largest prices i else if prices i
  • 根据同一 select 语句中先前计算的行(或列)计算新行(或列)

    我正在尝试根据年度销售增长预期来计算年度预期销售量 在一张表中 我有实际销量 create table Sales ProductId int Year int GrowthRate float insert into Sales valu
  • 使用自动热键中的热键切换键

    So I tried to automate running in a game where the map is huge and I have to run miles I wanted to toggle on the hotkey
  • 如何在Shiny中动态生成的条件面板中格式化条件?

    我正在尝试使用 for 循环在 Shiny 中创建小部件 每个块包含 label 复选框 选择选择器 两个数字输入 我想根据复选框的值和选择选择器的值来设置显示或隐藏两个数字输入的条件 在我创建的 for 循环中 我为每个小部件变量添加了一
  • 每 30 秒运行一次 Laravel 方法

    我有一个在我调用应用程序上的特定 URL 时运行的方法 它处理数据库队列中的行 该间隔被设置为 Cron 可能的最小间隔 即 1分钟 这需要减少到 30 秒 所以我想知道如何最好地实现这一目标 我想我可以在我的脚本中构建一个循环 运行代码两
  • 如何比较 JavaScript 表格中的单元格并测试是否相等? indexOf 是如何工作的?

    我在 HTML 代码中创建了一个表格 它有 9 列和 13 行 它被 JavaScript 循环完全填满 该循环用几个数组中的人名填充它 但是 我想添加一个验证步骤 确保一行中没有两个单元格具有相同的值 并且每个单元格的值不会在其正下方的单
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 计算按前两列中的索引分组的 numpy 数组条目的第 N 列的总和?

    我想循环以下内容check matrix以这样的方式 代码可以识别第一个和第二个元素是否是1 and 1 or 1 and 2ETC 然后对于每个单独的类对 即1 1 or 1 2 or 2 2 代码应将最后一个元素 在本例中索引为 8 乘
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • AS3 - for (... in ...) 与 for every (... in ...)

    以下代码执行完全相同的操作 之间有区别吗for each and for in var bar Array new Array 1 2 3 for var foo in bar trace foo for each var foo2 in
  • 如何在 Twig 中渲染树

    我想渲染一棵深度不确定的树 孩子的孩子的孩子等 我需要递归地循环遍历数组 我怎样才能在 Twig 中做到这一点 我玩过domi27的想法 https stackoverflow com questions 8326482 how to re
  • 如何在Python中循环并存储自变量中的值

    我对 python 很陌生 所以这听起来可能很愚蠢 我进行了搜索 但没有找到解决方案 我在 python 中有一个名为 ExcRng 的函数 我可以对该函数执行什么样的 for 循环 以便将值存储在独立变量中 我不想将它们存储在列表中 而是
  • int 对象在尝试对数字的数字求和时不可迭代? [复制]

    这个问题在这里已经有答案了 我有这个代码 inp int input Enter a number for i in inp n n i print n 但它抛出一个错误 int object is not iterable 我想通过将每个
  • 循环访问多个 CSV 文件并生成多个输出

    我正在编写一些 python 脚本 它打开 csv 文件 定义数据帧 运行一些分析 例如聚合数据 拆分列 查找平均值等 并将分析的输出绘制在图表上 输出将是一个图形 png 文件 和一个 csv 文件 并在原始文件名末尾添加单词 ANALY
  • 将两个相似的 jQuery 脚本组合成一个 if/then 脚本

    我正在尝试根据回答的问题中的代码组合两个 jQuery 循环here https stackoverflow com questions 25175757 use jquery to move wordpress post attachme
  • 为什么for循环只显示最后一个循环的结果

    我有这个样本矩阵 X1 X2 X3 X4 1 F F F F 2 C C C C 3 D D D D 4 A A A A 我正在尝试使用 for 循环来获取每列中唯一音高的数量 我正在尝试这样做 y lt read csv file fra
  • 将用户定义的函数应用于数据框列表

    我有一系列结构与此类似的数据框 df lt data frame x c notes year 1995 2005 y c NA value 11 21 df2 lt data frame x c notes year 1995 2005
  • 如何循环访问 WPF StackPanel 静态项目?

    可能很容易 但我很难弄清楚这一点 谷歌似乎也没有多大帮助 如何循环遍历 StackPanel 的静态声明元素 无数据绑定 元素在 xaml 中声明 任何帮助表示赞赏 你的意思是StackPanel的孩子们 foreach var child
  • 将选择结果(一列)拆分为多列

    我一直在努力找出如何实现这一目标 但我认为我一开始就没有能力知道要寻找什么 我正在使用现有系统 我无法更改数据库架构 也无法规定用户如何输入数据 我必须利用我们现有的资源来工作 目前 我们的用户正在将统计数据放入表中的一个文本字段中 他们使

随机推荐

  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 如何在 Visual Studio 2015 中使用 Angular-Cli 和 ASP.NET Core 设置 asp.net Angular 2 项目?

    我使用 Angular cli 设置了 Angular 2 项目 它非常适合我 有什么方法可以将此项目添加到 Visual Studio 中的 ASP NET Core 中 我会将 Angular 2 项目移动到 ASP NET Core
  • 错误 #520009 - 帐户受到限制

    我收到 520009 错误 帐户 电子邮件受保护 cdn cgi l email protection被限制 当尝试进行并行付款时 我的代码使用沙箱运行良好 但我切换到实时端点 它开始失败 有问题的帐户是有效的 PayPal 帐户 我使用的
  • 如何通过 python 多处理利用所有核心

    我一直在摆弄Python的multiprocessing现在已经使用了一个多小时的功能 尝试使用并行化相当复杂的图形遍历函数multiprocessing Process and multiprocessing Manager import
  • 在 PHP 中将整数转换为十六进制值

    如何将PHP中第一类中的数字转换为第二类中的数字 是否有内置函数来转换数字 也是我的标题 将整数转换为十六进制值 甚至正确 class Permission const READ 1 const UPDATE 2 const DELETE
  • 如何在 Vim 中同时打开多个文件?

    有没有办法从 Vim 中打开目录中的所有文件 所以一个 command这实际上是说 打开下面的所有文件 some path进入缓冲区 理想情况下 递归地打开目录下的所有文件会很棒 您正在寻找的命令是 args 例如 args path to
  • 如何将本地文本文件上传到文本区域(网页内)

    我是一名新手程序员 需要一些帮助来弄清楚如何将本地文本文件上传到我正在构建的网站内的文本区域 我非常精通 HTML CSS 对 Javascript JQuery 有相当的了解 而且我刚刚学习 PHP 您能提供的任何帮助我将不胜感激 我有一
  • 放心 + 模拟 MVC @ControllerAdvice

    在我的项目中 我使用 Rest Assured MockMVC 并具有以下依赖项
  • 如何在 Go 中填写 void* C 指针?

    我正在尝试与 Go 中的一些 C 代码交互 使用 cgo 这一直相对简单 直到我遇到这种 相当常见 的情况 需要将指针传递给本身包含指向某些数据的指针的结构 我似乎无法弄清楚如何从 Go 中做到这一点 而不诉诸于将结构的创建放入 C 代码本
  • ResourceVersion 和 Generation 之间有什么区别?

    在 Kubernetes 对象元数据中 有的概念resourceVersion and generation https github com kubernetes community blob master contributors de
  • 测量数组的“无序”程度

    给定一个值数组 我想找到总 分数 其中每个元素的分数是数组中出现在其之前的具有较小值的元素的数量 e g values 4 1 3 2 5 scores 0 0 1 1 4 total score 6 O n 2 算法很简单 但我怀疑可以通
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 通过 post 使用 php 发送 XML

    我知道有很多类似的问题 但我尝试过摆弄所有的解决方案 但似乎无法使其发挥作用 我正在尝试将 xml 直接发布到 Web 服务并获得响应 从技术上讲 我正在尝试连接到freightquote com 您可以在右上角找到该文档this http
  • CSS如何制作可滚动列表

    我正在尝试创建一个由标题和标题下方的项目列表组成的网页 我希望项目列表可以垂直滚动 我还希望网页占据整个窗口 但不要更大 目前我的问题是项目列表不可滚动 而是延伸到窗口底部下方很远 这导致窗口可滚动 应该做什么CSS属性位于html bod
  • Magento 重新索引问题

    I am facing one issue in Magento I am having one Magento store with multi website functionality which containing approx
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 如何处理数字逻辑模拟器中的循环?

    我正在开发一个数字逻辑模拟器 以便稍后在其中构建我自己的 CPU 所以这是一个长期项目 对于没有循环的电路 例如全加器 一切都非常有效 还有像 SR 锁存器这样的电路 其中一个门的输入连接到另一个门的输出 所以我陷入了循环 因为两个门都需要