Skip to content

Lab0

在本地搭建 Logisim 实验环境

常见的 Logisim 有三种版本:

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

对于 DLCO 这门课,你应该选择第二个版本,选择正确的版本对你在本地调试有很大的帮助(这三个版本的 .circ 文件不完全互通,你也不希望自己在本地连好的实验在评测机上打不开吧嘿嘿

具体来说,实训平台用的是 v2.16.1.3 的版本,个人建议使用在线平台的 v2.16.1.3 版本,我也不清楚这个软件有没有向下兼容

个人非常建议在本地存一份电路备份,或者先在本地实现电路文件然后上传到平台,因为我已经见到有同学把自己完成题目的仓库恢复出厂设置了


在实训平台和本地之间传递文件

注意到这里的工具箱了吗

image-20260329140357141

image-20260329140522904

剩下的你都懂了。注意上传 / 下载文件都是在指定的文件夹进行的,在你准备上传 / 下载文件时,多看一眼那个弹窗的内容

这里还有两个重置功能,前者“重置环境”(应该)不会丢文件,后者是还原出厂设置


如何写实验报告

首先,每次实验有对应的 PDF 实验讲义,请完整阅读文件内容,因为这里面可能会出现一些你需要额外完成,并写在实验报告里的内容

并且思考题的题干在实验讲义中

如果老师还没发实验讲义,可以在 数字逻辑与计算机组成课内实验(南京大学) 这里下载

具体的实验报告需要涉及的内容请参考官方文档:怎样写实验报告 · 课内实验操作说明,如果你看着无 CSS 页面难受,可以看我的 Fork 版本:怎样写实验报告 · 课内实验操作说明(Fork)

官方简化版

(1)实验整体方案设计。说明本次实验的顶层设计模块图,对每个子模块进行详细描述,定义输入输出引脚,数据及控制信号的传输通道等。

(2)实验原理图和电路图。给出每个子模块的原理图和 Logisim 中的电路图(屏幕截图或照片),定义子模块的外观图。如果对实验指导讲义中的内容提出优化或改进,需要在此说明原因、方法和效果。

(3)实验数据仿真测试图。根据实验要求,输入测试数据,选择单步时钟执行,截取仿真运行时的电路图,分析电路状态是否满足设计需求。说明子模块的功能,列出子模块的功能表。

(4)错误现象及分析。在电路设计、连接和仿真运行时,将你认为有价值的错误截屏放置到实验报告中,并分析错误原因和解决办法。

(5)思考题解析。通过分析给出思考题的答案。

在你有足够精力的情况下,思考题涉及电路实现的,我们希望你能给出实际的电路实现,而不局限于口头说明(这使得你的实验报告有更高的完整度)。

线下验收的时候,记得在你的电脑上准备好思考题电路实现文件(或者实在没办法,口头说明也 OK,但是会差点意思)

另外,在实验报告里“体现自己的思考”,能让你的实验报告脱颖而出(官话)


如何准备线下验收

官方的验收流程,原文摘自 yry 老师往年的聊天记录

(1)看你们演示一下 PDF 里涉及的几个实验(可能挑一部分来演示)

(2)尤其是最后需要填写的表格内容会挑一些来演示

(3)随机提问一些课程中和实验相关的小问题

(4)听你们说一下思考题的思路或看一下实现的思考题电路(不是必须实现。但请大家在验收之前对思考题尽量做一些思考,能有部分电路实现更好)。

大约每人4-5分钟的样子。但验收结束后也不可以离开教室,可以自习。

各位可能比较在意的是:思考题的实现、现场填写的表格

  • 思考题,就是 PDF 实验讲义中,最后面的那几个题目。通常会有至少一道电路实现题
  • 现场填写的表格,这个不太好提前公布,以去年的实验五线下验收为例,放个截图自行体会

image-20260423180713135

(总共二十多条需要现场填写)

乐观来看,只要电路图不是直接抄的,思考题是自己做的,有对应的电路实现且也是自己连的,从分数的角度上来说,应该不会有问题

不用担心线下验收会有什么很复杂的内容,不过还是得提醒一下,你至少需要会用你的电路图进行仿真(填指令,设定输入,查输出,现场填表),不然你可以看看上面那个填表,甚至去年两个小时的验收时间来不及验收所有人

如果真的力不从心,助教也不会为难你的


⭐ Logisim 使用 Tricks

网站使用的 theme 仓库现在 404 了,如果你觉得页面看上去比较难受,可以先用我 Fork 的网站:课内实验操作说明

除此以外,以下给出一些其他比较好用的小 Tips,或许可以减少在 Logisim 上消耗的时间:


  • 选择一个元件,在按住 CtrlShift 的情况下,右键可以放置多个元件

    • (比如说你要放置 x 个某元件,可以按住 Shift 右键放置 x-1 个元件,再松开 Shift 左键放置最后一个元件)
动图(点击展开后播放)

tip1


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

动图(点击展开后播放)

tip7


  • Logisim 会主动连接端口,即使之后被分开也会尝试保持电路连接

    • 如果你不希望自动连接,按住 Shift 并释放左键可以不自动连接(这在你不小心把电路缠在一块的时候很好用)
    • 在“偏好设置 → 电路编辑器”中,可以关闭自动连接的功能
动图(点击展开后播放)

tip8


  • 选中逻辑门再按下数字键可以切换逻辑门的输入位宽(在放置元件时该操作也有效,并且之后放置的门都遵循该设置);同理可以改变的有“常量”的值(不是位宽)、复用器的选择端位宽

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

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

最好自己试一试,以防你分不清按不按住 Alt 分别修改的是什么值,以及理解这一条 Tip 在说什么

动图(点击展开后播放)

tip2


  • 放置输入输出引脚后(并且正确为引脚命名),点击 “工程→分析组合逻辑电路” ,可以通过编辑真值表 / 输入逻辑表达式的方式自动生成组合逻辑电路

    • 注意到这会覆盖掉原本的电路,因此更好用的方式是:创建子电路,生成组合逻辑电路,然后封装成模块,进行整体调用
    • 可以参考 第一周:Logisim 入门 - Verilog Fun 中的内容
    • (说实话,对于 DLCO 实验来说,大概率用不到这个功能)
动图(点击展开后播放)

tip3


  • 如果需要跨文件复制电路,可以点击 “工程→加载库→Logisim库” 导入.circ文件,以整体封装的形式使用电路,也可以在导入后对整个电路复制粘贴(如果你不希望后续的实验存在过多的子电路文件依赖,我建议对整个电路复制粘贴,否则使用封装电路更加简洁)

(这个就不给动图演示了,后续实验就会用到)


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

    • (比如下面的例子中,同一逻辑门的两个输入不小心连接到了一起)
动图(点击展开后播放)

tip5


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

(没有动图的必要)


  • 按住 Alt 键,在编辑模式下可以不依赖元件放置电线

    • 并且你还会发现,按下 Alt 后对电线的处理逻辑不太一样(从新拉电线变成了移动最小段的电线)
动图(点击展开后播放)

tip9


  • 这个软件其实是有 Graphics Acceleration 的,可以在这个地方设置图形加速

静图

tip10


  • 你可能很好奇,为什么我上面的截图中没有网格点

    • 在这个非常不起眼的地方,可以切换网格点显示
静图

tip11


Logisim 电路排查指南

这种东西怎么写呢?随便写点什么吧

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

  1. 重启一次 Logisim 可以解决 Logisim 偶发的渲染问题(尤其是出现莫名其妙的蓝线/红线时)
  2. 优先排查出现蓝线/红线的地方,善用鼠标中键排查错误连线(早期很多连线问题都是不小心把两个输入端连接到了一起,这种错误通过鼠标中键可以很快排查)
  3. 没有蓝线/红线但是样例测试不通过 → 针对出现错误输出的部分,对着原理图(如果有)或逻辑式排查问题,善用鼠标中键;如果是时序逻辑电路的话可能还要考虑上升沿/下降沿问题,错误的时钟边沿设置会产生难以排查的问题
  4. 长时间找不到错误点也是很正常的,必要时要有推倒重来的勇气;在难以构建正确的电路时,可以在cslab的实践课程上寻找教程(确保你已经进行了足够多的思考);真的走投无路的话可以尝试体会开源精神,注意可能造成的后果自负

最后祝连线愉快,作为助教时隔半年多已经完全不会用 Logisim 了,用起来应该没有各位熟练

Geopelia don't know anything~