Note
这篇文章可能对正在学习类似于数字逻辑与计算机组成(Digital Logic and Computer Organization, DL&CO)课程的学生有一定帮助。
致敬传奇电路仿真软件 Logisim 🫡
这里不是 Logisim 使用说明书,但是这里有一些可能对使用 Logisim 有帮助的内容。
一、你选对 Logisim 版本了吗?
常见的 Logisim 有三种版本(超链接指向下载链接 / Github仓库):
- Logisim,更新止步于 2013 年,后面的版本都是它的 Fork
- Logisim Italian Fork,比较经典的 Fork,似乎是两年一次更新
- Logisim-evolution,比较前沿的 Fork,有较多的新功能,似乎在持续维护
对于 DL&CO 这门课,你应该选择第二个版本,选择正确的版本对你在本地调试有很大的帮助(这三个版本的.circ文件不完全互通)。
二、Logisim Tips
以下是一些在使用Logisim时可能会用到的操作:
Important
考虑到本人语言能力有限,非常建议你动手试一试
熟能生巧嘛
-
选择一个元件,在按住 Ctrl 或 Shift 的情况下,右键可以多次点击放置多个元件。
(按住 Ctrl 或 Shift 的情况下只能右键多次放置;松开 Ctrl 或 Shift 的情况下只能左键单次放置)
-
选中逻辑门再按下数字键可以切换逻辑门的输入位宽(在放置元件时该操作也有效,并且之后放置的门都遵循该设置);
同理可以改变的有“常量”的值(不是位宽)、复用器的选择端位宽
另外,在按住Alt的情况下,数字键专门用于改变数据位宽,比如运算器、寄存器
你可以多选相同元件,然后批量修改位宽
-
放置输入输出引脚后,点击 “工程→分析组合逻辑电路” ,可以通过编辑真值表 / 输入逻辑表达式的方式自动生成组合逻辑电路
-
如果需要跨文件复制电路,可以点击 “工程→加载库→Logisim库” 导入.circ文件,以整体封装的形式使用电路,也可以在导入后复制粘贴
-
编辑模式下鼠标中键点击某根电线(或者在戳模式下左键),会加粗与这根电线有连接的所有电线与节点,可以判断有没有发生错误连线
-
选中元件按方向键可以修改方向,多选元件也有效但是电线不会相应旋转
-
一次 Ctrl+D 操作(复制+粘贴)可以代替一轮 Ctrl+CV 操作
-
Logisim 会主动连接两个重合的端口,即使之后被分开也会用电线主动连接(这一操作尤其对寄存器堆实验有帮助)
-
善用隧道与探针
-
子电路封装界面,在拖拽图形时,按住 Shift 可以限制只能上下左右四方向移动;按住 Ctrl 可以解除吸附网格的限制(
这一条是给强迫症看的)
三、Logisim 电路排查指南
你可以按照以下步骤排查你的电路是否有问题(以及是不是你的问题):
-
重启一次 Logisim 可以解决 Logisim 偶发的渲染问题(尤其是出现莫名其妙的蓝线/红线时)
-
优先排查出现蓝线/红线的地方,善用鼠标中键排查错误连线(早期很多连线问题都是不小心把两个输入端连接到了一起,这种错误通过鼠标中键可以很快排查)
-
没有蓝线/红线但是样例测试不通过 → 针对出现错误输出的部分,对着原理图(如果有)或逻辑式排查问题,善用鼠标中键;如果是时序逻辑电路的话可能还要考虑上升沿/下降沿问题
-
长时间找不到错误点也是很正常的,必要时要有推倒重来的勇气;在难以构建正确的电路时,可以在cslab的实践课程上寻找教程(确保你已经尝试了足够多的思考);真的走投无路的话可以尝试在某六字母网站上体会开源精神,注意可能造成的后果自负
四、其他
Important
《计算机组成与设计:硬件/软件接口(RISC-V Edition)》 是学校所用教材的一大参考文献,学有余力的话/在学习学校所用教材遇到困难时,这本书可能会让你茅塞顿开(上课用的PPT的一部分内容也参考于这本书)
(这本书的RISC-V版本的纸质本有点难买,可以寻找电子书资源)
DL&CO实验交流群里的其他同学很有可能和你踩过一样的坑,他们可能有独特的解决方案(?)
当然,培养独立思考精神是最首要的!
以及欢迎补充🤗