首先,看到各位学弟学妹们对计组充满好奇并且想要假期预习一下计组,我本人是很高兴的,为了帮助各位学弟学妹们在预习的时候少走点弯路,我以个人名义写下这篇计组假期预习攻略。
这篇文章的本意并不是让大家一个暑假搞定全部计组内容,而是让大家对计组要做的东西有一个基本了解和心理准备。
注意:如果在阅读本文中遇到陌生名词,请务必去查一下!
这里我就不复制百度百科了,直接谈谈6系计组课程的一些事宜
首先,计组分为两门课程。
计算机组成(4学分,可能变化)
这门课程主要是讲授数字电路的一些基本知识与计算机各个组成部分的理论知识。虽然,这门课程被称为计组理论课,但是,实验课要用到的方法都是在理论课上讲授,所以,万万不可掉以轻心。
这门课程的教学内容可以参考往年课件,具体方法,可以在北航课程中心搜索"计算机组成"(登陆状态可查看相应课程资源,下载课件)。
计算机组成课程设计(3学分,可能变化)
这就是让6系学子叫苦连天的计组大魔王了。它不仅仅需要计算机的各种原理知识与代码能力,同时是6系本科阶段第一门要求一定的工程素养的学科。对于多数人来说,这门课程会是一个前所未有的挑战。
说这门课程难,的确,多数6系本科生在此时不具备要求的工程能力,但是,就我个人看来,这门课程的难度还没到凭借努力无法克服的程度。
计组课设课程内容:
大致内容是以闯关制(前一个实验如果没通过,不可以进行下一个实验)的方式来完成若干个实验。
每个实验分为课下部分与课上测试部分,计组课设的学时就是课上测试部分。课下部分虽然没有计入学时,但是占了计组课设绝大部分时间。
更多详细内容就请大家期待开学之后老师们的讲解吧,毕竟介绍课程制度不是本篇博客的目的~
课程结构示意图,具体教学内容与顺序因各个老师不同而有微小差别。
这里将给大家简单介绍一下计组课设所涉及的工具和语言,以及一些要点。限于篇幅与本文的目的,更多的坑还需要大家自行发现。
虽然,前文说过,计组理论课和实验课不完全重合且侧重点不一样,但是,一定的理论基础是实验课的基础,所以,请诸位开始正式的计组实验课程预习之前务必对基础的理论知识进行学习。大致可以参考以下内容。
注意!这些理论内容已经涉及了计组实验的大部分内容,没必要在预习阶段完全掌握。大家在学习理论的同时加以实践,注意同步即可
CPU设计(7.1~7.7)关于CPU设计部分的学习,我觉得用这本书作为一个大致的了解即可,即,明白什么是CPU、有哪些主要模块、指令是怎么由CPU执行的、多周期CPU原理、流水线原理。真正到了CPU设计部分的话,还是建议参考高小鹏老师对应部分的课件。
《Verilog数字系统设计教程》(如果有觉得迷惑的地方可以自行百度)
基础概念与语法:第一章至第七章(第七章部分除7.7外了解即可)
对电路不同抽象层级的描述:第九章(9.3了解即可)
可综合的状态机设计:第十二章至第十三章
(注意:实际上,文中提及的有些语句写上即使了也可以综合,只是在综合的时候被忽略了,比如initial
。)
阻塞式赋值与非阻塞式赋值的异同
理解Verilog神必的reg
《MIPS体系结构透视》
这本书中的多数内容作为预习可能有些过火,但是这本书中有很多对于初学者起重要学习补充作用的部分,故我把这本书列入了预习范围中。
往届计组实验指导书
指导书中包含了本次的实验目标与一些基本的提示信息,本人提供的资料中不包含这些内容。
高小鹏老师的教学课件
如果您们觉得前文所提及的资料太难、太多难以直接入门的话,可以先通过高老师的教学课件入门,然后阅读资料深化认识。
上述资料大抵都能在课程中心通过搜索"计算机组成"找到,我只是一个搬运工~
附赠资料
某盘链接:
链接:https://pan.baidu.com/s/1aHy1MZfPMXRMlh3Md3tFfg
提取码:249m
切记,理论和实践并重。完完全全把理论学完了再来实践是不行的!
前文介绍了需要的理论知识,并没有把每一部分实验需要哪些理论基础给大家做一个说明,下面就完成这件事。
这里给大家按照难度级别划分几个预习目标(难度逐级增加),大家量力而为。
难度一
熟悉logisim的基本使用,能够使用logisim构建具有一定功能的时序电路(可以参考高老师课件的课后作业部分也可以参考《数字设计和计算机体系结构》的部分课后习题)
需要的理论基础
难度二
熟悉Mars的基本使用能够用MIPS汇编编写具有一定功能的程序并且具备使用Mars调试汇编代码的能力。练手题目可以根据大家学习C语言时做过的题目进行练习。
需要的理论基础
难度三
注意!本部分建议与Verilog的学习同步进行
成功安装ISE(不要安装Win10版!),熟悉ISE的使用,尤其要懂得综合(synthesize)功能的使用。学会使用ISIM进行电路仿真与调试。
练手题目可以参考 难度一 部分的题目,不过这回是要用Verilog实现,建议尝试 门电路级别描述 与 行为级别描述 两种方式。
警告:这个部分看起来难点在于Verilog的学习,实际上ISE与ISIM的使用是一个不亚于Verilog的难点。ISE与ISIM的使用对计组学习影响重大,请大家一定要好好熟悉这个工具
需要的理论基础
下面就是CPU设计部分的内容了,大家可以参考高老师的课件进行学习
难度四
这个任务主要是让大家直观地感受什么是CPU,所以,在预习阶段,没必要在这个任务上苛求完美
使用logisim实现单周期CPU,指令集可以参考《数字设计和计算机体系结构》对应部分内容,自行用Mars编写汇编代码并导出机器码,将机器码导入logisim中CPU的模块中进行测试
难度五
把 难度四 中的CPU通过Verilog实现
其中,测试程序的导入可以通过Verilog的 $readmemh
实现,如果不仅仅希望通过仿真波形进行观察,还可以加入$display
进行调试。
难度六
实现一个多周期CPU,指令集参考《数字设计和计算机体系结构》对应内容。
为什么不让您们实现流水线呢?因为一个暑假预习到能够实现流水线的程度不太现实。
这个软件教程不多(实际上,功能也不复杂,大家摸索下基本上都能玩明白)
多用HELP
功能是好习惯。
ISE安装教程(笔者当时预习的时候是按照这个教程来的,如果不能用的话大家就再四处找找,配环境是挺麻烦的的步骤)
ISE基本使用教程(看到波形仿真即可,后面的板级综合暂时用不到)
ISIM使用指南(这个教程当年救了笔者的狗命)
如果这些教程还不够的话,大家自己再找找鸭~ 自主寻找资料迟早都要经历的鸭~
笔者所列举的预习内容确实有些多了,并且在学习顺序上也可能存在着不完善的地方,希望大家在学习过程中根据自身情况进行取舍。
最后,再次重申和提醒,这篇文章并没有也做不到把计组全部的坑给列出来,仅仅是给各位希望预习计组的同学指一条不那么弯的路,具体的学习还望大家发挥主观能动性。
原文:https://www.cnblogs.com/BerserkerRuaaaaaaa/p/11178753.html