微原_计算机工作原理_实验项目_任务书_132807309

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

“微机原理与应用”计算机工作原理部分实验简单计算机系统的设计与实现项目任务书一、项目介绍二、计算机工作原理三、计算机系统组成四、简单计算机的指令系统五、程序编写及举例六、项目要求七、项目说明八、项目的设计和调试实验1.简单计算机系统基本模块设计1实验2.简单计算机系统基本模块设计2实验3.简单计算机系统的设计和实现一、项目简介项目目的:本项目是“微机原理与应用”课程中关于计算机工作原理部分的实验项目,涉及第1~4周讲课的内容,目的是通过设计一个简单计算机系统,深入了解计算机系统各部分的基本组成和工作原理,为后续计算机接口部分的学习打下良好基础。该项目可在暑期小学期“电子技术课程设计”的“数字计算器的设计与实现”项目上进行扩展。先修条件是学生应该具备一定运用EDA进行数字电路系统设计与调试的能力。项目平台:与小学期“电子技术课程设计”的“数字计算器的设计与实验”相同:PC机一台、FPGA实验板一块(EP2C5Q208C8N+矩阵键盘+数码管)。项目任务:基于FPGA实验板设计一个简单计算机系统,实现一个计算器的功能。从键盘输入算术式,由FPGA完成相应运算,并将运算结果显示在数码管和发光二极管上。输入的运算符可以是加、减、与、或、比较等,输入的数字大小在0~999之间。有关简单计算机系统的组成和工作原理将在后续讲义介绍。演示举例:完成45减369的运算操作方法是:从键盘输入4、5两个字符键,数码管上显示45,接着输入减号运算符“-”,然后输入369三个字符键,数码管上显示369,最后按下等号键“=”,运算结果“-324”中的324显示在数码管上,负号“-”用一个发光二极管显示。输入的运算符“-”和等号“=”不显示。项目重点:理解计算机系统的组成和工作原理,掌握基于FPGA的复杂数字系统的逻辑设计、调试。二、计算机工作原理数字计算机其实就是一个复杂的数字电路系统,在设计思路上采用存储程序控制原理实现。设计者把数字电路需要完成的工作先分解成多个基本动作,如从某个寄存器或存储器单元读数、往某个寄存器或存储器单元写数、对两个数分别进行“加”、“减”、“与”、“或”等算数或逻辑运算等等;然后,设计对这些动作进行编码的规则。术语中称一个基本动作为一条指令,所有动作的集合称为指令系统。按照编码规则对这些基本动作进行编码,可以构成由若干指令表示的动作序列,即程序;把程序存放在存储系统中,然后由控制单元从存储系统中取出一条指令,并进行指令译码,再发出实现这个动作的各种信号,称为执行该条指令;然后,再依次取下一条指令并执行,直到程序中所有的指令执行完毕。每执行一条指令,即完成一个基本动作;多个基本动作合理组合,就可以实现用户期望完成的功能。用户通过编写不同的程序,可以让数字电路具备不同的功能。注意:这里的程序指的是固化在FPGA内ROM的程序,不是用Verilog语言写的硬件描述程序。三、计算机系统组成计算机系统的基本组成见图A-1。整个系统由寄存器组、ALU、控制单元、ROM、RAM、输入设备、输出设备和输入/输出接口组成,各部分通过总线连接起来,总线内部包括地址、数据和控制等信号。在实际设计中,将ALU、寄存器组和控制单元集成在一个芯片中,称为中央处理器CPU(CentralProcessUnit)。计算机系统从输入设备(如键盘)输入参加运算的操作数及加、减等运算符,并通过输入设备接口将这些操作数和运算符存放在寄存器或存储系统中,然后通过执行存放在存储系统中的程序,实现运算,并将运算的结果通过输出设备(如数码管)显示出来。注意:该运算结果是通过执行ROM中的程序(指令序列)得到的,每一条指令的执行都包含有取指令、指令译码、指令执行各环节。图A-1计算机系统的基本组成本项目各部分的功能要求如下:1.输入设备、输出设备、以及输入设备接口模块、输出设备接口模块与暑假小学期“电子技术课程设计”的“数字计算器的设计与实现”中的相同,可参看“附录C暑期数字计算器已完成模块.pdf”相关部分。2.ALU运算单元模块ALU运算单元模块包括两个部分:8位算术逻辑运算器ALU模块和标志寄存器模块,模块封装图分别见图A-2和图A-3,8位算术逻辑运算器ALU模块可完成两个8位二进制操作数的“不带进位加”、“不带借位减”、“带进位加”、“带借位减”、“与”、“或”、“比较”等7种运算;标志寄存器模块用于存放算术、逻辑运算过程和结果的一些标志信息,如进/借位标志Carry、零标志Zero、溢出标志Overflow等。图A-28位算术逻辑运算器ALU模块的封装图图A-3标志寄存器模块的封装图3.寄存器组模块CPU在运算过程中,需要将一些运算数据保存在寄存器中,通常需要的寄存器不止一个,而是以寄存器组的形式出现。寄存器组模块的封装结构图见A-4,该寄存器组内部包含4个8位寄存器,分别称为R0、R1、R2、R3,对应的二进制编号分别为00B、01B、10B、11B。图A-4寄存器组模块的封装结构图CS[2..0]data_a[7..0]data_b[7..0]carry_inS[7..0]zerocarry_outoverflowALUinst24.ROM程序存储系统模块ROM程序存储系统容量为256×16,即有256个存储单元,地址编号顺序为0x00~0xFF,每个单元可存放16位二进制信息。ROM主要用来存放用户编写的运行程序。ROM模块封装结构图见图A-5。图A-5ROM程序存储系统模块封装结构图5.RAM数据存储系统模块RAM数据存储系统容量为256×8,即有256个存储单元,地址编号顺序为0x00~0xFF,每个单元可存放8位二进制信息。RAM主要用来存放用户程序的数据。RAM模块封装结构图见图A-6。图A-6RAM数据存储系统模块封装结构图6.I/O端口及其映射模块I/O端口及其映射模块实现将输入/输出接口内的数据缓冲器与存储器单元统一编址和寻址的功能。该模块内部有8个双向的I/O端口寄存器,编号为0x00~0x07,其中0x00、0x01号I/O端口可以与输出设备数码管的接口模块相连,控制数码管的显示内容;另5个I/O端口寄存器可以和输入设备键盘的接口模块相连,存放键盘输入的2个操作数和1个运算符。I/O端口及其映射模块将对RAM存储单元0x00~0x07的读/写映射成对I/O端口寄存器0x00~0x07的读/写,即所有对RAM存储单元0x00~0x07的读/写实际是对I/O端口寄存器0x00~0x07的读/写。I/O端口及其映射模块封装图见图A-7。图A-7I/O端口及其映射模块封装结构图7.控制单元模块控制单元模块包括两个部分:控制器模块和程序指针计数器PC模块,模块封装图分别见图A-8和图A-9,控制器模块提供其他模块中用到的各种控制信号,程序指针计数器PC模块提供读取存放在ROM中指令的地址。图A-8控制器模块图A-9程序计数器PC模块四、简单计算机系统的指令系统从上面各部分的组成可以了解到,要设计的计算机可以完成不带进位加、不带借位减、带进位加、带借位减、与、或、比较等操作,内部有4个8位寄存器和256个8位的RAM存储单元,其中0x00~0x07号单元被I/O接口模块映射到0x00~0x07号I/O端口寄存器上。通过数码管及其接口电路可直接将存放在0x00和0x01号I/O端口寄存器的16位二进制内容显示出来;0x02~0x06号I/O端口寄存器与4*4矩阵键盘相连,键盘输入的第1个操作数、运算符和第2个操作数对应的数值和运算符编码存放在0x02~0x06号I/O端口寄存器中。数字电路会做其中的哪些操作?操作中涉及到的数据从哪里获取?如果在寄存器中,是哪个寄存器?在RAM中的话,又是哪个RAM单元?为了让数字电路能够获得这些明确的信息,就需要对上面提到的操作、操作数存放在寄存器中还是存储单元中、是哪个寄存器哪个存储单元等这些信息进行编码,然后把编码存放在ROM中,数字电路通过读取存放在ROM中的编码,并通过控制电路进行译码,发出相应的控制信号,提供给其他模块所需的地址、数据、控制信号,让数字电路完成编码所要指定的功能。一个编码,称为一条指令。为了简化译码操作,指令设计为单周期定长指令,即指令的长度都是16位,一个时钟周期执行一条指令,寄存器和RAM单元都只能存放8位二进制数,ALU算术运算器也是一个8位的运算器。指令的构成主要包括两部分:操作码和操作数。操作码给出要执行什么样的操作,不同的操作具有不同的操作码,可以根据操作码判断指令的操作类型;操作数给出参与操作的数(称立即数)或数的来源(数来自寄存器或RAM中,给出相应的寄存器号或RAM单元地址),执行的操作除上面提到的加、减、与、或、比较等算数逻辑运算外,还有存储单元的读操作、写操作,以及修改指令计数器PC的操作,对所有这些操作都要进行编码。本设计要求的指令有15条,指令表参见表A-1,15条指令中,只有不带进位加、不带借位减、带进位加、带借位减、立即数加这五条指令影响标志寄存器中的各标志的值,即标志寄存器中标志位的值随运算结果发生变化;其余的10条指令不影响标志位的值,即执行这些指令前后,标志寄存器中的值保持不变。表A-1简单计算机系统指令集操作名称操作码汇编语言格式指令执行操作与0000ANDRd,Rs,RtRd←RsandRt;PC←PC+1或0001ORRd,Rs,RtRd←RsorRt;PC←PC+1不带进位加0010ADDRd,Rs,RtRd←Rs+Rt;PC←PC+1不带借位减0011SUBRd,Rs,RtRd←Rs–Rt;PC←PC+1带进位加0110ADDCRd,Rs,RtRd←Rs+Rt+C;PC←PC+1带借位减0101SUBCRd,Rs,RtRd←Rs–Rt-(1-C);PC←PC+1无符号数比较0100SLTRd,Rs,RtIfRsRt,Rd=1elseRd=0;PC←PC+1立即数与1000ANDIRt,Rs,immRt←Rsandimm;PC←PC+1立即数或1001ORIRt,Rs,immRt←Rsorimm;PC←PC+1立即数加1010ADDIRt,Rs,immRt←Rs+imm;PC←PC+1读存储器1011LWRt,Rs,immRt←MEM[Rs+imm];PC←PC+1写存储器1100SWRt,Rs,immMEM[Rs+imm]←Rt;PC←PC+1相等时跳转1101BEQRs,Rt,immIfRt=Rs,PC←PC+imm+1elsePC←PC+1不等时跳转1110BNERs,Rt,immIfRt!=Rs,PC←PC+imm+1elsePC←PC+1无条件跳转0111JMPimmPC←imm其中的C是标志寄存器中存放的进位/借位值15条指令分成R型(7条)、I型(7条)和J型(1条)三类,每条指令由16位二进制表示,最高4位是操作码。每条指令完成相应操作后,指令计数器PC也将发生变化,指向下一条指令地址。下面是指令的具体介绍。R型指令该类型指令中有3个操作数,均来自寄存器,指令中给出各寄存器号,共包括AND、OR、ADD、SUB、ADDC、SUBC、SLT共7条指令。R型指令的16位二进制编码结构见表A-2,R型指令表见表A-3。表A-2R型指令二进制编码结构1514131211109876543210OpRsRtRd---指令中用到的符号说明如下:Op:指令操作码;Rs:第1个操作数的寄存器号;Rt:第2个操作数的寄存器号;Rd:第3个操作数的寄存器号;---:表示任意值,编码时通常取0表A-3R型指令表操作名称操作码汇编语言格式指令执行操作与0000ANDRd,Rs,RtRd←RsandRt;PC←PC+1或0001ORRd,Rs,RtRd←RsorRt;PC←PC+1加0010ADDRd,Rs,RtRd←Rs+Rt;PC←PC+1减0011SUBRd,Rs,RtRd←Rs–Rt;PC←PC+1带进位加0110ADDCRd,Rs,RtRd←Rs+Rt+C;PC←PC+1带借位减0101SUBCRd,Rs,RtRd←Rs–Rt-(1

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功