实验教材

实验教材封面

内容简介

本书本着立足系统、软硬结合、鼓励创新、重于实践为目的,以一个实际的SoC(片上系统)系统的设计为例,介绍了如何进行软硬件协同设计。具体叙述了一个带有可执行31条MIPS指令的CPU和若干接口部件所组成的SoC芯片MiniSys的设计过程,以及在该芯片上运行的BIOS与汇编器的设计方法。读者通过本教材的学习,不仅学会一个实际的简单嵌入式SoC系统MiniSys从硬件到软件的整个开发过程,还能加深对计算机系统的原理与设计方法的理解。

本书可作为高等院校计算机专业计算机系统综合课程设计的教材,对工程技术人员也具有参考价值。

本教材编写人员:主编:杨全胜
                 主审:邢汉承

参加编写的人员:王晓蔚、翟玉庆、张志政、吴强

前言

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

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

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

立足系统、软硬结合、鼓励创新、重于实践是“计算机综合课程设计”课程的总目标,也是本书编写的主要指导思想。本书以一个实际的SoC(片上系统)设计为例,介绍了如何进行软硬件协同设计。具体叙述了一个带有可执行31条MIPS指令的CPU和若干接口部件所组成的SoC芯片MiniSys的设计过程,以及在该芯片上运行的BIOS与汇编器的设计方法。读者通过本书的学习,不仅学会一个实际的简单嵌入式SoC系统MiniSys从硬件到软件的整个开发过程,还能加深对计算机系统的原理与设计方法的理解。章节后的思考题能够引导读者在一个更高的层面上考虑设计更复杂的系统。
         全书内容安排如下:
         第一章,概述。本章从原理的角度,分析了设计一个具体系统应该注意的问题,尤其是强调了嵌入式系统设计中,软硬件协同设计的有关问题。
         第二章,MiniSys CPU设计。描述了MiniSysCPU的体系结构、寄存器组定义和指令集,分析了指令执行的过程,最后给出了大部分部件设计的细节。
         第三章,MiniSys接口部件的设计。从系统角度描述了总线控制、中断、各类接口部件的设计方法,并给出了详细的设计。
         第四章,BIOS设计。解释了BIOS应该具备的功能以及BIOS开发中应该注意的问题,并给出了几个BIOS模块设计的例子。本章还讨论了有关堆栈设计和实现的方法。
         第五章,汇编器的设计。详细讨论了MiniSys系统汇编语言规范的设计方法,从编译原理的角度介绍了MiniSys汇编器的设计方法。
         第六章,综合测试与验证。详细描述了如何用仿真工具对设计的系统进行验证,如何编写测试程序以及如何测试软件功能。
         第七章,高级设计讨论。为能力较强的读者提供了更搞层次的设计方案,包括在硬件上如何实现流水线处理器,如何增加浮点运算单元和乘除运算器以及软件层面上如何设计Mini C编译器。
         第八章,Verilog HDL语言基础。本章相对独立,主要是针对没有学过Verilog HDL语言的读者,提供一个快速入门的简单教程,但还是希望读者至少有C语言的基础。
         通过上述八章的介绍和章节后的思考题,读者最终能够完成一个简单的SoC系统的软硬件设计,并能在Altera的QuartusII平台上使用Cyclone芯片实现。本书中的Verilog HDL代码在Quartus II 7.0下实现,汇编器代码也在Turbo C 2.0以及VC++6.0中调试通过。读者也可以使用C++、C#、Java等语言实现。
        本书在编写过程中,充分考虑了不同层次学生的具体情况,因此在使用本书作为实践教材的时候,建议教师要注重因材施教,合理选择。一般,对学生的最基本要求是将教材前六章中提供的源码补充完整,并完成思考题中不带*号的题目。对于基础好,能力较强的学生,要求他们选择完成思考题中带*号的问题,*号越多,题目难度越大。第七章的内容也是为学有余力的同学准备的,鼓励他们完成更高的设计。
         我们建议使用该教材开设“计算机系统综合设计”类的实践课程课时数为68学时,其中20学时左右介绍Verilog HDL语言和相关的理论知识,侧重介绍工程设计理念和软硬协同设计方面的理论知识。46学时实验,建议每5人一组,分别完成CPU、接口部件、BIOS、汇编器(或编译器)的设计。每组2个学时的时间进行验收,主要验收测试程序和仿真波形。另外,本书作为实践课程教材,并未对理论部分做详细阐述,所以希望读者最好具备“数字逻辑电路”、“计算机组成原理”、“微机原理与接口技术”、“编译原理”、“C语言程序设计”等课程的知识。
         全书由杨全胜、王晓蔚、翟玉庆、张志政和吴强老师编写,杨全胜老师负责全书内容的修改和最终定稿。东南大学计算机科学与工程学院博士生导邢汉承教授与朱怡健副教授审核了全书,并提出了宝贵意见。
         本书在编写过程中还得到了东南大学计算机科学与工程学院领导和系统结构教研组王健、任国林、徐造林等老师的大力支持。另外,东南大学计算机科学与工程学院2004届到2008届本科生在本课程建设期间,用自己的实践不仅验证了本课程内容的正确性,还帮助我们完善了课程内容。其中,张玉健、张冠群、万乾坤、崔涛、李正兴、苏凯、谢川、邱栋等同学的实践成果丰富了我们教材中的实例。邹峰、崔涛、闫升、李正兴同学制作了本课程的网站和网络课件,参与研发了本课程实验设备。在此,我们对所有帮助我们的同事和同学表示衷心的感谢。另外,我们还要特别感谢清华大学出版社的编辑们在本教材申报国家十一五规划教材期间,以及书稿编辑期间给予我们的极大的帮助。
         本书网站地址:http://cse.seu.edu.cn/people/yangqs/declareWB1/Index.htm,作者邮件地址:[email protected]
         由于实践类教材的编写对于我们来说是第一次,再加上我们水平有限,难免会有不足之处,殷切希望得到广大同仁和读者的批评指正。
                                                                    编者于南京江宁九龙湖畔

目录

第 1 章 概述
      1.1 计算机系统概述
        1.1.1 计算机系统组成
        1.1.2 计算机存储结构类型
        1.1.3 计算机指令集类型
        1.1.4 单周期、多周期和流水处理器
      1.2 嵌入式系统与软硬件协作设计
        1.2.1 嵌入式系统概述
        1.2.2 SoC技术及其发展
        1.2.3 软硬件协同设计
      1.3 本书设计的目标MiniSys
    第 2 章 MiniSys CPU设计
      2.1 MiniSys CPU结构
        2.1.1 MiniSys CPU体系结构
        2.1.2 MiniSys CPU的寄存器组
        2.1.3 MiniSys 的指令系统
        2.1.4 MiniSys指令执行过程分析
      2.2 MiniSys CPU设计
        2.2.1 取指单元的设计
        2.2.2 控制单元的设计
        2.2.3 译码单元及寄存器组的设计
        2.2.4 执行单元的设计
        2.2.5 存储单元的设计
        2.2.6 顶层文件的设计
    第 3 章 MiniSys接口部件设计
      3.1 I/O接口模块设计
        3.1.1 I/O端口地址与I/O地址空间设计
        3.1.2 MiniSysBus与总线控制模块设计
      3.2 中断模块设计
        3.2.1 MiniSys中断系统
        3.2.2 中断控制逻辑的设计
      3.3常规接口部件设计
        3.3.1 4位7段LED数码管控制器
        3.3.2 4×4键盘控制器
        3.3.3 定时/计数器
        3.3.4 PWM控制器
        3.3.5 UART串行通信控制器
        3.3.6 看门狗控制器
    第 4 章 BIOS设计
      4.1 堆栈的实现
      4.2 BIOS的基本功能
      4.3 BIOS基本功能设计
        4.3.1 初始化模块
        4.3.2 7段LED数码管显示模块
        4.3.3 键盘功能模块
    第 5 章 汇编器的设计
      5.1 MiniSys汇编语言程序设计
        5.1.1 汇编伪指令
        5.1.2 汇编程序结构
        5.1.3 中断处理程序的编写
      5.2 MiniSys汇编语言汇编器
        5.2.1 MiniSys汇编基础
        5.2.2 一个简易汇编器程序
    第 6 章 综合测试与验证
      6.1 测试方法简介
      6.2 对CPU正确性的测试与验证
      6.3 对接口部件的测试与验证
        6.3.1 LED数码管控制器的测试与验证
        6.3.2 4×4键盘控制器的测试与验证
        6.3.3 定时/计数器的测试与验证
        6.3.4 PWM控制器的测试与验证
        6.3.5 UART串行通信控制器的测试与验证
        6.3.6 看门狗控制器的测试与验证
        6.3.7 与CPU联合测试与验证
      6.4 软件系统的测试与验证
    第 7 章 高级设计的讨论
      7.1 流水线CPU设计
        7.1.1 流水线概念
        7.1.2 流水线设计中需要解决的关键问题
        7.1.3 流水线的设计
      7.2 乘法和除法运算单元设计
        7.2.1 乘除法指令的扩展与寄存器的设置
        7.2.2 乘法运算单元的设计
        7.2.3 语法分析工具
        7.2.4 除法运算单元的设计
      7.3 浮点运算单元设计
        7.3.1 IEEE 754浮点运算标准
        7.3.2 数据类型与寄存器扩展
        7.3.3 浮点指令集的扩展
      7.4 Mini C编译器的设计
        7.4.1 Mini C 简介
        7.4.2 词法分析工具
        7.4.3 语法分析工具
        7.4.4 编译器设计
    第 8 章 Verilog HDL语言基础
      8.1 Verilog HDL设计初步
        8.1.1 Verilog HDL设计流程简介
        8.1.2 Verilog HDL语言与C语言的比较
        8.1.3 基本的Verilog HDL模块
      8.2 Verilog语言要素
        8.2.1 词法
        8.2.2 数据类型
        8.2.3 寄存器和存储器
      8.3 Verilog HDL行为语句
        8.3.1 过程语句
        8.3.2 语句块
        8.3.3 赋值语句
        8.3.4 高级程序语句
      8.4 有限状态机
        8.4.1 有限状态机的基本概念
        8.4.2 用Verilog HDL语言设计有限状态机
      8.5 Verilog HDL的描述风格
        8.5.1 门级描述方式
        8.5.2 数据流描述方式
        8.5.3 行为描述方式
    附录A Quartus II工具的使用
    附录B “计算机系统综合设计”设计报告

本书特色

1. 先进的理念:全书立足系统、软硬结合、鼓励创新、重于实践,是国内少有的全面介绍SoC硬件和系统软件设计的书籍。
         2. 实用的编排:全书以一个实际的SoC(片上系统)设计为例,介绍了如何进行软硬件协同设计。读者看书的过程就是自行设计一个简单SoC的过程。
         3. 翔实的内容:全书给出了给出了设计中的详细原理和结构框图,并给出了经过调试通过的绝大部分软、硬件代码和详细的注释,利于读者学习。
         4. 分层次的思考题:课后思考题分为多种层次,适合不同基础的读者根据思考题从不同角度完善书中设计,鼓励基础好的读者进行创新性的设计和探索。适合作为高校计算机专业相关课程的教学。
         5. 图文并茂:大量配置的图形能够言简意赅地标明书中要表达的内容,为读者提供方便。
         6. 理论与实践的结合:读者通过本书的学习,不仅学会一个实际的简单嵌入式SoC系统MiniSys从硬件到软件的整个开发过程,还能加深对计算机系统的原理与设计方法的理解。

CopyRight © 2010-2012 All Right Reserved

版权所有:南京-东南大学计算机科学与工程学院