APP下载

应用牵引与目标驱动式计算机组成原理课程设计刍议

2020-09-29吕为工何燕平石代锋王翠华

实验技术与管理 2020年7期
关键词:开发板应用程序课程设计

张 策 ,吕为工 ,柏 军 ,何 辉 ,华 栋 ,何燕平,石代锋,王翠华

(1. 哈尔滨工业大学(威海) 教务处,威海 山东 264209;2. 哈尔滨工业大学(威海) 计算机科学与技术学院,威海 山东 264209)

计算机组成原理是计算机类专业的核心主干课程,是学生学习计算机的构成与工作原理的关键课程,在整个课程体系中占有重要地位。以提高学生对计算机整机构成与运行理解、设计和实现计算机能力为核心,计算机组成原理课程设计是深化实践、能力拓展的关键环节[1-3],是面向系统能力培养和提升解决复杂计算机系统问题能力的基本途径[3-8]。课程设计主要以设计和实现MIPS(microprocessor without interlocked piped stages architecture, 无内部互锁流水级的微处理器)类型的CPU为主题,验证所设计的CPU或计算机的正确性。在以往课程设计中,主要采用“自底向上”的方法——先设计出若干条 MIPS指令,进而编写汇编层面的应用程序进行验证,且采用软件(例如ModelSim等)模拟或仿真[9]的方式来进行仿真验证。这种被动应用和虚拟仿真验证的缺点已严重制约了课程设计对学生实践创新能力的提升,成为了亟待改革的迫切问题。

本文提出并实现了“自顶向下”与“自底向上”相结合的联动开发方法,注重于以应用为牵引的目标驱动式创新改革。该方法已应用于多个学期计算机组成原理课程的设计改革实践,取得了积极成效。期望通过我们的实践探索能够为更多高校的课程设计提供借鉴,增强学生的实践能力、协同设计与调试能力、创新能力。

1 基本安排

1.1 设计目标

开展基于FPGA的SOC设计[10-12],初步掌握MIPS类型CPU的设计要领,对以“CPU+内存+总线+I/O”的通用计算机架构有深入理解,基本具备设计与实现一个较为完整的简易计算机的软硬件协同调试与开发能力,为解决复杂计算机系统工程问题奠定坚实基础。

1.2 基本导向

提出的“自顶向下”与“自底向上”相结合的改革核心思路可以概括为“以上率下”,即首先明确要解决的应用问题,即选择要实现的上层汇编应用程序,进而分析确定编写上层应用程序所需要的指令(MIPS汇编指令),再设计支持这些指令的 MIPS类型 CPU或计算机模型。这种以应用为牵引、以目标为导向的课程设计规划,有助于学生从整体出发,用针对性地解决实际问题的思维来指导完成课程设计任务。图 1展示了这种以应用为牵引和以目标为驱动的课程设计改革。

图1 以应用为牵引和目标为驱动的课程设计改革

2 整体流程

2.1 整体流程

计算机组成原理课程设计要完成MIPS类型CPU的设计(或微缩计算机的设计),运用硬件描述语言(Verilog)进行编码实现、仿真验证、上层应用开发、FGPA验证等任务。为了保障完成高质量的课程设计,采用项目开发模式来管理,从开题提交任务书到结题验收要求有清晰和完整的流程安排,充分发挥机制的约束作用。图2展示了课程设计大致经过的流程。

图2 课程设计基本流程

(1)理论讲授。在教室课堂安排 4个学时讲解MIPS类型CPU的基本构成、特征,对典型的指令格式与寻址方式和MIPS汇编语言程序设计进行介绍,重点剖析 MIPS处理器设计流程与要点,概要介绍FPGA平台和IDE集成设计环境(Vivado、ISE等),并提出要求规定等。

(2)完成开题任务书。学生以小组为单位选择应用题目(要解决的应用问题),分析出所需要的MIPS指令,完成开题任务书的撰写,并初步实现用待设计和实现的MIPS指令编写上层汇编语言程序。

(3)CPU或计算机模型设计。依据所分析出的MIPS指令,进行以数据通路图和控制器状态转移图为核心的CPU设计或计算机模型设计。

(4)编码与仿真。采用 Verilog硬件描述语言编写MIPS类型CPU或计算机的源码,在Vivado软件环境下进行仿真验证。

(5)FPGA综合调试验证。仿真通过后,经过布局布线、综合、FPGA配置等工作后,进行软硬件的联合调试。通过FPGA对设计实现的MIPS指令编写的汇编语言程序进行综合验证,直至实现预定功能,解决应用问题。

(6)提交结题报告。现场验收着重检查开题任务书的完成情况,询问设计中的要点与难点的解决情况,给出验收成绩;结合提交的开题任务书、中检情况、结题报告和考勤等,进行最终成绩核算。

2.2 实施策略

总体上采用“项目管理+逐步推进”的实施策略,为课程设计的高质量顺利完成提供组织保障。从提交开题任务书开始,至中期检查和结题验收,对学生和教师逐天进行任务安排,按照预定进度分阶段地推进课程设计进展,直至现场验收和收取结题报告,在规范的管理制度中完成课程设计。

3 开展课程设计创新改革实践

3.1 改革重点

在这种“自顶向下”与 “自底向上”二者结合的安排中,“顶/上”主要是指(用 MIPS汇编指令编制)上层应用程序,“下/底”主要是指选择、设计、实现所需要的MIPS汇编指令。因此,整体上可以概括为“以上率下”,即由被动式验证所设计和实现的CPU,转变为主动解决具体的应用问题,这是整个课程设计最为核心的改革。具体执行如下:

(1)“自顶向下”线索。①应用选择:选择要解决的上层应用问题。②确定指令:分析并确定为此要设计和实现的MIPS指令集。③应用开发:初步编制完成汇编应用程序。

(2)“自底向上”线索。①通路设计:设计以数据通路图和状态转换图为核心的CPU或计算机。②源码编写:编写MIPS类型CPU或计算机实现的硬件描述语言层级的源码。③仿真验证:进行软件层面的仿真验证(包括前仿真/功能仿真/逻辑仿真和后仿真/时序仿真)、布局布线、FPGA配置等。④指令测试:验证每条指令的汇编应用程序及相应的二进制机器。⑤应用开发:编制完成汇编应用程序及相应的二进制机器程序。⑥问题解决:FPGA验证所设计与实现的CPU和编制的上层汇编应用程序,解决所选择的上层应用问题。

3.2 基本要求

(1)每个题目至少需要设计并用16条MIPS指令(及格条件):①编写的可执行应用程序能够正确运行,用以验证所设计的指令;②题目中没有用到的指令,需要另行编写可验证的应用程序。

(2)要求所有程序的输入和输出都需要用到FPGA开发板上的 I/O硬件:①输入可选择开发板上的拨码开关,或者接收 PC机键盘的输入再存储到开发板内存中;②输出可选择开发板上的数码管或LED发光二极管,或者通过PC机的显示器进行输出。

3.3 应用题目

课程设计之初要选择拟解决的应用问题,应用问题的设计直接关系到课程设计质量,不仅数量要充足,而且形式要多样,这样才能充分激发出学生的创新力,设计出功能强大的CPU或微缩计算机。表1列出了部分课程设计题目。

表1 部分课程设计题目

3.4 改革实践

在几年的改革实践中,这种以问题解决为目标导向的做法带来了整个课程设计思路与模式的转变,一大批优秀成果相继涌现。猜谜语、模拟交通灯、数码管与LED显示花型、寻找最大值最小值、选择排序、冒泡排序、堆栈模拟、火箭发射倒计时模拟、时钟、秒表、计算器、手电筒等等,成为优秀作品。这里以一个简单计算器的题目为例,概要介绍题目要求与最终实现效果的情况,如表2所示。

随着课程设计的多年持续开展,题目难度不断增大,选择高难度题目的组数也在不断增加。这其中,为了挑战和获得好成绩,有一小部分组员选择或自行拟定了高难度题目,成为受瞩目的对象,也成为整个课程设计中的亮点和特色。

表2 课程设计题目实现解析

4 改革成效与改进之处

4.1 改革取得的成效

1)重要性得到重视。

学院对课程设计的重视程度显著增加。课程设计被单独作为计算机设计与实践课程存在,由1周增加到 2周,由单纯的仿真模拟调整为购置 FPGA开发板进行设计验证,并且每个班级配备一名专任指导教师。

2)创新性得到检验。

提出并实现了以上层应用牵引下层计算机设计的改革创新做法,以应用为牵引的目标导向方法既使得MIPS类型CPU和计算机设计更加有针对性,又能够促进理解好设计目标与具体工作的关系,成为改革的关键核心。

3)系统性得到建立。

基于合理的进度安排与执行,初步建立起完整的由课堂理论讲授至现场验收的实施流程;采用项目开发的管理模式,建立了完善的管理与指导体系,为全过程质量把控带来保障。

4)成果性得到呈现。

在连续三年的改革实践中,每年有超过70%的组提前完成了课程设计任务,最终验收时接近 100%的组能全部完成,表明学生基本掌握了MIPS类型CPU的设计要领,初步具备了软硬件协同开发的基本能力。

课程设计增强了学生对硬件设计的信心,这在毕业设计的题目选择中得到证实,选择硬件类设计题目(计算机组成原理课程设计衍生题目、嵌入式系统开发类题目、物联网系统开发类题目)的学生数量和比例有所提高。

更为重要的是,课程设计中积累的能力和取得的成果激发了学生进行软硬件协同开发的勇气和信心。

5)示范性得到创建。

为数字逻辑设计、嵌入式系统两个课程设计改革提供了借鉴和示范,进而使得学院初步建立起较为完整的计算机硬件系统结构课程人才培养体系:计算机组成原理实验及课程设计→数字逻辑设计实验与课程设计→计算机接口技术实验→嵌入式系统实验与课程设计→计算机体系结构实验→物联网系统与物联网工程实践。

4.2 需要完善的地方

(1)指令设计与应用还不够多样和深入。在课程设计中发现,虽然设计了数十条指令,但只应用了部分指令进行编程,很多指令没有被应用,并且对 I/O操作的指令缺少设计。其原因是,对上层汇编应用的选择与确定和设计的MIPS指令集之间不匹配。甚至个别组为了降低难度,没有采用指令的方式实现某功能,而是采用硬件描述语言直接编写来实现。

(2)FPGA开发板资源使用还不够充分和深入。课程设计所用到的 FPGA开发板具有丰富的硬件资源,可支撑设计出强大的指令集,用来实现更加复杂和强大的CPU或计算机。对优质硬件平台资源利用得不够充分是制约课程设计质量的一个主要因素。

(3)上层应用的题目还不够丰富和具体。为了增加课程设计的创新性,避免题目频繁重复使用,现有题目库中的题目数量已经制约了学生的可选择度,因此要继续加大题目库的数量扩充,同时对题目的介绍、功能要求、实现细节等进行细化,使得问题描述更加清晰。

5 改进举措与建议

5.1 深入认知与设计CPU和挖掘FPGA资源是必然要求

要不断加深对MIPS类型CPU的认知,将 CPU的指令流水处理、中断系统等必要功能进行实现,进而增强通用CPU的设计能力,并突破对FPGA开发板资源的利用局限。同时要将键盘、鼠标、串行设备、蓝牙、VGA等连接到FPGA开发板上,丰富外设的种类,挖掘硬件载体的潜力。

5.2 增强软硬件一体化协同开发能力是必然趋势

计算机组成原理课程设计是计算机底层软硬件系统协同设计与开发的典型,为了增强这种综合开发能力,在后续设计中,要大胆尝试将微型操作系统、编译器等系统软件添加到FPGA开放板上,逐步形成完整的计算机系统。以系统能力培养和解决复杂计算机系统工程问题为目标导向,提升软硬件综合分析、设计、验证与实现的能力是必然趋势。

5.3 系统结构类课程贯通式课程改革实践是必然走向

现有的实验、课程设计等实践环节是以课程为单位开展的,割裂了完整计算机系统的整体性、层次性与关联性,不利于学生对整机系统中各构成部分协同工作的理解。建议安排更多的学时来进行分阶段接续式的课程设计,例如可以从第二学年启动直至第四学年,将计算机组成原理、计算机接口技术、嵌入式系统、计算机系统结构、操作系统、编译原理等课程的实践融为一个整体,培养学生对计算机全栈系统的认知、设计与实现能力。

6 结语

本文提出的计算机组成原理课程设计改革实现了为解决具体的应用问题而设计指令和CPU,扭转了过去单纯设计指令和 CPU后再去简单验证其正确性的做法,在多年的实践检验中获得积极成效。这种以应用为牵引的目标驱动式创新实践改革,能够提升课程设计的针对性、目标性和有效性,帮助学生在带着问题思考与解决的过程中提升对计算机整机系统的全局理解、设计、实现的能力,能够加强软硬件协同设计与开发的系统能力培养目标实现,对于提升复杂工程问题解决能力具有重要意义。配合更深入的指令设计与FPGA资源利用,逐渐将更多计算机硬件与系统软件融入到设计实现中,彻底贯通整个计算机系统,这是我们期待课程改革与人才培养的重大突破。

猜你喜欢

开发板应用程序课程设计
基于STM32H7的FDCAN通信系统设计与实现∗
龙凤元素系列课程设计
中秋明月
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
浅析单片机开发板的设计与制作
基于Articulate Storyline的微课程设计与开发
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
开放大学课程设计与资源开发
三星电子将开设应用程序下载商店