计算机硬件类课程教学改革实践研究
2024-09-04常亮郭宇飞闫文刚王斌李晶
关键词:计算机硬件;微处理器;微控制器;有效教学;实验室实践
0 引言
近几年,高等教育已经广泛使用电子学习平台,特别是在计算机科学和计算机工程课程的学习和教学过程中。电子学习平台可能不是基于硬件类课程的最佳解决方案,因为不能只从建模和仿真的角度来考虑,而应该使学生对日常生活中所使用的计算机的体系结构、原理和组织有一定的认识。如果不能激发学生对硬件的好奇心,学生就会失去兴趣。本文用真实硬件进行实践,并使用适当的模拟器,提出了基于硬件的课程实践改进方案,以实现更好的教学,并介绍了一种新的方法来减轻学生的学习负担,激发他们学习硬件的好奇心和积极性。
1 课程组织
计算机科学与技术专业课程需要必修三门硬件课程。分别为计算机体系结构与组织、微处理器与微控制器(MM) 和现代计算机系统。除此之外,还为学生提供了其他硬件选修课程,如机器人、并行和分布式处理等。本文主要对MM课程、目标和改革进行了探讨,以完善MM课程的教学大纲,从而提高学生学习MM课程的积极性。
课程教学分为3个部分,分别为理论讲座、理论练习和实践练习。讲座和理论练习以小组进行,而实践练习则在计算机实验室中以4名学生的团队进行,每个学生都在自己的工作台上工作。该课程前导课程是计算机体系结构和操作系统课程。
在学习中,课程分为两个逻辑单元。第一部分介绍了x86微处理器的内部架构和指令集、中断处理系统、BIOS和系统例程。第二部分主要介绍微控制器及其使用。学生将了解各种类型的微控制器,分析它们的组织、指令集和与x86微处理器相关的外设系统及嵌入式系统等功能。
1.1 课程难点
在过去几年里,编程是使用Microsoft Macro As⁃sembler(MASM)6.11版本完成的,程序员工作台(PWB) 作为集成开发环境。实验项目练习是真正基于硬件的。由于学生缺乏学习计算机硬件课程兴趣,这些硬核的硬件实验练习在课程开始就成为他们的障碍。前两个实验练习包括使用DOS命令和调试程序,这与之前学习的基于Linux的操作系统课程区别很大,几乎所有学生在第三次实验练习中都遇到了启动和运行MASM项目的问题。第四次实验练习是在控制台上写一段直接访问内存的文本。所有的学生都没有学习它的积极性,因为他们生活在一个有HD、DIRECTX或其他现代图形的世界里。最后,需要在Intel 8051微控制器模拟器上练习,需要学习一个新的环境和新的组装方法,彻底打击了学生积极性。
2 实验改进
根据以上分析,在MM课程的教学和实验练习部分探索了改进方法,以激发学生对硬件课程的好奇心和积极性。提高学习微处理器和微控制器的兴趣。
2.1 实验练习(x86汇编程序)
在课程第一部分的实验练习中,创建了全新的内容,即x86微处理器的指令集。授课内容的改革创新是通过引入新的面向软件的实验练习,取代了传统的和单调的面向“硬件”的练习。新的实验练习教会学生使用数组、矩阵、字符串、过程、宏等知识,最重要的改进是引入的练习要求学生用高级编程语言(C++或Java) 在汇编程序中编写示例代码。
1) 实验环境和模拟器。第一个实验练习向学生介绍编程环境,即Emu8086模拟器在虚拟机环境中使用。第一个实验练习是最重要的,因为要通过每个编程练习的可视化呈现,让学生意识到课程是很有趣的,因此,第一个实验练习不进行评分,它由一个示例组成,学生要学习如何用少量代码编写简单的红绿灯程序,然后再使交通信号灯更加智能。
2) 8086 汇编程序。经过上面实验练习,学生已经学习了关于8086处理器设计的基础理论练习,不同类型的寄存器和x86汇编程序中的基本指令,如MOV (将值从寄存器传送到寄存器)、ADD(将值加到寄存器)、SUB(从寄存器中减去值)、CMP(比较两个寄存器的值)和LOOP(使用寄存器的一些预定义特性创建一个循环)。在第二个实验中,学生将学习16位寄存器(例如AX) 的高、低8位寄存器(例如AH、AL) ,以及指令的源寄存器和目标寄存器。
3) 与高级语言的比较。第三个实验练习是双向的,即学生学习不同的寻址方式和访问内存的方法,练习如何使用高级命令或条件表达式,如IF-THEN、IF-THEN-else、WHILE-DO、FOR和REPEAT UNTIL。实验练习如图1所示的准高级语言的一个简单if-then 条件的例子,它向学生展示了两种可能的解决方案,第一种方案是直接实现,如图2所示的相同条件,第二种方案是从相反的条件开始,如图3所示的更快更好的解决方案。
接下来,练习继续使用条件表达式和循环代码实例来处理内存,进一步学习基本的内存寻址以及值和地址的区别,掌握使用寄存器BX 作为内存指针的方法。
4) 阵列和矩阵。为了深入了解存储器,需要学习数组和更高级的矩阵,以及基本的存储器工作语言创建循环过程。第四个实验练习如何在线性段中定义数组和矩阵,并将它们存储在内存中,以及使用其索引或指针访问特定元素。进一步学习行主和列主的概念,以及存储器中更高级的寻址方式。
5) 字符串。第五个实验是关于字符串的练习。学生将学习字符串的存储表示方法,以及管理字符串的指令。这个实验练习使用了与学生在第一和第二学年学习的编程课程“编程基础”和“数据结构和算法”中相似的任务,所以不需要解释额外的“硬件”问题,学生就可以立即开始练习。
学习了两个指针寄存器,即源索引SI和目标索引DI,字符串的基本指令MOVS(移动字符串)、LODS(从字符串加载)、STOS(存储到字符串中)、SCAS(扫描字符串)和CMPS(比较字符串)。学生们还学习了指令前缀REP(重复执行字符串指令,直到寄存器CX=0) 、REPE(重复执行字符串指令,直到寄存器CX=0或零标志清除)和REPNZ(重复执行字符串指令,直到寄存器CX=0或零标志设置)。
6) 过程、宏和中断。在学习了所有必要的基本指令和内存访问之后,需要深入研究使用过程和宏进行编程的更高级方法。第六个实验练习教学生在x86汇编器中如何使用过程和宏进行更高效的编程。在本练习中,学生将学习如何使用Stack,特别是如何在寄存器中临时存储宏。
本练习的另一个重要目的是介绍中断和中断程序服务过程,特别是调用DOS与键盘输入和控制台输出进行交互的中断INT21使用方法。引入中断可以帮助学生深入理解课程的第二部分,即微控制器工作过程。
2.2 实验练习(PIC16F887)
本课程的第二部分专门介绍微控制器。为了避免枯燥乏味,课程做了重大的改进。取消了Intel8051 微控制器和PIC 8259A中断控制器的传统练习方法。介绍了PIC16F887及其开发环境和高级编程语言Mi⁃kroC、MikroPascal和MikroBasic的IDE。
1) PIC16F887 工作环境。PIC16F887的第一次实验练习(共第七次)向学生介绍PIC单片机、开发环境、模拟器和MikroC编程工具的使用以及单片机编程。类似于汇编中的第一个实验室练习,通过应用示例,学习如何使用编程控制器的输入和输出端口,控制闪烁的Led灯,经过改进,再使Led灯变得更加智能。
2) PIC16F887 中的计数器和定时器。PIC16F887 微控制器的第二个实验练习是关于它的三个定时器和“预分频器”,即利用预分频振荡器频率不同,控制脉冲变短或变长。学生们学习如何设置和使用定时器,使用中断例程来定义计时器,控制中断出现时的微控制器行为。图4为十字路口的红绿灯程序实例。PORTC 的0、1、2引脚分别用于单向红绿灯,分别为红、黄、绿灯。3、4、5引脚分别为另一方向红绿灯,对应为红、黄、绿灯。
3) PIC16F887 串行通信。在第三个PIC16F887 实验练习中,向学生介绍串行通信的EUSART模块。通过计算机串口读写数据,发送字节、字符串或整数。学生设计了一个简单的确定秘密数字的游戏,即通过PC 串行端口发送一个数字,使用控制器回答它是否正确的数字。
4) PIC16F887 中LCD。第四个PIC16F887 实验练习向学生介绍了一个额外的硬件组件——液晶显示器。同样,通过互动游戏,他们学会了控制程序。图5所示为输入数字数组,并将该数组实时写入液晶显示器的第一行,并统计数字中偶数个数的任务示例。它使学生学会了读取或存储在EEPROM存储器中的数字和使用键盘写入数组,使用EEPROM控制器处理内存不足的方法,极大地激发了学生的动手能力和学习硬件课程的兴趣。
5) 解决实际问题。PIC16F887的最后一个练习是最难的,综合运用板载的和附加的硬件组件整合到一个练习中,解决实际问题。图6描述了使用三个引脚在PIC的7段显示器上启动、停止和重新启动计时器,当计数器到24时,控制篮球比赛的示例。通过控制1 号引脚,使液晶显示器显示数字。图7展示了在通过串口发送到控制器的GLCD(图形LCD)上显示图像的另一个示例。
3 课程改进
通过MM课程对实践练习部分做了进一步改进,引入了可视化模拟器和先进教学方法,在课程质量上取得了显著提高,提高了学生兴趣和成绩。通过增加硬件实验内容和数量,使成绩分布更加合理。通过对课程结构的修改,使其更接近于基于软件的课程,唤醒了学生对硬件的好奇心。
为了进一步提高课程质量和激发学生学习硬件知识的积极性,研究并分析了一些不足之处,通过课程教学安排、材料的结构等方法的改进,取得了良好的效果。在教学中,对教学实践过程的改进做了以下几个方面的研究探索。
3.1 针对无准备的学生
尽管对课程进行了改造,使理论练习和实验练习相似并相互联系,但学生们还是没有做好准备。由于实验练习紧跟着理论知识,学生没有足够的时间去理解和学习新的课题,因此,做了额外的改进,即重新安排课程顺序,在理论课程和练习后一周进行实践练习。
3.2 解决方案
由于前几年允许学生在两周后提交课后作业,使得课堂学习内容与写作业间隔过长,容易遗忘学习内容,导致作业质量不佳。为了改善这个问题,让学生在课堂消化解决问题的方法,并且在实验课上测试,另外给出扩展的问题,要求学生在课堂上解决。这种方式有助于掌握课堂内容和提高成绩,也迫使学生们为练习课做好准备。
3.3 动手测试标准
为了达到较好的成绩,要求学生的实践练习分数要达到50%以上。仅仅在课堂上解决问题已经不足以通过考试了,还要具备足够的基础知识,这使得学生们对上课更加重视,做好充分的课前准备。
4 改进的效果
对课程的额外调整使学生取得了比前几年更好的成绩。
4.1 实践成绩改善
实践练习的课程改进和方法的改变促进了今年的平均实践成绩明显提高。统计了去年不使用最新方法和今年使用最新方法进行实践练习的平均成绩。根据实验统计数据结果,动手练习方法的改进使平均成绩比去年使用的方法提高了15.02%。
4.2 期中成绩改善
实践练习的课程内容和方法的改进提高了期中考试的平均成绩。从统计数据来看,采用新方法之后有25%的学生成绩在8分及以上,而采用旧方法的学生只有2.16%,这是一个显著的改善效果。另一个重要的结果是低分数学生的数量,即6分和7分的数量在新方法下从21.50%减少到8.33%。今年的平均分为8.35分,而没有采用新方法的前一年的平均分仅为6.55分。
4.3 总成绩提升
课程的改进也提高了总平均成绩的,即期中和期末考试。统计数据显示采用新方法的学生期中考试和期末考试成绩在8分及以上的合格率为26.67%,与采用旧方法的3.23%相比,成绩取得了显著的提高。另一个重要的结果是低分数学生的数量,即6分和7 分的学生数量在新方法下从36.56%减少到16.67%。另外今年的总平均分为7.96分,比去年的6.46分有所提高,总成绩分布得到了很大的改善。
4.4 课程及格率
通过优化课程内容和教学方法,减少了不及格学生的数量。统计数据表明在新的方法下,期中考试不及格的学生减少了3.55%。即旧方法不及格的学生比改进后的新方法多了近10%(9.67%) 。结果证明在改进课程内容安排和教学方法后,普遍提高了学生学习积极性和成绩,取得了良好的效果。
5 结束语
本文对计算机科学专业中基于硬件的课程教学进行了一系列的改进。结果表明在动手练习的平均成绩上取得了明显的改善,提高了15.02%。通过期中考试的学生增加了9.67%,平均成绩增加1.8分。总分数分布也从旧方法的平均6.46提高到新方法的7.96,平均分数提高了1.5分。总合格率提高了3.45%。这些改进措施提高了学生在实践练习成绩和及格率。教学内容重新安排和新的教学方法不仅提高了学生对实践练习的兴趣,也提高了学生成绩,减轻了学生的学习负担,增加了他们学习硬件课程的积极性。