选课类别:计划内与自由选修 | 教学类型:实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业基础 | 学分:1.0 |
数字逻辑电路实验是计算机专业硬件设计所必修的专业基础课,目的在于训练学生掌握EDA数字电路的设计技术的分析和应用,掌握硬件描述语言Verilog HDL的分析与应用。熟练掌握计算机局部逻辑的设计和调试方法。所有实验都是设计性的,实验老师会就实验题目,实验原理和具体的要求 作必要得讲解,学生按要求做自己的分析,进行比较,自行设计出最佳的方案 ,在此基础上学生可自选器件(TTL,GAL,FPGA)等芯片构成电路 进行分析和调试,在得到正确的实验结果后由老师检查确认后,写出实验报告,方能通过实验。 此举不仅较好的提高了学生分析和解决问题的能力,也为后边的计算机原理和体系结构实验打下一个坚实的基础。
《模拟与数字电路实验》课程通过理论结合实验的方式,让学生深入了解和掌握Verilog编程和FPGA开发技能。课程涉及硬件描述语言、Vivado仿真、有限状态机等内容。改革后的实验文档全面详细,从基础的语法应用到复杂电路的实现,引导性强,学生普遍反映实验设计优良。提高班除了基本内容外,还拓展了编码器、寄存器堆等高级内容,这有助于为后续课程及硬件竞赛奠定基础。张俊霞、樊彦恩等老师以及热心负责的助教,如马子睿,广受好评,被学生赞誉为极为负责任。
普通班实验每次耗时可控,通常在3-4小时完成,高效的文档使得自主实验成为可能。提高班由于内容深度增加,实验耗时在20小时以上。虽然课程仅为1学分,部分学生建议因实际工作量增加到1.5学分以更客观反映学生付出的时间和精力。
今年的给分标准透明,实验题目明确标价,便于学生知晓成绩预期。普通班相对容易拿高分,但普遍感到最终的保序映射造成了一定的分数向下调整。提高班优秀率高,总体给分较好,只要完成所有实验并积极参与,即可获得高绩点。部分同学反映给分不太理想,主要集中在未充分完成附加实验内容和自动调分机制的限制。
学生普遍反映课程教学和实验文档极其详细周到,助教答疑服务优质。提高班被评价为提供深刻的硬件开发经历,适合对硬件方向有兴趣或计划参与竞赛的同学。然而,总体反馈任务量偏重,尤其是提高班,建议学校适当调整课程分值或减少不必要的实验内容。
课程适合电路设计和硬件开发爱好者,务实的实验可极大提升实操能力。如果希望挑战个人能力并为未来的硬件竞赛做好准备,提高班是一个绝佳的选择。对于只需基础掌握电路设计的学生来说,普通班的安排更为合理。若看重平衡困难度与分数的同学,应考虑自身能力和时间管理水平,合理选择课程难度。
2023.7.26
大家好,按照惯例先来占个坑。2023 秋季学期我将担任《模拟与数字电路实验》课程助教,并对本学期的实验内容进行调整与重新设计。希望本学期的实验能带给大家一些不一样的体验!也欢迎对硬件感兴趣的同学报名数电实验提高班!
PS: 提高班的马助教今年也会回归哦~
2023.12.15
在昨天,本学期数电实验的讲解部分已经全部结束了。由于本学期我们首次进行了实验改革,很多地方(内容设计、时间安排、文档撰写等)都有不完善的地方,我们欢迎大家在评课社区以及课程主页上的反馈渠道中给出对于本学期实验的相关建议。希望我们能一起让数电实验越来越好!
关于实验课程的一些幕后故事,等到寒假我再来补上(
2024.1.23
紧赶慢赶地算完成绩交给老师后,终于可以系统地回顾一下本学期的课程了。
2023 秋季学期的变化
数电实验的发展经历了许多阶段。早期的数电实验是能用到物理开发板的,19 年开始是翻译了国外的某系列数电教材,并搭配了 Vlab + FPGAOL 两个在线实验平台,这也就是先前「PDF 实验文档」的由来。此时的数电实验内容包括:
这个时期的数电实验问题主要在于文档一言难尽、报告冗长、评分标准未知,但相比以往已经有了很大的改进,因此最终在评课社区的评分均值(2019-2022)为 8.0,吊打 2018 及以前的数电实验。
但 2023 秋季学期,我们进行了一次更大的改变。其内容主要包括:
1. 使用在线文档替代 PDF。上学期担任组原助教的经历告诉我:即使 PDF 做的再精美,过长的篇幅依然会给学生带来阅读压力。为此,2023 年暑假时我就向老师们建议:搭建一个网页端的实验文档,并秉承谁提出谁负责的原则做了个 demo,最终确定了这一形式。顺带一提,本学期的课程主页使用的是 MkDocs,感兴趣的同学可以自行了解一下,用来做一些技术性文档还是很合适的。随后经历了半个学期的不断更新,最终的实验文档达到了 13 万字的规模。下面是半年以来的仓库提交情况(
2. 重构实验内容。考虑到 Logisim 并不是后续课程的主流工具,因此今年的一大改变就是把 Logisim 作为了选做内容。此外,我们增加了更多契合数电知识的实验内容,并提供了完善的文档引导。至少从内容上看,我们的数电实验还是专业性很强的(
3. 明确评分标准。今年我们把每一道题目的分值都明码标价,大家基本上可以在检查实验时就知道自己的实验得分,从而对最终排位有个心里预期。
关于本学期的给分
相信这是大家最关心的问题。助教这边已经计算出了原始成绩,而最终的总评成绩由老师给出。不幸的是,大家的原始分普遍都很高,如果直接按照实验成绩计算的话优秀率直接飙到了 73.2%,因此总评会依据原始分进行保序映射。当然,说难听一点就是向下调分。此外,由于提高班的存在,因此普通班最终的优秀率至多只能给到 35%,让原本不富裕的名额雪上加霜。还有一点,就是最终可能依然会进行组内调分。只能说助教已经尽力了(
后记:普通班给分的时候,实际上是在每组保证了最低优秀人数的前提下,按照线性映射的结果向上提一档给分的。最终除了 84 之外没有卡绩,82~84 分数段占了约 43%,属于是狠狠地奶了
关于本课程的未来
这学期其实还是存在许多问题的。首先就是任务量过大。往年是文档拉内容少,今年是文档好内容多,最后一算发现大家依然付出了许多时间。考虑到我们这是只有一个学分的硬件实验课,花费太多时间总归是不合适的,因此未来的改革方向可能是在现有内容基础上进行精简。
此外,实验的区分度不够。这一方面是因为大家的底子好(确实学到了东西),另一方面也是实验内容设计上的问题。由于数电实验必须依靠实验进行给分,因此实验内容本身需要存在一定的区分度。在理想情况下,学生得分-付出时间的曲线应当形为 $y=\sqrt{x}$,也就是花费少量精力可以得到保底分,花费大量精力可以得到高分甚至满分。
BTW,我们祈祷学院以及教务处能够把学分升到 2 学分,不然真的塞不下这些实验内容。
其他碎碎念
最后呢,还是希望大家有机会的话明年来担任助教,接过我们改革的大旗。同时也向本学期经历过数电实验的同学们表示感谢,大家这一学期都挺不容易。咱们组原实验再见!
补交DDL到了,一学期助教带完发现居然还没水评课,遂来水一波。
今年的实验比起往年肯定是更难的,不过也更能契合硬件课程体系。例如,我们删掉了之前大篇幅介绍的Logisim,而是从第一个实验开始就让大家敲Verilog代码。具体细节可以参考吴助教的评课,这里就不赘述了,我更想介绍的是带助教过程中发现的一个核心问题:如何「自主」完成实验。
一个很显然的事情是,完成实验包含两个部分,即「思考并写完代码」与「debug」(就数电实验而言,并不存在设计的部分,因此可以分为这两部分)。更多时候,debug花的时间会比前者更多。从这个角度来说,自主完成实验一定是包含自主debug的。但是,另一个问题便随之出现:如果debug也要求自主进行,那助教的作用是什么?助教能起到怎样的帮助?我这学期尝试采取的标准即是答案。具体来说,是以下几点:
如果根本没有思路如何写代码,助教是可以进行提示的,因为实验的目的是让大家学会知识,并不是为难大家——不过如果涉及到较难的选择性必做,助教也不应进行过于详细的做法讲解,因为按照能力进行选做本也是实验设计的目的。
刚开始写代码时,强调一些良好的基本习惯,例如变量名清晰、一个变量必须在一个always里解决、时序和组合区分赋值等等。这些良好的习惯可以有效减少bug的出现。
对硬件电路而言,仿真是最容易查出bug的办法,因此介绍仿真的使用与各种情况的含义,让同学们初步掌握通过仿真溯源、定位问题的能力。
若仿真看似可以,但还是出现了其他问题,我们介绍了组合环、多驱动、锁存器这三种综合可以看出的问题,并同时讲解了常见的解决方式。
在这三点完成后,如果再出现解决不了的bug,助教可以帮助解决,而我常说的「帮忙debug扣0.5」,指的是并未进行充分尝试就想找助教解决的「非自主」完成情况。(不出意外的话,下学期COD实验助教们也会采取类似的标准,并且通过充分记录避免找A助教debug后找B助教检查这种偷鸡行为。)
最后,因为数电实验并不处在大部分人完不成的难度,也必须通过实验决定给分,这样的通过自主完成确定区分度的给分方式是合理的。下学期COD的电路会变得更复杂,但debug方法本质上仍然是一致的。
省流版点评:满昏!
非常欢迎大家来选择提高班
相较于普通班,提高班需要你牺牲每一个周末来做每周的实验,但是对应的收获也要远远多于普通班
提高班是为大二下的竞赛班预热的,因此难度也比较大,适合比较喜欢挑战的同学来选!
提高班的实验从第一个开始就要平均花费8个小时以上,虽然前几个实验很简单但是vivado的操作和verilog代码的书写真的很需要熟悉掌握(从入门到入坟.jpg),而后期的实验随着对vivado和verilog的掌握,难度和问题就主要出现在你对整个数字系统编写设计能力方面。
学习这门课的重中之重就是细心和耐心,稍有不慎一个错误可能会出现预期之外莫名其妙让你毫无头绪的错误;同时debug能力也很关键,需要自己设计testbench调试代码,通过看波形图,仿真时序来调整自己的代码,因为后期烧录上板一次就需要5分钟以上,如果每次都通过上板debug将会非常浪费时间。
马子睿助教是非常负责任的助教,每次代码出现毫无头绪的bug就去问问助教,助教总是能给出一些经常犯的错误和代码设计的建议,非常nice,大爱马助教!💟
张俊霞老师和樊彦恩老师都非常负责,第一节课我对着vivado和verilog代码手足无措的时候,樊老师坐到我旁边一个单词一个单词教我怎么敲代码😭😭😭真的很感激老师的理解,手把手教我怎么用vivado烧录,很快就掌握了!
最后出分了,感觉只要平时作业都做,大作业好好做,拿个4.3没什么问题,问了问周围熟悉的一圈人都是4.3,毕竟我觉得提高班就1学分实在是不太值得这时间的付出,要是不给4.3就太不给面子了2333)
现在也顺水推舟地进入竞赛班了,要为暑假的龙芯杯备战,突然感到很期待呢!
看到各位都给好评,衷心为各位取得的收获或成绩感到同样的喜悦。下面我要来泼一点冷水了。
其它所有课程,有认真学习修成正果的,有呼呼大睡勉强及格的,有考前突击老师大力奶的,有评价透明给分公道的。本课程破了先例。
实验全部做了,选择性必做基本都选的最高分做,助教那里检查每次都是一遍过,从未有过麻烦的 debug,除了 bb 系统卡 bug 给我弄掉一次实验报告(后续补交)外,每次报告都按时提交,期末没选 VGA,选的猜数字游戏,最终总评 83/3.3。
私认为这个分数对不起我的付出,先后问过同学和评课社区朋友,也听了很多道理,包括提高班优秀率比普通班高,就算是系统 bug 你实验报告也是迟交了,可能别人做了进阶习题你没做(然而实验练习明确说了进阶不计入总评)……
不否定本课程是一门优秀的课程,课程是好课程,实验设计优秀,内容安排合理,助教很负责任很认真。原本评价应给 10.0,摒弃一切个人情感,然给分实难接受。既然有付出却没得到太好的成绩,那么想必好课程也是不一定要有高分的吧。
最终给分难以选择,给低分对不起老师和助教的付出,给高分却也对不起我自己,实是高低两难,综合考虑,6.0 最为妥当。
此外对比产生伤害,隔壁 ICS 的给分明显好于本课程,遂从这里拿走一分给 ICS,可对不住了。
引用程老的一句话,“成绩是学习的副产物。”本课程我有很多收获,能力有较大提升,但这和助教与老师一点关系也没有,我的实验是完全靠自己编写、仿真、反复调试,并最终成功运行的,问心无愧。
以上。不匿。游客可见。
Edit:感谢助教的付出,感谢半夜的辛勤工作和回复,也感谢助教和老师不捞。详细分数数据我已收到,实是于理足信,于情难容。卡绩每个人都会遇到,但作为付出时间最多得分却最差的计算机专业课,说不失望是不可能的。不是给分不好,但又确实不甚公平。
综合实验选了LC3,实验一脑残扣了0.5,总计实验部分扣了4.5,报告没扣分,然后总评就93,没有4.3了😭。
只能说太卷了。
学习完魔术与它的实验部分,我真心感觉到:我对于ISA更往下的东西确实没有太大的好感与兴趣。ISA往下的东西抽象太少,实操起来有点过于繁琐。ISA往上的东西把该封装都封装好了,用起来舒服一点。
学习汇编,虽然编写起来有点烦,但总归和C++等软件语言的编写思路是一脉相承的,没有本质上的困难。本人也在学习了递归之后自己用LC3汇编写了个归并排序,并且去自学了一些x86相关的内容。
学习verilog,学习的是搭电路,和软件编程完全是两个思路,本人学起来非常痛苦。虽然verilog相比直接搭电路已经有了很多封装与抽象,但是习惯软件语言编程的我还是没办法将思想完全扭转过来,写出来的代码自然也是乱七八糟。写综合实验的时候犯了一个自己现在想想都觉得愚蠢的错误,还为此调了两天。估计助教看我verilog代码就和我看自己初一时候写的C++代码一个德行吧。
(想吐槽为什么EECS的课在科大就变成CS的课了呢)
我这学期在四门计算机课(DS,魔术及其实验,ICS)和三门数学课(线性代数B2,图论,运筹学)上花的时间大概是五五开的,而数电实验更是占用了我这学期学习计算机课中的一半时间,这也是我好感欠佳的原因。但总归还是学到了一些东西,就权当开拓视野了吧。
扯了这么多,回到这门课说几句。这门实验课的主要作用就是学习verilog,带大家从基础语法到能编写稍微复杂的电路,为下学期组成原理手搓CPU做准备。这学期的实验内容相比往年大改,有了充分的引导,明确的评分细则(听助教说往年这门课的体验不尽如人意)。真诚感谢各位老师与助教,你们这学期为数字电路实验改革做出的努力大家有目共睹,也希望这门课越办越好!
本人参加了提高班,授课老师是张俊霞。
个人感觉与普通班相比,提高班的内容和难度都与理论课更加匹配,实验内容包括编码器与译码器(对应理论课课本的4.4.1和4.4.2)、运算器与寄存器(4.4.4、4.4.5、第5章)、有限状态机(6.3)、计数器(内容还包括按钮去抖动和取信号上升沿,顺带学习了LED数码管的刷新显示)(6.5)、寄存器堆(需要用有限状态机对寄存器堆中的数据的排序)(第7章、第11章)、存储器(与理论课关系较小,介绍VGA口的协议);而据我的粗略了解,普通班的实验几乎是简单乏味的Logisim和Vivado操作方法训练,一学期下来疲于撰写冗长的实验报告,收获甚微。提高班的实验在Nexys4 DDR开发板上完成,而不像普通班那样需要使用时好时坏的VLab和FPGA在线。
提高班的大多数实验的难度并不大,至少涉及的内容没有超出理论课的范围,而且也没有卷的空间,大约课上时间外加8个小时就可以完成操作和报告。提高班的实验报告更加注重对实验内容的理解,而不像普通班的报告那样需要用屏幕截图详细地记录实验步骤。助教检查实验时也不会问刁钻的问题。
然而实验5寄存器堆有巨大的内卷空间,实验的核心任务是在尽可能少的时钟周期内完成对寄存器文件中的32个uint16的排序。如果不想卷可以用冒泡排序在12小时内比较轻松的完成。可是如果想卷$O(n\ln n)$时间的排序算法,那复杂程度和耗时恐怕就是无底洞了,比如我自己挑了相对简单的非递归归并排序(真正的基于迭代的归并排序,不是某些数据结构老师常说的用栈实现的自欺欺人的非递归),整个实验共花费23h37m。
当然,提高班最可怕的实验非综合设计莫属,由于这学期老师没有限定实验范围(据老师说上学期要求写任意数量的整数的排序,唯一的可卷之处是排序算法),于是最后的作品可谓百花齐放、无奇不有,有的小组做了视频和音频播放器,有的实现了大素数的生成器,还有不少小组做了有流畅画面的2D游戏,相比之下,实现不带trap和中断的LC-3电路都算是相对简单的作品了。
虽然这门课占用的时间确实稍多,但是以2020级的精简过的培养方案,还是可以腾出足够的时间做实验的。提高班的总体难度并不算高,而且只要能全程坚持下来(主要是实验5和综合设计能按时完成),最后的分数是很好的。
最后,建议满足以下条件之一的同学报名提高班:
同是实验课,隔壁的大物实验快来学学,实验文档真的无微不至,评分标准也非常清晰,助教小哥哥善解人意(会帮忙debug并且第一次检查出错还会给一次修改机会)还记得有一次助教们集体检查到十二点多,最后打车回的高新区,强烈要求给助教加鸡腿ε٩(๑> ₃ <)۶ з
具体来说,这门课并不需要多么卷(毕竟也才1学分)只需要将每次实验功能完善好(室友亲测报告查的很宽松)而且最后大实验是分为三档的(22分,26分,30分)个人认为选择26分的比较合适,既不耽误时间,也能得高绩点,因为我们这届是换的全新实验内容,没有任何的祖传代码,但是即使是这样也感觉实验内容比较轻松,可见其不是那么困难。本人平时实验检查都通过了并且功能无误(提醒一下,最好尽早写完实验(可以提前一周检查),要不然最后出错了都没有时间改)大作业选的26分档,也实现了所有功能(感谢助教查的确实宽松)最后喜提4.3
Verilog真好玩!
几天前就出分了,🐦到现在才来评。如果你已经定下来要来计科的话,不妨像我一样大一上就把Verilog学起来,然后把VerilogOJ做起来,毕竟这玩意是迟早要做的,刚好也能帮助你了解这门语言,这样到上这个课的时候就不用花那么长时间去debug了(提高班的另说,因为我以后不打算做体系结构方向的研究,所以没去提高班,Lab1~7大概半天就能解决,下面的评价也是基于普通班来评的,想了解提高班的可以去看其他学长的评课)。
只能说大家都很卷,据说扣4.5分的总评就只有4.0了,扣6分的总评就只有3.7了,而Lab8如果不做游戏方向的话那就是扣4分起步,因为前面满分的实在太多,所以前面的分尽可能不要丢吧(比如代码一定要保证正确,没有组合环什么的,然后for和while循环不要乱用,这玩意跟C语言里的逻辑完全不同,仿真尽可能考虑到所有情况,其他的自己多检查几遍)。然后游戏的话不用做太复杂,可以考虑复刻一个经典游戏,26分保底(满分30,相当于保底的分数已经和其他人的满分一样了),想冲4.3的可以考虑。
实验文档:Digital Lab 2023 (ustc.edu.cn)
助教哥哥们真的很认真,文档也写的很详细,甚至我觉得看文档比听讲解效果还好,我一整个学期的实验基本上都是看文档做完的,然后也要感谢助教哥哥们非常乐意帮我解答问题。
(就是很好奇vlab是怎么做到在linux里面跑vivado的)
来自于数电实验普通班,我认为这门课是我这学期体验感最好的课之一了,主要是因为助教们都很好(实际上这门课就是靠助教撑起来的),实验文档也都写的很详细,减轻了工作量。助教应该都是大三大四的本科生,能够理解我们的难处,也不会为难人,ddl也会根据我们的情况调整。
在上这门课之前,我听说这门课会非常占时间,但是基本上平均一个实验也就会花费3-4小时(最后一个大实验除外),因为实验文档非常详细,而且会给出很多框架或是代码,照着文档来写就行了,拿出一个晚自习的时间基本就差不多了。当然这都是在没有一些奇怪的bug的前提下。剩下的实验报告要求非常低,不需要像大物那样,只需要解释一下自己的代码,贴上代码和运行结果就行了。
其实只需要在写实验的时候注意规范,避免一些常见的bug出现就不会有太多问题,比如避免组合环,就要注意不要在组合逻辑电路中用变量对自己赋值,避免多驱动就要尽量每个变量单独写在一个always块里,不要在多个always块里对同一变量赋值等等。
如果排除了常见的bug还是不行的话,就可以写一个testbench来测试,还是不行的话可以问助教。
实验兼具难度和一定程度的美感,给分有了具体清晰的标准,可以说这学期的改革是基本成功的。祝组成原理实验改革顺利。
然而Verilog在大部分学生的工作中可能用处不大,基本只有搞fpga开发,EDA开发的人用,科大应该加强对C++等面向对象语言的基础教学(不是说非得开一门课,实际上留成ICS这种课的课程作业就可以了,不知道为什么没人这么搞。。)
我们的培养方案有着严重的割裂和断层现象,再加上物理课过多,部分专业课不够深入和前沿,整体远落后于美国顶尖高校的CS专业。
出分了,本人平时的实验都是只完成了基础的部分,最后的大作业做的部分也不是很多,最后给了4,还是很满意的了。
zjx是我爹!
写点评首先是为了把《CPU设计实战》放上来。
https://rec.ustc.edu.cn/share/b18b7a20-daff-11ee-93ac-852edfbab9e4
这本书确实是CPU设计的指南,哪怕是组原竞赛班也要作为重要参考。但令人惊奇的是,这本书却是从最最基础的Verilog使用开始的。所以即使你甚至还没有下载Vivado,都可以打开此书寻求帮助。比如我初次使用Vivado时RTL怎么也跑不了,后发现是因为电脑名是中文,而这一问题在这本书中提到了。
再闲扯几句。我也是提高班成员。今年张老师受到了去年龙芯杯成绩不佳的刺激(doge),以至于从提高班就开始上强度,最后一个实验抬出了单周期和多周期CPU。但由于前期已经完成了CPU的不少组件,所以这一步并没有很难。总览全部实验,实际上真正上强度的是乘法器、状态机、串行通讯单元这几个,其他的实验并不会比同期的普通班实验更棘手。而且ddl是灵活的甚至可以是没有的(比如串行调试单元由于难度太大最终不要求完成),助教和老师能体谅难处。
我还要说:马哥是永远的神!!!如果我见过的所有课程的所有助教最高能打10分,那我要给马哥打一佰昏!龙芯杯亚军队伍大佬手把手地教你每一个细节,而且周三周四几乎全天待在实验室全天可找是什么含金量啊。他还可以重新讲一遍张老师极具跳跃性和简略性的PPT,可以讲述龙芯杯往事,可以聊天,可以提供学习与生活建议(比如选课)。遗憾的是作为大四保研人已经润北京计算所了,带不了组原了。当然,组原竞赛班也会隆重迎接马哥的队友作为新助教,让我们拭目以待!
这门课程本身对我而言还是很有特殊意义的。对我来说这门课是第一次从大量的实践而非书本上掌握技能。实践为主的学习形式显然会在后面的学习与科研过程中反复出现,所以不妨从现在开始在不断的尝试与实践中从零开始学Verilog(《CPU设计实战》这本书寒假马哥才给出来)。另一个角度来看,对于那些对计科到底有哪些方向还一头雾水的计科萌新们,也许这门实验课能让你第一次接触一个方向的核心工作:计算机组成方向(我认为软还要学点算法基础,光是数据结构还不够,但是搓一个最简单的CPU就可以成功地伪装计组人了doge)。
来自普通班。
省流(也不一定)版:我在本学期学习体验最好的课程,没有之一。
实验设计绝对好评,文档内容丰富并且提供了代码框架,每个实验上手都不难,因此这门课并没有花费我太多的时间。在选做部分均选择分值最高题目并且检查时不被扣分的前提下,Lab1~6都在1小时以内完成,Lab7大约用了2个小时出头。不过大多数同学花费的时间远远超过这个范围,增加到1.5学分/60学时可能比较符合工作量。
综合实验摆烂(临近期末季懒得花时间选题和debug),用两三天时间搓了个带UART的LC-3模拟器,虽然设计细节上相比原版有了不少简化(几乎是八竿子打不着的关系)但如果当作黑盒子看待,实现的功能也算蒙混过关。
Verilog OJ完全可以最后再做,做完实验速通非常快,也就一天甚至半天的事。
作为实验课,不追求A4雕花好评,报告几乎可以贴上代码随便乱写还不被扣分,顺便点名批评ICS实验报告占50%还屁事一堆的逆天操作。
给分应该是各组分别给的,在比较躺的组会有优势,我们组似乎做VGA的不多(也可能完全没有),虽然有优秀率限制,拿高绩点的难度应该是我目前学习过的所有课程中最低的,只要不完全开摆貌似也有3.3保底。
这门课本身体验是十分不错的,从最基础的语言到学会仿真,上板,再到编写越来越复杂的模块,最后实现一个较为复杂的项目。整体的感觉是循序渐进的。实验文档十分详细,不论是实验环境的配置,还是实验内容内容本身,亦或是评分标准,在实验文档中都有详细的说明。实验任务的量感觉还是比较合理,最好是提前几天开始做,每天做一点,这样有bug也可以更从容的调试。前几个实验大概要花半天的时间,难度也不是很大,乘法器和最终的大实验难度较大,需要的时间要更长。缺点就是实验的区分度不是很好,导致出现了向下调分的情况。除了最后一个实验以及补交的实验,大家的得分应该相差不大。总之,这门实验课还是很有收获的。
啊哈!今天出分辣!我或成为今年出分以后第一个评分的人!
这学期的模拟与数字电路实验相比前几年做了重大的革新,实验文档十分详细,只要坚持看完基本上就不会卡大壳!
最后的猜数字游戏有亿点点难,不过在吴助教详尽的文档下做出来也只是时间问题(对本人而言)——就是时间花的有点多。
这学期的评分实现了精确到题目的量化评分。我记得我前面好像加一起扣了2~3分左右,有的是因为摆大烂选择了分数较少的选做题,有的是因为testcase没过喜提扣分(悲)。最后的大作业我选的是分数居中的猜数字游戏,完成了全部的功能,最后在保序映射调分(向下,不过这也是没办法的事)下得分88/3.7。
我猜我扣的分可能在于testcase、选做摆烂和最后做的不是VGA三个点上。所以,对于想要在数电实验课上学到更多或者拿到更高分数的同学们,或许你们可以考虑选做分数拿满、多试试边界情况,以及试试选VGA?从助教们的实验文档来看,VGA方向应该是收获最大的,只不过我个人当时被工作量吓跑了,唉唉!
总之,这学期的实验做的很舒服,感谢勇于重写试验大纲和框架的助教们!
2022秋提高班今天出分了 于是评课
提高班是非常适合对硬件方向(体系结构啥的 有兴趣的同学选修的 也不需要任何基础 好好听课就行(甚至张老师还会为实验课在理论课上加点内容x
课程任务量确实大 基本上课以来每个周末一半都在写实验 但这也保证能够基本的运用Verilog(一学分确实有点不太合适
给分也是真的好 完成基本选项 大作业好好做应该就有4 稍微多探索一点附加内容 加有点意思的大作业 4.3也不难)
以及可以获得开发板长达一年的使用权 和不下板的感觉还是很不一样的)
最后一次实验是合作的小组项目 合作的过程还是很不错的(全靠队友带飞x
哦对这届的助教也超级负责且有水平 应该是目前碰到过最负责的助教了 我哭死
总结:虽然累但完全不后悔 推荐
· 可以获得什么?
相比数电实验普通班的总共十次实验并除了最后一次可能使用到开发板外几乎都使用vlab平台外,提高班只有七次实验,且全部使用开发板,在进行实验的体验上是要好不少的。提高班实验的难度上是要高于普通班很大一截的,因此可以学到很多普通班没有教或者没有应用到的知识。给分挺好的。
· 需要付出什么?
最显著的就是每周工作量20h以上。我这学期课还是比较多的,所以就更加感觉时间的紧张。
提高班这学期七次实验,分别是入门的①编码器与译码器②运算器与寄存器③有限状态机,有一定难度的④计数器,比较难的⑤寄存器堆⑥存储器,以及最后的⑦综合设计。每次实验都需要提交实验报告。这些中前四次实验提供的ppt可以说比较详尽,几乎跟着要求走就可以完成要求,所以体验上还是不错的。第五次实验因为寄存器堆提供两个读口两个写口,所以排序算法存在很多可以优化的地方,假如想进行优化,就有可能遇到不少bug,这个实验花了我两天多。第六次实验vga显示的部分,恰逢期中考试周,又因为verilog或者说fpga的时序与组合问题,我直到ddl当晚九点多才终于完成。
第七次实验是小组合作,一共四十人分成十三组,选题自定,有做游戏的,也有做lc-3的,我们组做的是利用fpga手写数字并识别。
· 如何权衡?
假如想挑战自己,或者有比较强的时间管理能力,或者对开发板感兴趣的,可以无脑选加入提高班。否则的话最好考虑清楚。
普通班会讲logisim,这个是提高班不讲的。我也没学,看室友完成的作业,似乎是搭建逻辑门级别的电路。
普通班会有verilog oj的完成要求,提高班并不要求。寒假里我把这个部分刷完了,完成过提高班的实验后大部分还是比较容易的,但也有一些讲解的技巧是之前从未了解过的。所以还是建议提高班的同学去过一遍。
这学期提高班的助教是在龙芯杯设计大赛获过奖的,水平很高。还给大家提供了实验秘籍,好评。
高赞回答已经写的很明白了,我就主要评个分。 我参加的是高级班,学到了很多有用的知识。个人一点建议就是在保持课程量不变的情况下将1学分增至2学分,能客观地体现这门课的任务量。或者普通班1学分,高级班2学分? 注:高级班优秀率80%,普通班优秀率30%。数据来源:张俊霞老师。
我上的提高班,现在还没出分,来评课一个。
助教超级好,偶尔帮忙讲课就能看出来水平很高。而且找助教 答疑 聊天的时候,我也了解到了很多相关领域的东西并且确定了自己POI
内容不算很难,就是有时候debug会有些焦躁
事实证明正常情况所有实验可以全肝ddl,很推荐大家来
当年觉得实验文档不好,如今经历了 COD 的实验折磨,只觉得数电的实验文档太良心了。
大作业用 logisim 做了个“LED大作业生成器”和视频播放器,可以批量生产 LED 大作业,你甚至可以用我的项目花几秒生成一个大作业拿去给助教检查。
地址:https://github.com/txtxj/USTC-Digital-Logic-Lab10
助教如果看到这个评课请小心检查你组的大作业。