Note

这篇文章可能对正在学习类似于数字逻辑与计算机组成(Digital Logic and Computer Organization, DL&CO)课程的学生有一定帮助。

致敬传奇电路仿真软件 Logisim ​🫡

这里不是 Logisim 使用说明书,但是这里有一些可能对使用 Logisim 有帮助的内容。

一、你选对 Logisim 版本了吗?

常见的 Logisim 有三种版本(超链接指向下载链接 / Github仓库):

  1. Logisim,更新止步于 2013 年,后面的版本都是它的 Fork
  2. Logisim Italian Fork,比较经典的 Fork,似乎是两年一次更新
  3. Logisim-evolution,比较前沿的 Fork,有较多的新功能,似乎在持续维护

对于 DL&CO 这门课,你应该选择第二个版本,选择正确的版本对你在本地调试有很大的帮助(这三个版本的.circ文件不完全互通)。

二、Logisim Tips

以下是一些在使用Logisim时可能会用到的操作:

Important

考虑到本人语言能力有限,非常建议你动手试一试

熟能生巧嘛

  1. 选择一个元件,在按住 Ctrl 或 Shift 的情况下,右键可以多次点击放置多个元件。

    (按住 Ctrl 或 Shift 的情况下只能右键多次放置;松开 Ctrl 或 Shift 的情况下只能左键单次放置)

  2. 选中逻辑门再按下数字键可以切换逻辑门的输入位宽(在放置元件时该操作也有效,并且之后放置的门都遵循该设置);

    同理可以改变的有“常量”的值(不是位宽)、复用器的选择端位宽

    另外,在按住Alt的情况下,数字键专门用于改变数据位宽,比如运算器、寄存器

    你可以多选相同元件,然后批量修改位宽

  3. 放置输入输出引脚后,点击 “工程→分析组合逻辑电路” ,可以通过编辑真值表 / 输入逻辑表达式的方式自动生成组合逻辑电路

  4. 如果需要跨文件复制电路,可以点击 “工程→加载库→Logisim库” 导入.circ文件,以整体封装的形式使用电路,也可以在导入后复制粘贴

  5. 编辑模式下鼠标中键点击某根电线(或者在戳模式下左键),会加粗与这根电线有连接的所有电线与节点,可以判断有没有发生错误连线

  6. 选中元件按方向键可以修改方向,多选元件也有效但是电线不会相应旋转

  7. 一次 Ctrl+D 操作(复制+粘贴)可以代替一轮 Ctrl+CV 操作

  8. Logisim 会主动连接两个重合的端口,即使之后被分开也会用电线主动连接(这一操作尤其对寄存器堆实验有帮助)

  9. 善用隧道与探针

  10. 子电路封装界面,在拖拽图形时,按住 Shift 可以限制只能上下左右四方向移动;按住 Ctrl 可以解除吸附网格的限制(这一条是给强迫症看的

三、Logisim 电路排查指南

你可以按照以下步骤排查你的电路是否有问题(以及是不是你的问题):

  1. 重启一次 Logisim 可以解决 Logisim 偶发的渲染问题(尤其是出现莫名其妙的蓝线/红线时)

  2. 优先排查出现蓝线/红线的地方,善用鼠标中键排查错误连线(早期很多连线问题都是不小心把两个输入端连接到了一起,这种错误通过鼠标中键可以很快排查)

  3. 没有蓝线/红线但是样例测试不通过 → 针对出现错误输出的部分,对着原理图(如果有)或逻辑式排查问题,善用鼠标中键;如果是时序逻辑电路的话可能还要考虑上升沿/下降沿问题

  4. 长时间找不到错误点也是很正常的,必要时要有推倒重来的勇气;在难以构建正确的电路时,可以在cslab的实践课程上寻找教程(确保你已经尝试了足够多的思考);真的走投无路的话可以尝试在某六字母网站上体会开源精神,注意可能造成的后果自负

四、其他

Important

《计算机组成与设计:硬件/软件接口(RISC-V Edition)》 是学校所用教材的一大参考文献,学有余力的话/在学习学校所用教材遇到困难时,这本书可能会让你茅塞顿开(上课用的PPT的一部分内容也参考于这本书)

(这本书的RISC-V版本的纸质本有点难买,可以寻找电子书资源)

DL&CO实验交流群里的其他同学很有可能和你踩过一样的坑,他们可能有独特的解决方案(?)

当然,培养独立思考精神是最首要的!

以及欢迎补充🤗