前言 面向计算机系统能力培养的实验平台是在Digilent公司的Nexys 4 DDR FPGA开发板上采用CPU+FPGA的SoC技术进行开发的,其目的是通过搭建实用的MIPS处理器系统(学生在“计算机组成原理”课程中已经亲手实现过自己的MIPS CPU,在“接口技术”课程中学习搭建过具有简单接口设备的MIPS处理器系统)、自己定制的操作系统的设计与实现以及结合实际的蓝牙小车应用,将学生之前在“计算机组成原理”“操作系统”“编译原理”和“接口技术”等课程中学到的知识在“计算机系统能力培养综合实践”课程中进行系统性融合,使其成为更加完整的体系,从而达到计算机系统能力培养的目标,提升学生的综合能力。 面向计算机系统能力培养的实验平台提供了MIPSfpga处理器软核、Hosmips操作系统、多种硬件模块设备接口、蓝牙小车典型应用、硬件加速(智能)模块等,以满足“计算机系统能力培养综合实践”课程的教学要求,它们还可非常方便地移植到其他类似的FPGA开发平台上。 面向计算机系统能力培养的实验平台具有以下特点: (1) 它是一个以实践为主导,具有一定展示度的实验平台。基于该实验平台开发的蓝牙小车应用具有可展示性,能够激发学生的创新性和想象力;在该实验平台上通过渐进式、积木式的实验方法,帮助学生熟练掌握计算机从硬件到软件、从底层到高层的全套技术,从而使得学生对计算机系统各层次的技术有更加深刻的理解。 (2) 强化智能应用,实验创新性强。该实验平台基于CPU+FPGA的SoC技术开发,在现有的面向计算机系统能力培养理念的基础上,通过充分利用现成资源、独立开发和学生实践创新的方式,强化系统的智能性,是对现有计算机系统能力培养的拓展与深化。 (3) 实验具有可扩展性。除了本书给出的实验外,学生可借助开发板提供的硬件设备资源(如麦克风和喇叭、SD卡控制器等)以及PMOD扩展,添加新的外部设备(如摄像头、红外模块、超声波或激光测距模块等),通过硬件和软件协同设计实现创新的功能(如录音、音乐播放、视频录制、智能控制等)。 (4) 有效突破传统硬件实验对实验时间、实验空间的限制,实现课内课外协同化,大大提升了实验效率,降低了实验成本。 通过本书提供的实验,学生将独立或多人协作完成一台蓝牙小车。该蓝牙小车的核心是Digilent公司的Nexys 4 DDR FPGA开发板,利用在该开发板上外接(通过PMOD接口)的蓝牙模块,学生可以通过手机上的蓝牙控制应用(蓝牙串口助手App或者自己开发的手机App)连接到该蓝牙小车,并通过应用提供的命令接口(命令协议由自己定义)实现对小车的控制(如前进、后退、转向等)。 需要指出的是,在本书的指导下,学生将完整地完成一个计算机系统从底层硬件到顶层应用的设计。从这个角度来说,本书给出的设计内容与基于单片机(或ARM处理器)的蓝牙小车不同,后者仅是简单的单片机开发,而本书的内容旨在以蓝牙小车作为应用,引导学生完成完整的计算机体系结构、操作系统以及软件应用的设计。 本书给出的蓝牙小车的总体架构包含以下3个层面的设计: (1) 系统硬件层面。在该层面,学生将在Nexys 4 DDR FPGA开发板上构建一个完整的计算机硬件系统,主要包括MIPSfpga处理器、UART接口、存储控制器等通用接口;同时,为了实现蓝牙小车应用,还需要设计蓝牙模块、电动机驱动模块等接口(理论上可以添加任意需要的接口)。 (2) 操作系统层面。在该层面,学生需要在上面构建的计算机硬件体系上运行Hosmips操作系统,该操作系统是一个基于MIPS的多任务操作系统。为了方便学生对它的了解和定制,Hosmips的代码规模被控制在两万行左右。为了实现蓝牙小车的应用,还需要对该操作系统进行分析、了解,完成相应的实验。 (3) 应用层面。在该层面,学生将在Hosmips给出的程序接口的基础上,完成蓝牙小车的控制程序设计;在实现基本功能(如读取蓝牙输入、控制电动机运转)的基础上,实现完整的蓝牙小车系统。 在熟悉了整个蓝牙小车系统的基础上,学生可以利用实验平台提供的扩展性,研究并实现一些更高级的功能。例如,可利用Nexys 4 DDR FPGA开发板提供的音频支撑,实现对声音的录制、播放,甚至实现对蓝牙小车的语音控制;利用Nexys 4 DDR FPGA开发板的PMOD扩展,实现对摄像头的支持,从而完成录像、播放等功能,并进而在此基础上(部分地)实现小车的智能化。 与蓝牙小车总体架构的3个层次相对应,本书由3个部分构成。 本书的第1部分基于MIPSfpga处理器的硬件平台,重点介绍蓝牙小车的系统硬件。第1部分包括4个实验。前3个实验的目的是使学生了解基于MIPSfpga处理器的硬件平台基本原理和结构,并由学生动手搭建一个较为简单的基于MIPSfpga处理器的硬件平台;第4个实验为MIPSfpga处理器中断处理,该实验为第2部分操作系统的实现奠定重要基础。实验1为硬件平台搭建的实践准备。实验2为基于MIPSfpga的硬件平台搭建。实验3为自定制接口模块的设计。实验4为 MIPSfpga 硬件平台的中断。通过第1部分给出的4个实验,学生应能够完成基于MIPSfpga处理器的嵌入式计算机系统。 本书的第2部分包含3个实验。实验5为Hosmips操作系统的构建与运行,要求准备Hosmips操作系统的编译环境,构建能够在MIPSfpga硬件平台上运行的操作系统。实验6为Hosmips集成开发调试环境安装,要求在Windows环境中搭建Hosmips操作系统的开发调试环境。实验7为从内核到应用,要求完成在Hosmips操作系统中的3个基础实验,以理解从用户态进程到内核态例程的调用路径。通过第2部分的学习,学生应能够在基于MIPSfpga处理器的硬件平台上运行多任务操作系统Hosmips。 本书的第3部分包含4个实验。实验8为蓝牙模块及电动机驱动模块硬件实现,要求对蓝牙小车两个重要的硬件模块,即基于AXI4总线接口的蓝牙模块和电动机驱动模块进行设计和实现。实验9为蓝牙模块及电动机驱动模块的驱动程序开发,要求在Hosmips操作系统中实现蓝牙模块和电动机驱动模块的驱动程序。实验10为设备驱动方式蓝牙小车应用实现,实验11为自启动蓝牙小车的实现,这两个实验指导学生完成与蓝牙小车相关的应用设计,最终达到和完成既定的设计目标。 学生还可以以蓝牙小车应用为基础进行扩展,例如,记录小车运行轨迹,在小车运行的过程中播放音乐,自动回避障碍物,等等,以展示这个基于蓝牙小车应用的计算机系统能力综合实践的“两性一度”,即高阶性、创新性和挑战度。 本书实验较多,由浅入深;同时内容丰富,层次分明。在教学过程中,教师可以根据学生的具体情况有针对性地选择部分内容开展实验,学生也可以根据自己的学习情况自行选择实验。本书适合作为高等学校计算机相关专业“接口技术”“操作系统”“嵌入式系统开发”“计算机系统能力培养综合实践”等课程的实验教材,也可供IT工程技术人员参考。 特别感谢华中科技大学计算机科学与技术学院秦磊华教授、谭志虎教授、吴非教授、胡侃副教授,本书是在秦教授和谭教授的策划与不断鞭策鼓励下完成的,同时他们也在本书的写作过程中提出了许多宝贵的意见和建议。还要特别感谢李若时博士,他为本书做了大量的工作,付出了许多。感谢华中科技大学计算机学院计科1410班的蔡春芳同学,她提供了自启动蓝牙小车的应用实例。感谢华中科技大学计算机学院2014级、2015级、2016级全体学生,本书大多数实验均经过了他们的多次检验和持续改进。特别感谢Imagination Community对本书相关实验的支持和贡献,正因为有业界无私的教学支持,才能让学生在学习中走得更远。最后,感谢在编者身后默默支持的家人,谢谢他们! 限于编者水平,书中难免存在错误和疏漏之处,敬请同行和广大读者批评指正。编者邮箱: hudq024@hust.edu.cn。 编者2021年6月