基于EDA的计算机硬件课程实践教学的研究
摘要:本文主要研究如何利用MAX+PlusII或QuartusII虚拟平台进行计算机系统硬件课程设计的虚拟实践方案。
关键词:EDA;硬件课程;实践方案
中图分类号:G642文献标识码:B
文章编号:1672-5913(2007)14-0090-04
在当前的培养方案中,各高校都非常重视计算机专业课程的教学和实践过程,训练学生的思考能力、动手能力和创新能力。而虚拟实践的实现既能够达到教学目标,又能够节省实验资源,还可激发学生的学习兴趣,鼓励优秀的学生不受实验器件的限制而自行设计新的实践内容,以达到进一步提高动手能力及创新能力的目的。
1国内外计算机硬件课程实践教学现状
对于计算机组成原理等这样较大规模的硬件系统课程实践而言,为了加深学生对计算机组成、工作原理及整机概念的理解,学生需要利用中大规模集成电路等器件对计算机系统的组成进行分析、设计、实现、测试和验证。当前,这些器件和整机的设计与实现基本上是在实验室特定的硬件平台上进行的,由于实验经费有限、硬件平台数量的限制,学生参与的实验多半是验证性的实验,导致学生对实验丧失兴趣,抄写实验报告的现象非常严重。因此,在进行课程实践过程中,传统的实验模式不能对学生因材施教,束缚了对学生创新能力的培养。
各大学提供的课程项目实验的内容差别不大,一般都有运算器实验、控制器实验、存贮系统实验等单项实验。研究型大学会要求学生分组完成一、两个综合性的实验项目。如计算机系统的整机设计。虽然各大学提供的课程实验的内容差别不大,但各大学在如何完成课程实验的实现方式上有较大区别,综合起来有五种模式:
(1) 基于汇编:实验通过编写相应的汇编语言程序来完成,可帮助学生理解与系统组成有关的一部分主要思想。这种实验方式简单易行,但无法了解到详细的硬件设计。
(2) 基于仿真系统:实验通过专门设计的仿真系统来完成,这也是一种用软的方法来完成硬件实验的主要途径。国外有很多大学采用,也有很多流行的仿真软件。比如winDLX,使用DLX仿真器、对程序进行性能分析,认识数据相关、控制相关、结构相关、相关专用通路的概念以及它们对性能的影响。还可以设计不同的流水线控制策略,评价不同流水线对性能的影响。通过仿真的手段,设计并验证cache组织对计算机性能的影响等。
(3) 基于高级语言:学生通过JAVA、DELPHI、PowerBuilder、C/C++、VC、Vb等编程语言自己编写类似WinDLE的仿真环境。
(4) 基于EDA平台:实验借助于EDA(比如,Altera公司的MAX+PlusII及QuartusII)平台,利用硬件编程语言(VHDL)编写程序,编译后下载到在系统可编程芯片SoC上,即可完成诸如数据通路、CPU等的设计。这种实验方式可充分利用VHDL自身的特点,即用软件的方式来设计硬件,修改起来十分方便。这无疑是一种较为先进的实验方式,但一方面学生理解掌握VHDL语言需要一定的时间,另一方面对实验室的硬件配置也有较高的要求,需要有相应的EDA工具等等。
(5) 基于专门的实验计算机系统:在专门设计的实验计算机系统上完成课程实验。这种实验方式国内的大学采用的较多。如清华大学根据目前计算机和集成电路技术的发展现状,设计研制了“开放式教学CPU设计与测试系统”,通过这个开放式的设计型、研究型大型教学实验,使实验者不仅能够学习CPU的设计、验证和测试方法,还能够更进一步的理解计算机原理和组成以及系统结构方面的知识,同时学习一些相关EDA工具软件的使用方法。在04年,清华本科生使用该实验装置成功的完成了课程实践。他们不仅设计出自己的CPU,而且百花齐放,设计中简单的有无流水无cache的、稍复杂的有2级流水(无cache)到5级流水(无cache)到5级流水(带cache)到超标量的CPU。
上述几种实现方式虽然不同,但都具有帮助学生加深对基本概念和理论知识的理解的作用。同时每种实现方式也都具有自身的特点,各校一般都结合本校的特点和具体的实验内容选取其中一种或综合采用其中某几种。
2虚拟化实验平台的选择
通过对国内外相关情况的调查、分析、研究,我们考虑可以利用复杂可编程逻辑设计器件(CPLD)设计软件作为电子设计自动化(EDA)实验平台,模拟真实的硬件平台,从而达到虚拟化计算机系统硬件实验的目的。Altera公司的MAX+PlusII及QuartusII平台是完全集成化、易学易用的可编程逻辑设计环境,主要用于设计新器件和中大规模CPLD/FPGA。它具有硬件描述语言、电路原理图、时序图等多种输入方式,利用其所提供的标准门电路、芯片等逻辑器件,完成数字电路从设计输入、编辑、编译、仿真、封装到下载的全过程。MAX+PlusII及QuartusII平台可以保证所设计系统的可靠性、高效性和灵活性,其强大的图形界面和完整的帮助文档,使学生能够轻松快速地掌握和使用该EDA平台,进行逻辑电路及相关系统的设计。
近几年来随着计算机和微电子技术的发展,CPU的设计一直是国内外研究的热点。计算机系统设计方法和手段都发生了巨大变化。美国加州伯克力分校、西北大学等著名高校开设的计算机组成与系统结构的课程实验都是通过Verilog HDL硬件描述语言来进行计算机功能部件的设计。而国内清华大学、北京工业大学、北京理工大学、国防科学技术大学、湖南大学等都已经采用这种实验方式,并自主开发了适合自己的实验平台。
国内部分高校通过实践发现,采用虚拟化方式来完成计算机系统硬件课程设计不仅是可能的,而且能够摆脱以往采用的实践平台的束缚,并且可以根据需要设计出各种不同水平的实验及课程设计。此外,由于虚拟平台的灵活性和可保存性,极大地方便了课程实践的设计者和参与实践的学生。教师可以根据课时的要求,方便地调整课程实践的方案;学生可以根据每个人的时间,随意安排进行实践的时间。同时可以充分发挥出学生的潜能,进行具有创新性的设计及实践。
通过调研发现,现在越来越多的高校已经认识到将硬件描述语言引入计算机硬件类课程的重要性,作为计算机专业的学生应该有机会在大学里把分散在各门计算机系统相关课程中的知识链接起来,学会在设计实际系统时做复杂的设计选择和折衷,获得设计一个“可用的”计算机系统的重要经历。通过思考整个系统的设计,树立起计算机工程的概念,掌握使用工业的EDA软件工具和技术,使他们进入工业界和研究界后能很快适应工作需要。而在大学里构建一个实际的计算机系统,时间、人力和资源都是不允许的。快速原形技术以及新一代的大规模现场可编程逻辑器件使得完成计算机系统原型设计成为可能。先建立处理器微体系结构模型;用高级语言(如C)写出处理器模拟器(定义处理器的高层结构,获得一个可执行的处理器微体系结构定义);再用硬件描述语言(如Verilog)写出处理器仿真器(代表处理器的仿真实现);然后在模拟器和仿真器上运行交叉编译的应用程序,可以观察指令的逐条执行,分析实际机器的行为,以及应用特征、各种设计条件和约束对处理器体系结构设计的影响;最后,在一块可重构的FPGA上实现验证可运行真实程序和操作系统的处理器设计。在整个设计中,处理器体系结构设计是计算机系统结构设计中最重要的部分之一。学生能够设计一个处理器,就能够设计其它任何复杂的数字系统;理解如何设计出一个基本的通用CPU,对于设计更复杂的处理器或计算机系统是十分重要的开端。可以以一个精简的CPU设计为载体,基于高密度现场可编程器件(FPGA)构建可重构的计算机系统结构快速原型设计实验平台,给学生创造一个构建真实计算机系统原型的机会,学习在整个系统构建过程中作出软硬件设计的决定。实验开始时,先向学生提供一个已构建好的基本CPU模型、测试程序、以及经过裁剪的在该模型上可执行的操作系统和经过修改的编译器。要求学生为其添加新的功能需求,思考如何提出或选择某个候选的解决方案,如何评估解决方案,以及如何作出设计改动。学生在此过程中获得复杂数字系统设计、模拟、验证和评估方面的经验。尽管整个过程是在已有的模型下经过改造和扩充完成,但在整个实验过程中,学生获得了复杂硬件设计的实际经验,对他们未来从事计算机系统的设计和研究是极为重要的。
3实施方案的选择
现在国内外计算机硬件课程的开设有三种情况:第一,只开设一门课程。国外有些大学只开设一门课程,比如,MIT的Computing Structure(计算结构),Harvard的Computer Hardware(计算机硬件)。课程的内容从基本的MOS管、集成电路、流水线到整个计算机系统。课程有十几位老师分专题讲授;第二,分别设置三门课:计算机系统结构、计算机组成原理和数字逻辑;第三,设置两门课:计算机组成与系统结构,数字逻辑。国内的学校一般采用第二、第三种方式。
教学的主要内容包括:计算机系统结构的基本概念、指令系统、CPU设计、流水线技术、存储系统、输入输出系统、向量标量处理机等。根据各高校学生的特点,在实施计算机组成原理及系统结构课程的实践教学时采用不同的教学安排,大概分为以下四类:
(1)“计算机组成原理”理论教学54学时,基础实验教学18学时,两周课程设计;
(2) 在“计算机组成原理”学习完后,单独开设“计算机组成原理课程设计”,总学时48学时,其中8学时课堂讲授EDA知识、课内实验40学时;
(3) 在“数字逻辑”学习完后,与“计算机组成原理”同一学期开设专业选修课“VHDL和计算机硬件模块设计”;
(4) 在第三学期(短学期)一个月时间进行系统设计。
从计算机组成实验的发展看,逐步加入VHDL实现的实验内容,以取代部分传统的硬连线实验是现在的发展方向。
高等教育是分层次、分对象的。作为重点大学主要培养的是研究型的人才,而作为普通本科院校培养的是“研究+实践型”的面向一线的应用型工程人员。所以教育的对象既要有理论基础,又要有很强的实践的能力。普通高校培养的不是设计CPU的人才,所以在实践教学上可以选择第3种安排,作为计算机应用专业的一个研究方向,通过选修课的方式培养人才。在教学中一边介绍EDA的知识,一边通过实践掌握基本组合电路和常用时序逻辑电路的设计方法,比如门电路、编译器和译码器、多路选择器、比较器、加法器、触发器、锁存器、寄存器和一位寄存器、计数器、分频器。通过先复习基本概念、逻辑表达式、逻辑电路图和真值表,再给出该电路的功能描述的VHDL源代码的方法,这些在数字系统中应用十分广泛的基本电路,通过实验不断的去研究它们的内在逻辑,掌握用VHDL描述硬件电路的思路和方法。从基本电路的实现到运算器、存储器甚至控制器等计算机功能模块的设计,最后完成基本模型机的设计要求。
4总结
针对二类本科学生的特点,在进行计算机硬件课程实践教学实施方案的研究过程中,需要考虑好以下几点:
(1) 要提出多个难易程度不等的实验项目设计方案,这个工作可以通过毕业设计由毕业生和老师一起研究,然后在实验班实施。
(2) 根据设计中运用的VHDL的语法等组织教学内容。在教学过程中,要特别注意VHDL编程与一般高级语言编程的区别,注意不能完全脱离硬件电路,注意理论和实践相结合,注意难点和误点内容的讲解。在教学中,要多讲实际例子,比如从最简单的计算机运算部件的设计开始,设计加法器、乘法器、除法器、逻辑运算器、移位器、计数器、比较器、译码器等。再设计存储器、核心是处理器CPU的设计。
(3) 合理安排课程内容,调整教学计划。作为硬件描述语言课程的知识引入不易太早,至少应在修完C语言程序设计和数字电路课程之后进行。作为我校学生,大部分基础较差,自学能力和自主解决问题的能力不强,所以在进行改革过程中实施起来较困难,并且内容不易过多过难,需要精心组织、设计一套适合我校学生水平的实施方案。
我们整体的设想和追求的目标是:以全面提高教学质量为宗旨,以创新设计模式为指导,将硬件描述语言、先进的EDA开发工具和技术引入计算机硬件类课程的教学和实践过程中,逐步更新传统硬件实验教学中的陈旧内容、模式及其实验平台,创造一个从验证转向设计,从单一走向综合,从封闭走向开放的全新的实验教学环境。
参考文献:
[1] 罗克露. 计算机组成原理实验改革探索[J]. 实验科学与技术,2004,(3).
[2] 窦衡. 加强EDA教学,培养电子系统集成设计人才[J]. 电子科技大学学报社科版,2005,(7).
[3] 蔡文伟. “计算机组成原理”教学实践中的几点思考[J]. 肇庆学院学报,2004,(2).
[4] 李山山,汤志忠,周继群. 基于FPGA的开放式教学CPU的设计与测试系统[J]. 计算机工程与应用,2005,(14).
[5] 叶雪军. 计算机系统结构教学现状和几点思考[J]. 中国科学教育,2005,(8).
[6] 叶雪军. 基于EDA的“数字逻辑”课程的探讨[J]. 计算机教育,2006,(8).
作者简介:
叶雪军,湖北经济学院计算机科学与技术学院讲师,主要从事数字逻辑、计算机组成原理和计算机系统结构教学工作,研究方向:计算机控制技术、嵌入式系统及应用。该课题是2006年湖北经济学院的校级教学研究项目。
联系方式:yxj@hbue.edu.cn
通信地址:武汉江夏藏龙岛科技园区洋湖大道特1号湖北经济学院计算机科学与技术学院
邮政编码:430205