基于Logisim平台的《计算机组成原理》实验教学探究

2019-02-07 05:32邵雄凯杨习伟
软件导刊 2019年12期
关键词:计算机组成原理计算机专业实验教学

邵雄凯 杨习伟

摘要:在分析现有《计算机组成原理》实验教学现状的基础上,针对软件类专业学生硬件基础知识薄弱、一般地方高校硬件设备不足等实际情况,提出基于Logisim平台的《计算机组成原理》实验教学方法。采用该方法能够降低学生实验难度、消除软件类专业学生对硬件实验的畏惧心理,提高实验效率,让学生更好掌握CPU设计方法和过程。具体阐述了采用Logisim平台开展实验教学的优点、实验教学内容设计、教学和管理方式等,可为其它高校开展《计算机组成原理》实验教学提供参考。

关键词:计算机专业;实验教学;Logisim平台

DOI:10.11907/rjdk.191110

中图分类号:G434 文献标识码:A 文章编号:1672-7800(2019)012-0208-03

0引言

实验教学在计算机类专业教学中一直占有重要地位,其作用不可替代。《计算机组成原理》是计算机专业的一门核心课程,在整个培养体系中起着承上启下的作用。王志英教授等提出计算机类专业学生重在计算机系统能力培养,要建立计算机系统的整机概念和系统观,通过《计算机组成原理》课程实验教学,让学生从计算机最底层建立整机概念;袁春风教授等从2008年开始采用EDA技术在FPGA上完成《计算机组成原理》课程CPU设计实验,采用先部件级实验,如存储器实验、寄存器组实验和ALU实验等,再到简单的CPU设计、复杂的流水线CPU设计,最后完成20~50条MIPS指令的五段流水线CPU设计,且带有异常处理和中断功能;高小鹏教授提出《计算机组成原理》实验教学要以数字逻辑课程实验所开发的功能部件为基础,以MIPS CPU设计为主线展开,并提出了CPU工程化综合方法;刘卫东教授等采用支持50余条MIPS指令的计算机系统作为硬件开发平台,并完成了指令系统模拟器、编译器等一系列软件系统开发,支撑硬件实验教学平台运行。以上方法虽好,但需要学生有良好的硬件知识基础,对于地方普通高校而言,开展实验难度较大。《计算机组成原理》课程实验可以选用软件模拟或者仿真系统加以实现。

1实验教学现状

《计算机组成原理》是一门偏硬件的课程,课程知识点多且面广、概念抽象、繁杂难懂,学生学习该课程的积极性普遍不高。学生觉得“难学”,教师认为“难教”。

当前,《计算机组成原理》实验平台基本上采用硬件平台,主要有两种方式。第一种是采用固定传统试验箱,试验箱带有必需的实验电路模块,通过导线连接、拨动开关和编写微程序达到实验要求,这种实验形式难以让学生直观地看到电路原理图和部件的硬件结构,因而无法让学生真正深入理解计算机各部件工作原理、控制信号如何产生和数据如何流动,难以建立计算机系统的整机概念;第二种是利用EDA技术在FPGA上完成实验,所有实验电路都可以自己设计,用某种硬件描述语言描述电路,仿真实验结果下载到FPGA实验版,再验证结果。这也是当前通用的实验方法。

无论哪一种方式,对学生硬件知识要求都较高。学生由于硬件知识基础薄弱,动手能力不强,因此对于这门课程的实验普遍抱有畏难情绪。学生要么搭同组“便车”、要么照抄、要么干脆逃避,难以达到理想实验效果。

要顺利完成实验任务,学生除熟悉数字逻辑和《计算机组成原理》相关知识外,还需掌握一种硬件描述语言(如Verilog或VHDL)和一种EDA仿真平台(如Vivado或QuartusⅡ)。实验过程繁琐,学生需选择电路模式、设置芯片参数、锁定引脚、连接USB、下载配置文件等,这一系列过程既繁琐且容易出错,最大问题是与实验目标任务关系不密切,浪费很多时间,降低了实验效果。

计算机类偏硬件专业的学生一定要克服这些困难,熟练掌握相关知识和技能。但偏软件类专业,比如软件工程、信息安全、大数据、数字媒体等,要求学生短时间内较好掌握硬件描述语言、熟悉软硬件开发平台以及繁琐的实验过程实属不易,学生畏难情绪严重。同时对师资水平要求也较高,并且抽象的硬件描述语言难以使学生建立设计与电路的具体对应关系。因此,如果过分强调硬件上的实现,可能难以达到《计算机组成原理》课程实验和掌握CPU设计方法的初衷。

2实验平台选择与使用

2.1Logisim平台选择

对于偏软件类专业,《计算机组成原理》课程及实验的目标是让学生掌握计算机各大部件工作原理,熟悉CPU设计方法,建立计算机系统整机概念,从而熟悉程序在计算机中执行的过程,并能够编写出高效率的程序,正确分析和解决程序执行过程中出现的各种问题。因此,应将实验重点集中在对各部件原理的深入理解和CPU设计方法的掌握上,尽量减少繁琐的硬件实验过程,这样更有利于提升实验效果。

湖北工业大学偏软件类专业实验平台采用Logisim仿真软件,它是基于Java开发的应用程序,可支持任何Java环境的平台,由于是免费开源软件,因此也不需要商业软件授权,不产生支付费用问题,对于经费紧张的普通高校更加适合。Logisim采用图行化界面,便于学习、易于上手,电路图设计和仿真非常方便高效,完全可以脱离硬件仿真环境运行。Logisim軟件占用计算机资源很小,便于学生在自己电脑上安装和使用,实验灵活性强,不受时间和空间限制,教师对实验结果的检查和验收十分便捷。

2.2Logisim平台使用

图1是Logisim基本操作界面,界面简洁、使用方便。为了让学生尽快上手实验,可在实验之前讲解一个完整的实验案例,对基本操作方法、常用器件、子电路创建和使用、电路仿真测试、库文件加载、容易出现的问题等进行详细讲解。

3实验内容设计与组织

3.1实验内容

为了让学生加深对计算机各大组成部件工作原理的理解,建立计算机系统整机概念,实验要求学生基于Logi-sim设计一个支持一定数量MIPS指令的CPU。实验分为单元实验和CPU设计。单元实验项目有:运算器实验、寄存器堆设计实验、ALU设计实验。在各部件实验基础上设计至少10条以上MIPS指令的CPU。由于学时原因,学生在实验课学时内难以完成实验任务,需要花费很多课外时间才能很好完成。

3.2运算器实验

运算器实验要求学生完成一个32位串行加法器,同时要产生各种运算结果的标志位符号:溢出(oF)、进位(cF)、符号位(sF)、零符号位(zero)。能力强的学生可完成先行进位加法器。

3.3ALU设计实验

该实验要求学生利用上文设计的32位加法器、Logi-sim中自带的一些组件如多路选择器等,完成一个算术逻辑运算单元ALU。为了服务于后面的CPU设计,该ALU需要完成“加法”、“减法”、“按位或”、“带符号比较小于置1”和“无符号比较小于置1”等运算。Result是ALU运算结果的输出端,ALU还需要输出零标志ZF和溢出标志OF。ALU的输入端是两个32位的操作数和ALUctr信号,ALUctr信号是ALU操作控制信号生成部件的输入信号。

ALU设计实验可提示学生如下几点:

(1)可控加减法器实现,可以利用异或门的特点,减法运算是利用加法器的“变反加一”实现。

(2)输出Result的多路选择器只有3个输入端,分别是加减运算结果、或运算结果和比较小于置l的结果。如果需要扩展其它指令,如与(and)、异或(Xor)、或非(nor)、取反(not)、取负(neg)等,都可以直接调用Logisim库中的器件构成逻辑电路,添加到图2的ALU中,这些运算结果可以同时产生,只需要增加结果输出多路选择器的输入端,同时增加控制信号OPctr的位数和ALUctr位数。

(3)ALU操作控制信号生成部件ALU-CTR的实现是实验重点。首先分析add、sub、subu、slt、sltu、ori、addiu、1w、sw、beq、j指令功能,需要产生4个控制信号,分别是加减控制信号SUBctr、运算结果选择控制信号OPctr、是否进行溢出判断信号OVctr、ALU是进行有符号还是无符号比较的控制信号SIGctr,再分析不同操作类型的取值,最后将输人信号ALUctr和4种控制信号一起编码,写出真值表,在Logisim中按照真值表就可以自动生成控制部件ALU-CTR。

3.4MIPS寄存器堆实验

该实验主要是让学生构建一个MIPS寄存器组,内部包含32个32位寄存器,具有一个写入端口和两个读出端口。每个寄存器的内容可通过对应的寄存器编号进行访问,类似于一个具有多个地址端口和多个数据端口的高速存储器。

3.5MIPS单周期CPU设计实验

MIPS单周期CPU设计实验,让学生完成10条以上MIPS指令的单周期CPU设计并通过测试程序测试。CPU设计实验在前面实验基础上,要添加指令译码器、主控制器、地址产生和转移逻辑、位扩展等部件。控制器主要采用組合逻辑控制器。可以给学生提供图3的单周期CPU设计框架,但具体部件设计需要学生自己实现。①指令译码器:本质上就是分线器,将32位的指令信息按照指令格式分出OP、Rs、Rt、Rd、shamt、funct、immediatel6、immedi-ate26信息,传送到后面的寄存器、控制器等部件;②主控制器:按照OP和funct信号,产生每条指令执行时需要的控制信号,需要分析和写出各类操作需要产生控制信号的真值表,再在Logisim中生成逻辑电路;③地址产生和转移逻辑:提示学生要实现顺序执行、转移执行和无条件转移执行3种跳转方式及跳转地址的产生。

设计基本过程如下:

(1)数据通路设计。通路设计不能急于求成,要进行逐条指令的分析和设计。首先,设计R-type中add、sub、subu、slt、sltu等的通路,需注意是否要判断溢出;在此基础上,分析I-type带立即数运算指令的数据通路,分析需要添加哪些部件,再分析sw、1w指令的数据通路、分支指令的数据通路、无条件跳转指令的数据通路;通过逐步添加部件,最后逐步实现完整的数据通路。其实添加新部件的过程,就是不断添加多路选择器的过程。

(2)控制器设计。数据通路设计完成后,就知道需要的所有控制信号。按照控制信号产生的条件,可以写出真值表,生成控制器逻辑电路。其实控制器的设计过程,就是写真值表的过程。

愿意深入学习的学生,可以继续选修该课程的“课程设计”,在Logisim仿真平台上完成从多周期CPU依次到理想流水线、转发流水线、气泡流水线,再到分支流水线CPU的设计。

3.6实验测试

为了验证CPU设计的正确性,可以使用自己设计的MIPS指令编写测试程序。使用Mars软件,用Edit编辑汇编源代码,用Run菜单中的Assemble进行汇编,得到机器代码。程序汇编后可以利用File菜单中的Dump Memory功能将代码段和数据段导出,采用十六进制文本方式导出文件,然后在文件第一行加入“v2.0raw”即可在Logisim中加载到指令存储器,执行测试程序,查看运行结果,验证程序运行是否正确。

4实验过程管理

学生在教学计划学时内难以完成上述实验项目,需要课外安排时间。Logisim平台使用灵活,学生能够方便地通过课外时间继续完成实验任务,但需加强监督管理和课外辅导。实验采用小班上课形式,教师现场讲解和指导,课外通过线上和线下混合式进行辅导答疑。虽然没有严格的考勤,但设置有几个关键模块的完成时间和检查点,并对进度落后的学生给予帮助。对每位学生的实验要验收实验结果并答辩提问,而不仅仅只是批阅实验报告。

5结语

在软件仿真平台上完成实验,优点是能够培养学生设计处理器的能力,加深对计算机的理解,建立整机系统概念,同时降低学生完成实验任务的难度,提高实验成功率;不足之处在于难以提高学生硬件系统设计和调试能力。部分有兴趣的学生,可通过选修“课程设计”提高硬件设计和调试能力。

猜你喜欢
计算机组成原理计算机专业实验教学
“以赛促学,以赛促教”促进计算机专业教学理念创新与实践研究
电容器的实验教学
几何体在高中数学实验教学中的应用
面向计算机系统能力培养的计算机组成原理实验教学
用“工程思维”引领《计算机组成原理》课程教学
《计算机组成原理》课程建设的改革与探索
职业高中计算机专业教学改革浅析
非计算机专业C语言教学探讨
新形势下技校计算机专业人才培养探讨