基于FPGA技术的计算机组成原理实验系统

   2024-03-11 互联网650
核心提示:  计算机组成原理是计算机系所有专业学生的一门核心课程。他涉及的知识面非常广,内容包括中央处理器、指令系统、存储系统、总

  “计算机组成原理”是计算机系所有专业学生的一门核心课程。他涉及的知识面非常广,内容包括中央处理器、指令系统、存储系统、总线和输入输出系统等方面,学生在学习该课程时,普遍觉得内容抽象难于理解。借助于“计算机组成原理”实验系统,学生通过实验环节,可以进一步融会贯通学习内容,掌握计算机各模块的工作原理,相互关系的来龙去脉。

  为了增强实验系统的功能,提高系统的灵活性,降低实验成本,我们采用FPGA芯片技术。该技术可根据用户要求为芯片载入不同的逻辑,FPGA芯片具有重复编程能力,使得系统内硬件的功能可以像软件一样被编程,这种称为“软”硬件的全新系统设计概念,使实验系统具有极强的灵活性和适应性。他不仅使该系统性能的改进和扩充变得十分简易和方便,而且使学生自己设计不同的实验变为可能。

  1实验系统的组成

  整个“计算机组成原理”实验系统采用FPGA-XC4010EPC84,62256CPLD和其他外围芯片(例如74LS244,74LS275)组成。根据不同的实验要求,规划不同实验控制逻辑。用户可选择不同的实验逻辑,通过把实验逻辑下载到FPGA芯片中构成自己的实验平台。

  1.1实验系统组成

  整个实验系统由4部分组成:PC机、下载电缆、实验台、扩展板。具体组成结构如图1所示。

  PC机完成实验系统的管理及实验逻辑的下载,PC机的打印机接口通过下载电缆和实验台相 连,下载的电路逻辑经FPGA JTAG接口送入实验台上的芯片XC4010中配成相应的实验系统。实验台上有一个64芯插座,与扩展板连接,进行交互。实验台上除了XC4010外,还有接口隔离电路、开关输入电路、接口控制电路等。实验台具体结构如图2所示。

  图2中XC9536为接口译码电路。该电路完成数码管显示的段译码、及外围设备的地址译码功能。

  1.2实验系统的特点

  基于FPGA技术的计算机组成原理实验系统突破了传统电子线路实验手工连线方法,连线工 作通过软件在FPGA芯片内部进行,极大地降低了偶然因素的影响,内置模块具有更高的稳定性与正确性。实验系统具有如下特点:

  (1)在下载存储程序时,通过微机并行打印口将FPGA预配置成具有专门功能的器件,并利用他将外部器件仿真成符合边界扫描标准的器件,完成微机对外部器件的动态配置;当外部器件的动态配置完成后再将FPGA配置成最终所需电路。设计通过预配置成功完成对外部器件的动态配置任务。

  (2)电路逻辑下载不仅涉及IEEE1149标准,还包括在非实时操作系统Windwos 98中虚拟设备驱动程序的开发、伪实时代码的编写以及系统管理软件的设计工作。

  (3)在CPU系统设计时,为用户修改指令,增加功能预留了余地,由于采用VHDL完成系统的设计和综合,系统层次清晰,还可以根据用户的要求比较容易地对系统进行修改和更新。

  (4)支持的实验内容多,面向多门课程。实验类型多样化。

  2实验系统开发实例

  本实验系统所采用的主要芯片XC4010EPC84,XC4000系列是高 容量、高成本的FPGA,能够进行无限次地重新编程,由于公司的软件Foundation 3 1,本身提供的器件相当丰富,小到逻辑门,大到全加器,类型丰富,用户可以设计和调试出具有相当功能的实验逻辑,所以被选用。

  由于该实验系统采用FPGA芯片,可灵活方便地任意配置不同的实验,无需更改硬件电路,只需要替换片内逻辑即可。系统软件和硬件均为全开放式结构。在该实验系统上已经实现了计算机组成原理所要求的运算器、存贮器、控制器、时序电路及接口电路等部件实验和整机设计调试实验。

  下面分别以该实验系统中设计与实现的浮点运算器和微控制器为实例。

  2.1浮点运算器的设计与实现

  运算器作为计算机的加工处理部件,是中央处理器(CPU)的重要组成部分。典型的P C机一般都至少具有1个定点运算器。 定点运算器主要是实现对定点整数和定点小数的算术运算、对逻辑数据的逻辑运算以及对主存的地址计算等。浮点数比定点数的表述范围宽,有效精度高,更适合于科学计算与工程计算。浮点运算可分为2类:非规格化和规格化浮点运算。非规格化浮点运算,不要求操作数是规格化数,对运算结果也不要求规格化处理。而规格化浮点运算只能对规格化的浮点数进行操作,并且要求对运算结果加以规格化处理。由于规格化浮点数具有惟一的表示形式,而且在计算机中尾数能获得最大的有效数字,所以在一般的计算机中选用规格化浮点运算。

  在浮点运算中,阶码和尾数是分别进行运算的,并且都是定点数(阶码为定点整数,尾数为定点小数)。因此,可以说,浮点运算器是定点运算器的扩充和强化。一般浮点运算器都至少具有2个定点数逻辑运算单元,一个用于阶码的比较和运算,另一个用于尾数的运算。阶码运算器用来求阶差,修改阶码等操作,一般只进行加减运算。而尾数部件不但有加法器用以求和,还应有左移和右移线路,以实现对尾数的操作。

  所设计的浮点运算器的组成框图如图3所示。

  浮点运算器我们采用原理图方式来设计实现。

  首先根据实验系统资源,定义实验系统上开关、按钮以及发光二极管的作用。该实验系统上共有22个开关按钮,其中S0、S1、S2、S3、M0、M1共6个用于外扩展板,定义余下16个开关用于浮点运算器输入功能选择(即加、减、乘或除)以及阶码部分和尾数部分的输入,利用实验系统上16个发光二极管显示结果,包括结果的阶码部分、溢出报警部分和尾数部分。定义实验系统上的部分按钮作为复位,输入启动等功能。然后在Foundation 3.1原理图编辑环境中设计出如图3所示浮点运算器的具体原理电路,规定器件的输入/输出。

  经过仿真和测试,确认相应的逻辑正确无误后,生成BIT流文件,经下载板下载到实验系统上,即可利用实验系统上的开关和发光二极管进行浮点运算器的输入和结果的观测。

  浮点运算器也可采用Foundation 3.1提供的硬件描述语言(VHDL)方式来实现。

  2.2微控制器的设计与实现

  微程序控制器的主要功能有:

  ① 从内存中取出一条指令,并指出下一条指令在内存中的位置;

  ② 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作;

  ③ 指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。

  微程序控制的机器基本上是利用一套连贯的微指令序列来完成机器所需要的各种命令。微指令一般分为2部分。

  ① 要执行的所有基本微操作的定义和控制。

  ② 下一条要执行的微指令地址的定义和控制。

  根据实验系统资源,所设计微程序控制器组成框图如图4所示。主要由控制存储器、微指令寄存器和地址转移逻辑3大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器。

  为了能说明问题,我们设计的几条典型的CPU 机器指令有15条包括输入输出、逻辑运算、算术运算、数据传送和跳转,以及其他的调试用的特殊的控制台指令。指令格式分单字节和双字节2种,但指令的操作码部分都占半个字节,所以最多有16条指令。

  机器指令有:IN、OUT、ADD、MOVAR、MOVRA、JMP、JC。

  控制台指令有:KWE、KRD、启动、复位。

  对微控制器的设计,采用硬件描述语言(VHDL)和原理图混和方式来编程实现。测试工具用的Foundation Series,该软件提供了良好的仿真条件。在完成MCU的设计阶段以后,对设计的微指令进行包括功能仿真和时序仿真在内的全方面的测试。时序仿真是考虑了各个门的时延,设计出相应的逻辑。在实现的时候对微地址的变化进行了跟踪,实现的相当完美。当仿真测试正确后,生成BIT流文件下载到实验系统上,利用实验系统上 部分开关、按钮进行输入控制,利用发光二极管观测结果。

  3结语

  FPGA技术的理论研究和实际应用正越来越受到人们的重视。基于FPGA技术的计算机组成原理实验系统可根据不同实验要求,规划不同实验控制逻辑,通过将实验逻辑下载到FPGA芯片中完成自己的实验功能,具有极强的灵活性。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅