使用 Ksimus 进行数字和模拟电路仿真
我在大学时上了一门计算机逻辑设计课,所以当我偶然发现 Ksimus 电路模拟器时,我被它吸引住了。 恕我怀旧,我记得在学校里构建电路是什么感觉。 我们会在实验室前一晚花几个小时设计电路,小心地列出每个互连。 我们必须跟踪每个芯片上的哪些引脚号需要连接。 然后,我们将我们的设计和零件盒带到实验室。 当我们到达实验室时,我们得到了一块面包板和一个电源。 然后就开始了连接一切的乏味过程。
我承认至少接错了一个电路,烧坏了一两个芯片。 那些小家伙会变得很烫! 然后,有时我们最初的设计根本不起作用。 在这些情况下,我们不得不重新设计我们的项目,并在按时评分之前完成构建。 尽管这门课很有趣,但实验课压力很大。 幸运的是,我们现在有了更好的工具。
Ksimus 是一款电路模拟器,允许您使用分立元件构建数字和模拟电路,并实时模拟它们。 然而,Ksimus 也有其局限性。 Ksimus 不提供任何更大的电路,如可寻址存储器或 8 位加法器,但您可以自己构建一个并将其打包为 Ksimus 模块。 此外,由于 Ksimus 仅提供分立逻辑组件,您可能不会设计四核微处理器或任何中等复杂度的东西。 话虽如此,您当然可以使用 Ksimus 来学习计算机逻辑设计,甚至可以使用它来模拟基本逻辑电路。 但是,最重要的是,玩起来真的很有趣!
Ksimus 的用户界面非常简单明了。 窗口左侧有一个组件列表,右侧有一个画布。 要将组件放置在画布上,您可以单击组件,然后单击画布上您希望组件出现的位置。 在两个设备之间建立连接也很直观。 您将光标放在第一个引脚上,您会注意到光标发生了变化。 然后,您按住鼠标左键并将光标拖动到第二个引脚并释放按钮。 我玩 Ksimus 一段时间后才意识到当我进行互连时光标变成了什么; 它变成了一个微小的绕线工具! Ksimus 非常智能,不会让您连接两个输入或两个输出,因此您不必担心烧坏您的虚拟逻辑门!
当您构建了一个想要测试的设计时,您可以从顶部的菜单栏启动模拟。
Ksimus 程序易于使用,并且有很多组件可用于您的设计。 显然,任何数字逻辑模拟器都将具有典型的 AND、OR、NOT 和 XOR 门。
许多组件都是可配置的。 例如,计数器组件可以配置为从 3 位计数器到 16 位计数器之间的任何值。 Ksimus 中还包含各种触发器,包括 JK、RS 和 D 触发器。 事实上,有两种不同的 D 触发器:一种是单门,另一种是模块,具有 1 到 26 个门之间的任意数量。 通过添加一些额外的寻址逻辑(Ksimus 随附),您可以几乎轻松地构建自己的可寻址存储器。 Ksimus 还提供可变大小的多路复用器以及解复用器。
Ksimus 允许您从各种来源为您的电路提供输入。 最基本的输入源之一是时钟发生器。 时钟发生器允许您配置初始启动延迟以及导通时间和断开时间占空比。 您还可以包含可以在模拟期间由用户“按下”的按钮。 Ksimus 包括瞬时接触/断开开关和锁存开关,并且这些开关不像真正的开关那样会弹跳! 当然,还有布尔真值和假值,可以作为恒定输入提供给您的电路。
如果逻辑电路不产生任何输出,那就不好玩了,Ksimus 为用户提供了 LED 输出以及带有内置解码器的 7 段显示器。 要使用 7 段显示器,您只需在其四个输入线上提供适当的二进制值,它就会显示相应的数字。 您还可以使用数据记录器和文本记录器作为电路的输出。 数据记录器本质上是一个多通道逻辑探针。 您只需将输入通道添加到记录器(并连接)并运行模拟。 然后,您可以打开探针的图表并实时观看显示。 文本记录器执行相同的功能,只是它记录到外部文件以供以后分析。
图 1 显示了一个我在几分钟内构建的简单电路。 该电路使用时钟信号来驱动计数器。 计数器的输出用作解复用器的地址,该解复用器仅驱动一排 LED。 该电路只是按顺序选通 LED - 一个简单但有效的演示。
到目前为止,您已经看到了关于 Ksimus 数字功能的相当详细的介绍,但该程序也具有相当多的浮点或模拟功能。 使用波形发生器和各种算术运算符,我能够构建一些相当复杂的波形来提供给我的电路。 使用这些功能可以让您创建物理现象的模型,并将其与您的数字电路连接起来进行模拟。
浮点算术组件包括加法器、减法器、除法器和乘法器。 您还可以在模拟中使用指数、对数和三角函数。
浮点比较组件允许您比较两个模拟信号并输出适当的数字逻辑电平。 数据选择器组件允许您使用数字地址来选择多个模拟信号之一。 您还可以创建具有恒定模拟值的输入。 从这些组件中,很容易看出您如何构建模数转换器或数模转换器。
我发现唯一对模拟输入有用的可变输入是滑块。 滑块允许您在模拟期间手动改变输出电压。 您还可以配置输出的上限和下限。
正如您所看到的,Ksimus 的模拟功能相当完整。 图 2 显示了一个我构建的模拟电路,用于演示滑块输入以及数据记录器。 在此电路中,我有一个正弦波和一个范围从 -1 到 1 的模拟滑块。 我将这两个输出发送到两个比较运算符,并获得一个数字输出,我用它来驱动几个 LED。 我还包含了一个标签,显示滑块输出的实际值。 最后,您可以在图形窗口中看到各种波形和逻辑状态。 当模拟运行时,我可以调整滑块以更改两个 LED 的相对占空比。
所以,就是这样。 Ksimus 是探索数字逻辑以及模拟接口问题的绝佳实验室。 正如我之前所说,玩起来真的很有趣!