图书前言

当前,加强实践环节,培养创新人才已经成为全国高校本科生培养的大方向。从计算机专业的学科特点来看,我们更强调课程体系整体优化,立足系统,软硬结合,加强实践,注重创新和发展学生个性。

如何利用实践课程切实做到提高学生综合设计能力和实践动手能力,培养学生创新思维与锐意进取的精神,是我们多年来一直探索的课题。从2000年开始,我们就针对计算机专业所有硬件课程进行了整合与实践环节建设。2003年开始,开设了包含软件与硬件相结合的计算机系统综合课程设计。经过5年的建设,该课程得到了学生和同行的认可。在2007年高校计算机系主任论坛和2008年高校计算机实践课程论坛上,与会同行对该课程表示出浓厚的兴趣,给予了积极的评价。本书就是对我们5年来进行该课程建设的一个总结。

多年的教学实践使我们感觉到,计算机专业的学生除了加强计算机科学理论知识的学习,加强实践能力的培养外,还需要加强计算机系统综合分析和综合设计能力的培养。当前是嵌入式系统迅猛发展的时期,作为一类特殊的计算机应用系统,嵌入式系统的开发更需要大量具有系统层面分析与设计能力的技术人员,因此在高校计算机专业高年级本科生中培养这方面的能力是非常有必要的。

立足系统,软硬结合,鼓励创新,注重实践是“计算机综合课程设计”课程的总目标,也是本书编写的主要指导思想。本书以一个实际的SoC(片上系统)设计为例,介绍了如何进行软硬件协同设计。具体叙述了一个带有可执行31条MIPS指令的CPU和若干接口部件所组成的SoC芯片MiniSys的设计过程,以及在该芯片上运行的BIOS与汇编器的设计方法。读者通过本书的学习,不仅学习了实际的简单嵌入式SoC系统MiniSys从硬件到软件的整个开发过程,还能加深对计算机系统的原理与设计方法的理解。每章后的思考题能够引导读者在一个更高的层面上考虑设计更复杂的系统。

全书内容安排如下。

第1章 概述。本章从原理的角度,分析了设计一个具体系统应该注意的问题,尤其是强调了嵌入式系统设计中,软硬件协同设计的有关问题。

第2章 MiniSys CPU设计。描述了MiniSys CPU的体系结构、寄存器组定义和指令集,分析了指令执行的过程,最后给出了大部分部件设计的细节。

第3章 MiniSys接口部件设计。从系统角度描述了总线控制、中断、各类接口部件的设计方法,并给出了详细的设计。

第4章 BIOS设计。解释了BIOS应该具备的功能以及BIOS开发中应该注意的问题,并给出了几个BIOS模块设计的例子。本章还讨论了有关堆栈设计和实现的方法。

第5章 汇编器的设计。详细讨论了MiniSys系统汇编语言规范的设计方法,从编译原理的角度介绍了MiniSys汇编器的设计方法。

第6章 综合测试与验证。详细描述了如何用仿真工具对设计的系统进行验证,如何编写测试程序以及如何测试软件功能。

计算机系统综合课程设计前 言 第7章 高级设计讨论。为能力较强的读者提供了更高层次的设计方案,包括在硬件上如何实现流水线处理器,如何增加浮点运算单元和乘除运算器以及软件层面上如何设计Mini C编译器。

第8章 Verilog HDL语言基础。本章相对独立,主要是针对没有学过Verilog HDL语言的读者提供一个快速入门的简单教程,但还是希望读者至少有C语言的基础。

通过上述8章的介绍和章后的思考题,读者最终能够完成一个简单的SoC系统的软硬件设计,并能在Altera的Quartus II平台上使用Cyclone芯片实现。本书中的Verilog HDL代码在Quartus II 7.0下实现,汇编器代码也在Turbo C 2.0以及VC++6.0中调试通过。读者也可以使用C++、C#、Java等语言实现。

本书在编写过程中充分考虑了不同层次学生的具体情况,因此在使用本书作为实践教材的时候,建议教师要注重因材施教,合理选择。一般,对学生的最基本要求是将教材前6章中提供的源码补充完整,并完成思考题中不带*号的题目。对于基础好,能力较强的学生,要求他们选择完成思考题中带*号的问题,*号越多,题目难度越大。第7章的内容也是为学有余力的同学准备的,鼓励他们完成更高的设计。

我们建议使用该教材开设“计算机系统综合设计”类的实践课程课时数为68学时,其中20学时左右介绍Verilog HDL语言和相关的理论知识,侧重介绍工程设计理念和软硬协同设计方面的理论知识。46学时实验,建议每5人一组,分别完成CPU、接口部件、BIOS、汇编器(或编译器)的设计。每组2个学时的时间进行验收,主要验收测试程序和仿真波形。另外,本书作为实践课程教材,并未对理论部分做详细阐述,所以希望读者最好具备“数字逻辑电路”、“计算机组成原理”、“微机原理与接口技术”、“编译原理”、 "C语言程序设计”等课程的知识。

全书由杨全胜、王晓蔚、翟玉庆、张志政和吴强老师编写,杨全胜老师负责全书内容的修改和最终定稿。东南大学计算机科学与工程学院博士生导师邢汉承教授与朱怡健副教授审核了全书,并提出了宝贵意见。

本书在编写过程中还得到了东南大学计算机科学与工程学院领导和系统结构教研组王健、任国林、徐造林等老师的大力支持。另外,东南大学计算机科学与工程学院2004届到2008届本科生在本课程建设期间,用自己的实践不仅验证了本课程内容的正确性,还帮助我们完善了课程内容。其中,张玉健、张冠群、万乾坤、崔涛、李正兴、苏凯、谢川、邱栋等同学的实践成果丰富了我们教材中的实例。邹峰、崔涛、闫升、李正兴同学制作了本课程的网站和网络课件,参与研发了本课程实验设备。在此,我们对所有帮助我们的同事和同学表示衷心的感谢。另外,我们还要特别感谢清华大学出版社的编辑们在本教材申报国家十一五规划教材期间,以及书稿编辑期间给予我们的极大帮助。

本书网站地址:http://cse.seu.edu.cn/people/yangqs/declareWB1/Index.htm

由于实践类教材的编写对于我们来说是第一次,再加上我们水平有限,难免会有不足之处,殷切希望得到广大同仁和读者的批评指正。

编 者 于南京江宁九龙湖畔2008年8月