基于计算机原型系统的系统结构类实验的一体化实验体系建设
2013-04-29傅翠娇曹庆华任作成
傅翠娇 曹庆华 任作成
摘要:分析现有的计算机系统结构类实验课程中存在的问题,提出基于计算机原型系统的一体化实验体系建设方案,明确了课程之间的关系和定位,并通过一个综合性的实验实例进行详细说明。
关键词:计算机原型系统;实验体系建设;教学改革;计算机系统结构
0、引言
随着计算机技术的飞速发展,基于EDA的设计已经成为硬件设计的主要方式。以前的基于小型模拟计算机系统的实验已经不再适应实验教学的要求。传统实验教学模式大多采用中小规模集成电路芯片在面包板上搭建各种常见数字电路的方式,工作量大且易出错。而新的实验教学模式是利用硬件描述语言和EDA工具,先在计算机上进行设计、修改和仿真,然后通过仿真波形可以直观地观察到电路内部各个信号的变化情况,再将设计下载到实验台上的PLD芯片中,进一步验证设计的正确性。通过一系列综合性实验,不仅可以加深学生对计算机硬件基本知识的理解,而且有助于学生对这些知识点的融会贯通。通过在实验台上不断地调试与验证,学生的动手能力、分析问题和解决问题的能力得到了锻炼。
1、目前实验教学中存在的问题
目前北京航空航天大学计算机学院的计算机硬件类必修实验课程主要包括数字逻辑实验、计算机组成原理实验和计算机接口与通信实验。这3门实验课程通过不断地进行实验教学改革,取得了很大的进步,并已建立了以EDA为开发工具、以设计为主的新型计算机硬件实验体系,但是目前还存在一些问题。
1.1 缺乏完整的实验体系
1.1.1 实验内容有重复
不同的实验课程之间会出现重复的实验内容。例如数字逻辑实验和计算机组成原理实验都是以计算机原型系统为目标进行设计的,但二者在存储器设计上有所重复。另外,数字逻辑实验中基本实验的有限状态机的设计部分主要以ADC 0809控制器设计为例,而在计算机接口与通信实验的基础实验中的AD模数转换控制电路设计也是以ADC 0809控制器设计为例进行的。
1.1.2 课程之间缺少衔接
目前北京航空航天大学数字逻辑实验与组成原理实验之间的内容结合地比较好。在数字逻辑实验中所设计的基本部件(如寄存器、乘法器以及存储器等)都可以在计算机组成原理实验中利用。但是计算机接口与通信实验和计算机组成原理实验之间的内容衔接较差。随着学生设计的MIPS指令集的CPU日益成熟,计算机接口与通信实验逐渐过渡到使用MIPS CPU来代替嵌入式软核NIOS CPU,从而将计算机原型系统的底层内容添加到计算机接口与通信实验中㈣。
1.1.3 课程定位不明确
每门课程的定位应当明确,通过一门课程解决一个问题,从而循序渐进地达到培养目标。但是目前教学中还存在各门课程相对独立、自成体系、缺乏整体考虑的问题,学生难以建立起整体的概念。
1.2 学生还未形成进行硬件编程的思维方式
硬件编程的思维方式与软件编程的思维方式略有不同。硬件描述语言一般是并行执行的。目前学生还没有建立起并行的概念,没有完全掌握硬件程序的调试、分析方法。因此我们在数字逻辑实验中要有意识地在这方面加强对学生的培养,通过对这3门课程的学习使学生逐步掌握硬件设计技能。
2、一体化实验体系建设方案
我们需要理清计算机硬件类实验课程之间的关系,明确各课程的定位,从而建立一个新的、一体化的,以掌握一种硬件设计方法、设计一个实验平台、系统地掌握计算机硬件知识、培养创新人才为目标的,实验内容循序渐进、步步深入的,实验方法灵活多样的,教学质量大幅提高的实验体系和创新平台。
2.1 课程关系
计算机系统结构类实验遵循冯·诺伊曼计算机模型。通过不同层次的实验,可以使学生逐步深入理解计算机的内部逻辑关系、功能部件、性能以及交互方式,掌握基于硬件描述语言和EDA工具的、进行逻辑设计的方法和过程,完成计算机原型系统的设计。该设计包括综合数字系统设计和调试在内的软件设计,并且能让学生编写出执行速度快、资源利用率高、性能接近于最优的程序。
目前计算机系统结构类实验中的必修课主要有:数字逻辑实验、计算机组成原理实验、硬件描述语言与EDA工具实验、计算机接口与通信实验,且以培养学生的软硬件协同设计能力、工程实践能力和科研实践素养以及团队协作精神为目标[3]。所以在进行实验体系建设时,我们要根据计算机系统的内在逻辑关系重新整合各门课程的知识分布和衔接关系,以达到实验内容相互支撑、成果形式层次递进的效果。
(1)知识点的划分。3门课程的知识点要既能覆盖全部又避免重复。
(2)课程内容的设置。课程内容在设置时要保证前后相继、由浅入深、不断深化。
(3)相同的实验环境。3门课程采用相同的实验环境(软件环境Quartus II和FPGA板康芯实验板),根据课程内容逐步设计出与课程完全吻合的实验平台,并采用相同的硬件描述语言Verilog。学生通过反复练习,熟练掌握一种硬件设计方法、一种解决问题的思维方式、一类FPGA实验板的使用方法,从而保证在掌握概念和原理的同时,熟练掌握硬件设计方法和技能,建立起计算机硬件整机的概念。
2.2 课程定位
计算机硬件实验课程的目标在于培养学生的实践动手能力、编程设计能力、探索创新能力以及分析问题解决问题的能力,让学生形成硬件编程的思维方式,并建立计算机整机概念。
下面分别介绍每门课程的定位。
2.2.1 数字逻辑实验
数字逻辑实验是基础。它主要解决的问题是掌握硬件实验的基本技能以及组合逻辑电路和时序逻辑电路的原理。
该课程的目标是让学生学习实验平台的使用方法,掌握硬件编程语言、EDA工具的使用、硬件描述的综合与仿真,使学生能设计一些基本的时序逻辑电路和组合逻辑电路,培养学生的硬件编程思维方式。
2.2.2 计算机组成原理实验
计算机组成原理实验是核心。它起着承上启下的作用,是让学生建立起整机概念的关键。它能帮助学生理解和掌握一台计算机整机系统的软件、硬件组成及相互之间的配合。其他课程要围绕计算机组成原理实验展开。数字逻辑实验课程要解决基本器件的设计和工具使用的问题,计算机组成原理实验要解决应用微处理器的问题。本课程要求学生重点掌握MIPS指令系统及指令周期、数据通路、系统控制等,在此基础上深化对硬件编程语言的理解。
2.2.3 计算机接口与通信实验
计算机接口与通信实验是完善、提高和应用。学生通过对外围器件的学习,完善了计算机的整机概念。在此基础上设计应用性的实验对学生来说是提高。本课程重点掌握基本外部芯片、基本的输入/输出部件的设计和应用。
3、基于计算机原型系统的一体化的实验实例
该实例利用并行接口8255A实现一个简单的计算器功能,通过8255A输入两个8位的数据,MIPS CPU将两个数据相加或者相减,并将计算结果通过8255A输出到数码管上。这个实例以MIPS CPU为核心,包含了数字逻辑实验中设计的ALU等部件,通过计算机组成原理实验形成了MIPS CPU部件,再结合计算机接口与通信实验中设计的8255A等外围接口部件,实现了一个小型的数字系统。如果在此基础上把操作系统和编译等内容包含进去就构成了一个计算机原型系统。
3.1 设计思路
为了实现使用程序查询方式在8255A与CPU之间交换数据,我们需要8255A工作在0方式。根据设计要求,我们需要两个8位数据口作为数据输入口,一个8位数据口作为数据输出口,共需要3个8位数据口,此外还需要一些控制信号,所以至少需要两片8255A芯片。第一片8255A的A口和B口工作在0方式,均作为数据输入。第二片8255A的A口和B口也工作在0方式,A口作为输入,B口作为输出,并使用PA0作为数据输入后完成并执行加法运算的信号,使用PAl作为数据输入后完成并执行减法运算的信号。MIPS CPU循环查询第二块8255A芯片的A口数据,一旦发现输入数据PA0或者PAl不为0,就从第一块8255A芯片的A口和B口读取两个数据到某个寄存器,然后计算两个寄存器内的数据的和或者差,并将结果输出到第二片8255A的B口。
3.2 系统的整体结构
系统需要的器件主要有MIPS CPU、两片并行接口8255A,还需要一个芯片能根据地址在内存和两块8255A芯片中做出片选,部分代替总线的功能。其总体结构如图1所示。
在本实验中,当地址小于128时,表示的是内存地址,则将总线数据写入内存或者从内存读取数据到总线上;当地址大于128时,从两片8255A中读写数据。
3.3 系统各模块设计
我们首先设计系统的各功能模块,接着设计MIPS汇编程序,最后生成顶层文件,绑定引脚并下载验证。
3.3.1 MIPS CPU模块
MIPS CPU是一个实现了MIPS指令集的32位精简指令集CPUN。本实验只关注MIPS CPU的外部接口,并为调试方便为MIPS CPU增加了很多接口,但实际上真正需要的接口只有CLK、DataReady、RData、PCIk、BE、RW、Adrr、WData,其作用分别是:时钟信号、数据准备好信号、读入数据信号、时钟输出信号、读取模式信号、读写信号、地址、写入数据信号。
如图2所示是MIPS CPU的符号模块。MIPS CPU文件的时序仿真波形文件如图3所示。
3.3.2 8255A可编程并行接口模块
在本实验中,8255A芯片工作在O方式,即A口、B口、c口的高低四位可以自行指定作为输入/输出端口使用。我们可以根据自己的约定把一些端口作为控制位使用。8255A的符号模块如图4所示。
我们对8255A可编程并行接口进行时序仿真后,8255A芯片A口输入B口输出的仿真波形文件如图5所示。
3.3.3 总线控制器模块设计
总线控制器(BUS Controller)是本次实验的核心器件,它的主要功能是根据MIPS CPU所要读写的地址,输出相应的片选信号和地址信息,控制将8255A的数据或者内存中的数据输出到总线上或者将总线上的数据写入到8255A的某些端口或内存中。在本实验中,当地址小于128时,表示内存地址,则将总线数据写入内存或者从内存读取数据到总线上;当地址大于等于128时,从两块8255A并口中读取数据。当地址大于128时,我们要根据之前所规定的端口号,产生相应的8255A控制信号,从而实现对8255A相应的端口进行读写。相应的8255A芯片的控制信息如表1所示。
总线控制器的符号模块如图6所示。
总线控制器的仿真波形文件如图7所示。
由于使用了两片8255A芯片,因此我们需要一个译码器和一个多路选择器,以便在两片8255A芯片中做出选择。译码器的符号模块如图8所示,多路选择器的符号模块如图9所示。
另外我们还需要七段数码管显示电路,它能够将数字转换为七段数码管的显示信号。七段数码管显示电路的符号模块如图10所示。
3.4 编写MIPS CPU汇编程序
我们将各个元件连好后,就开始编写MIPS汇编程序。本设计使用将程序硬编码在内存中的做法。控制逻辑如下所示:
1)第一块8255A的初始化:CS=0,RD=1,WR=0,AI=1,A0=1,控制字为8b10010010;
2)第二块8255A的初始化:CS=0,RD=1,WR=0,AI=1,A0=1,控制字为8b10010000;
3)然后循环查询第二块8255A芯片的A口,当PA0或者PAl为高电平时,表示数据准备好;
4)CPU分别从第一块8255A芯片的A口和B口读取两个8位整数到两个寄存器;
5)进行判断,如果PAl为1执行减法指令,如果PA0为1执行加法指令,计算结果保存在某个寄存器中。
6)将结果输出到第二块8255A芯片的B口。
顶层文件的仿真波形如图11所示。
3.5 生成顶层文件
之后我们需要对系统进行绑定引脚,进行一次全编译。系统顶层文件如图12所示。
4、结语
目前,包括数字逻辑实验、计算机组成原理实验以及计算机接口与通信实验在内的系统结构类实验已经建成了一体化的实验体系。经过多轮实验教学验证,该体系能切实提高学生的设计能力,帮助学生理解和掌握计算机基础知识并建立计算机整机的概念。