Note
这篇文章可能对正在学习数字逻辑与计算机组成(Digital Logic and Computer Organization, DL&CO或相关课程的学生有一定帮助。
致敬传奇电路仿真软件 Logisim 🫡
Tip
这里不是 Logisim 使用说明书,这里存放了一些可能对使用 Logisim 有帮助的内容。
如果你在寻找完全入门教程,这里有一些帮助:
官方的 Guide (学会ReadTheFriendlyManual)
直接 SearchTheFriendlyWebsite 也可以,问 AI 也可以
(实际上这门课不需要对 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
的情况下只能左键单次放置)(比如说你要放置
x
个某元件,可以按住Shift
右键放置x-1
个元件,再松开Shift
左键放置最后一个元件) -
选中逻辑门再按下数字键可以切换逻辑门的输入位宽(在放置元件时该操作也有效,并且之后放置的门都遵循该设置);
同理可以改变的有“常量”的值(不是位宽)、复用器的选择端位宽
在额外按住
Alt
的情况下,数字键专门用于改变数据位宽,比如运算器、寄存器最好自己试一试,以防你分不清按不按住
Alt
分别修改的是什么值,以及理解这一条 Tip 在说什么你可以多选相同元件,然后批量修改位宽
-
放置输入输出引脚后(并且正确为引脚命名),点击 “工程→分析组合逻辑电路” ,可以通过编辑真值表 / 输入逻辑表达式的方式自动生成组合逻辑电路
-
如果需要跨文件复制电路,可以点击 “工程→加载库→Logisim库” 导入.circ文件,以整体封装的形式使用电路,也可以在导入后对整个电路复制粘贴(如果你不希望后续的实验存在过多的子电路文件依赖,我建议对整个电路复制粘贴,否则使用封装电路更加简洁)
-
编辑模式下鼠标中键点击某根电线(或者在戳模式下左键),会加粗与这根电线有连接的所有电线与节点,可以辅助判断有没有发生错误连线(比如同一逻辑门的两个输入不小心连接到了一起)
-
选中元件按方向键可以修改元件朝向(多选元件按方向键也有效,但是电线不会相应旋转)
-
一次
Ctrl+D
操作(复制+粘贴)可以代替一轮Ctrl+CV
操作 -
Logisim 会主动连接端口,即使之后被分开也会尝试用电线主动连接
(你可以试一试将一个/一堆元件的端口拖动到电线上再尝试拿开元件。这对某些连线操作有帮助,比如寄存器堆实验)
-
善用隧道与探针(前者防止电线连接过度复杂,后者有助于 debug)
-
子电路封装界面,在拖拽图形时,按住
Shift
可以限制只能上下左右四方向移动;按住Ctrl
可以解除吸附网格的限制(这一条是给强迫症看的)
三、Logisim 电路排查指南
你可以按照以下步骤排查你的电路是否有问题(以及是你的问题还是 Logisim 的问题):
- 重启一次 Logisim 可以解决 Logisim 偶发的渲染问题(尤其是出现莫名其妙的蓝线/红线时)
这么说吧,出现了奇奇怪怪的问题时,优先重启环境(注意不要轻易重置环境)看看 bug 会不会复现,然后再怀疑自己
-
优先排查出现蓝线/红线的地方,善用鼠标中键排查错误连线(早期很多连线问题都是不小心把两个输入端连接到了一起,这种错误通过鼠标中键可以很快排查)
-
没有蓝线/红线但是样例测试不通过 → 针对出现错误输出的部分,对着原理图(如果有)或逻辑式排查问题,善用鼠标中键;如果是时序逻辑电路的话可能还要考虑上升沿/下降沿问题,错误的时钟边沿设置会产生难以排查的问题
-
长时间找不到错误点也是很正常的,必要时要有推倒重来的勇气;在难以构建正确的电路时,可以在cslab的实践课程上寻找教程(确保你已经进行了足够多的思考);真的走投无路的话可以尝试在某六字母网站上体会开源精神,注意可能造成的后果自负
不要问我什么是六字母网站;以及考虑到实验内容的与时俱进性,你基本上找不到可以直接借鉴的 “圣遗物”
这是学术诚信问题
四、针对 DL&CO 这门课其他一些想说的
Important
《计算机组成与设计:硬件/软件接口(RISC-V Edition)》 是学校所用教材的一大参考书籍,学有余力的话/学习时遇到困难,这本书可能会让你有额外收获/茅塞顿开(上课用的PPT的一部分内容甚至都是参考于这本书)
(对于呢喃的cs专业课,你都可以找找有没有对应的 “黑皮书” 可供参考)
DL&CO实验交流群里的其他同学很有可能和你踩过一样的坑,他们可能有独特的解决方案(?)
当然,培养独立思考精神是最首要的!一定要让自己的每一次作业都有一定的原创性!
(不然你以后学ics写icspa怎么办啊啊啊啊)
Warning
以及不要当 ddl 战神,这门课卡 ddl 的成本真的真的有点高 😢
后期实验的平均用时会友好对待所有尝试极限完成实验+报告的每一个人
我不止一次在截止时间前 10min 以内完成并提交作业,千万不要学我
最后欢迎评论补充 (o゜▽゜)o☆
附件:如果你完全不使用隧道可能会发生的后果