计组实验课程设计
- 格式:doc
- 大小:152.00 KB
- 文档页数:9
《计算机组成原理与系统结构》课程设计实验报告课题:两个16位二进制数加法计算班级:成员:完成日期:2013年10月11日一:课程设计步骤1.确定设计目标综合考虑实验条件及自身能力水平,以及设计功能的可靠性和实用性,我们小组决定将设计目标定为“两个16位二进制数相加”。
分两次分别输入两个加数的低八位和高八位,输出两个16位二进制数相加的结果。
2.确定指令系统(1)数据格式8位,其格式如下:(2模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
①算术逻辑指令设计九条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:其中,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定:②I/O指令输入(1N其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr=10时,选中“INPUT DEVICE”中的数码块作为输入设备。
③访问指令及转移指令模型机设计两条访问指令,即存数(STA)、取数(LDA),两条颛臾指令,即。
D为位移量(正负均可),本模式机规定变址寄存器RI指定为寄存器R2④停机指令HALT(3)指令系统在这次模型机设计中,为了实现两个16位二进制数相加的功能,我们一共使用了XOR(新设计指令),ADC,INC,LDA,STA,JMP,BZC,IN,OUT,HALT共10个机器指3.总体结构和数据通路:总体结构和数据通路图请参见附录1。
4.微程序流程图:微程序流程图请参见附录2。
5.机器码及微程序:机器码及微程序请参见附录3。
二.课程设计总结这门课程是一门对综合能力和基础知识要求非常高的课程。
成功完成实验内容,需要熟悉《汇编语言》,《计算机组成原理》,《离散数学》和《数字逻辑》各门课程的基础知识,并且要加以拓展和熟练运用,这对我们整个小组来说是一个不小的挑战。
实验刚刚开始的阶段,我们参考了高年级同学的实验报告和设计过程,起初觉得束手无策,很多内容都不知道其中的含义和思考及设计的过程。
西电计组课程设计实验
西电计组课程设计实验是电子信息工程学院(EI)的一门课程实验,旨在培养学生的计算机组成原理、数字逻辑电路设计与实现、计算机硬件的设计与开发等方面的实践能力。
课程设计实验具体内容包括以下几个方面:
1. 逻辑电路设计与实现:学生需要根据指定的逻辑电路功能要求,设计并实现相应的数字逻辑电路。
例如,设计与实现简单的组合逻辑电路、时序逻辑电路等。
2. 简单计算机体系结构设计与实现:学生需要从零开始设计并实现一个简单的计算机体系结构,包括处理器、存储器、输入输出接口等。
这个实验要求学生具备一定的计算机组成原理知识和Verilog语言及FPGA芯片编程经验。
3. 简单操作系统设计与实现:学生需要设计并实现一个简单的操作系统,包括进程管理、内存管理、文件系统管理等功能。
这个实验要求学生具备一定的操作系统原理知识和C语言编程经验。
4. 计算机硬件性能测评与优化:学生需要对设计的计算机硬件进行性能测评和优化。
通过对硬件设计的改进,提高计算机的性能,例如提高运算速度、减少资源占用等。
通过这些实验,学生将深入理解计算机组成原理和数字逻辑电路设计原理,培养计算机硬件设计与开发的实践能力,为进一步的研究和工作打下坚实的基础。
计组课程设计crc一、教学目标本节课的教学目标是使学生掌握CRC(循环冗余检查)的基本原理和计算方法,能够运用CRC检测数据传输中的错误。
具体目标如下:知识目标:1. 了解CRC的概念和作用;2. 掌握CRC的计算方法;3. 理解CRC在数据传输中的应用。
技能目标:1. 能够运用CRC计算器检测数据传输中的错误;2. 能够编写程序实现CRC的计算和验证。
情感态度价值观目标:通过学习CRC,培养学生严谨的科学态度和解决问题的能力,激发学生对计算机科学的兴趣。
二、教学内容本节课的教学内容主要包括CRC的基本原理、计算方法和应用。
具体安排如下:1.介绍CRC的概念和作用,通过实例让学生了解CRC在数据传输中的重要性。
2.讲解CRC的计算方法,包括生成多项式、余数计算和校验码的生成。
3.分析CRC的检错原理,让学生理解CRC如何检测数据传输中的错误。
4.结合实际案例,演示CRC在数据传输中的应用,让学生了解CRC的实际应用场景。
5.通过编程实践,让学生动手实现CRC的计算和验证,巩固所学知识。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行教学:1.讲授法:讲解CRC的基本原理和计算方法,让学生掌握理论知识。
2.案例分析法:分析实际案例,让学生了解CRC在数据传输中的应用。
3.实验法:让学生动手实践,编写程序实现CRC的计算和验证。
4.讨论法:鼓励学生提问、讨论,解答学生在学习中遇到的问题。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:《计算机组成原理》相关章节。
2.参考书:提供相关的学术论文和资料,供学生深入研究。
3.多媒体资料:制作PPT课件,直观展示CRC的计算过程。
4.实验设备:提供计算机实验室,让学生动手实践。
5.在线资源:推荐相关的在线教程和编程实践平台,方便学生自学和练习。
五、教学评估本节课的评估方式将包括以下几个方面,以全面、客观地评价学生的学习成果:1.平时表现:通过观察学生在课堂上的参与程度、提问和回答问题的表现,了解学生的学习状态。
计组实验课程设计一、课程目标知识目标:1. 学生能理解计算机组成原理,掌握基本硬件组件的工作原理和相互关系。
2. 学生能掌握实验所涉及的关键技术,如电路设计、编程调试等,并了解其在计组实验中的应用。
3. 学生能运用所学的计算机组成原理和实验技能,分析实验现象,解释实验结果。
技能目标:1. 学生能够运用所学知识,独立完成计组实验的电路设计、编程调试等过程。
2. 学生能够通过实验操作,提高动手实践能力,培养问题解决和团队协作能力。
3. 学生能够运用实验报告、口头报告等形式,清晰、准确地表达实验过程和结果。
情感态度价值观目标:1. 学生对计算机组成原理产生兴趣,培养探究精神和创新意识。
2. 学生在实验过程中,养成严谨、细致的工作态度,提高自我管理和团队协作能力。
3. 学生通过实验课程,认识到计算机科学在现代社会中的重要作用,增强社会责任感和使命感。
课程性质分析:本课程为计算机组成原理实验课程,注重理论联系实际,强调学生动手实践能力的培养。
学生特点分析:学生为大学二年级计算机专业学生,具备一定的计算机基础知识和编程能力,具有较强的求知欲和动手欲望。
教学要求分析:课程要求教师以实验为主线,引导学生掌握计组原理,培养学生的实践能力和团队协作精神。
通过课程目标的分解,使学生在实验过程中达到预期的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下几部分:1. 计算机组成原理概述:介绍计算机硬件的基本组成、工作原理及其相互关系,使学生建立整体概念。
教学内容:CPU、存储器、输入输出设备、总线等硬件组件的原理与功能。
2. 实验原理与技术:讲解实验涉及的关键技术,如数字电路设计、编程调试等。
教学内容:数字电路设计基础、Verilog HDL语言、编程调试方法等。
3. 实验项目设计与实施:根据课程目标,设计具有实际意义的实验项目,引导学生动手实践。
教学内容:算术逻辑单元(ALU)设计、存储器设计、CPU设计等实验项目。
计算机组成原理实验及课程设计前言计算机组成原理课程是计算机科学与技术专业的核心课程,是培养学生计算机系统硬件方面的基础理论和实践技能的重要课程。
其中,计算机组成原理实验及课程设计是该课程的重要组成部分。
本文将围绕该课程设计展开,介绍该课程的实验及课程设计的内容、目的和实施方法。
实验内容计算机组成原理实验是学生对于课堂理论学习的巩固与实践,其内容包括以下主要实验:1. 数据通路实验数据通路实验是将计算机内部各功能部件(如寄存器、ALU、控制器等)之间的数据流动情况进行分析、了解与掌握。
实验采用VHDL硬件描述语言,通过Quartus II软件进行电路设计和仿真,最终通过FPGA验证实验结果。
2. 单周期CPU实验单周期CPU实验是针对数据通路实验的基础进行拓展,实现完整的计算机CPU 功能。
实验使用Verilog HDL描述单周期MIPS指令集CPU,掌握计算机指令的执行过程,了解指令执行的时间和机器周期、时序控制以及数据传输问题。
3. 多周期CPU实验多周期CPU实验是在单周期CPU实验的基础上进行深入拓展,实现更加高效、复杂的CPU功能。
实验使用Verilog HDL描述多周期MIPS指令集CPU,掌握多周期CPU的时序控制、流水线操作、数据冲突处理等相关问题,深入研究CPU性能优化技术。
4. 总线实验总线实验是针对计算机内部各个部件之间数据传输的技术问题进行研究,实验设计并实现一个通用总线结构。
实验中将涉及到总线的基础知识、总线协议的分析、总线结构的设计及实现,熟悉总线设计原理、总线的基本特性和数据交换的逻辑流程。
课程设计计算机组成原理课程设计是对于理论与实践知识的融合,其内容主要包括以下几部分:1. 计算机硬件设计通过计算机硬件设计,学生将在实践中巩固计算机硬件方面的知识,加深对计算机硬件工作原理的理解和掌握。
学生需要根据自己的设计目标和要求,按照计算机硬件设计的流程进行设计,最终完成指定任务。
计组实验报告(共10篇)计组实验报告计算机组成原理实验报告一一、算术逻辑运算器1. 实验目的与要求:目的:①掌握算术逻辑运算器单元ALU(74LS181)的工作原理。
②掌握简单运算器的数据传输通道。
③验算由74LS181等组合逻辑电路组成的运输功能发生器运输功能。
④能够按给定数据,完成实验指定的算术/逻辑运算。
要求:完成实验接线和所有练习题操作。
实验前,要求做好实验预习,掌握运算器的数据传送通道和ALU 的特性,并熟悉本实验中所用的模拟开关的作用和使用方法。
实验过程中,要认真进行实验操作,仔细思考实验有关的内容,把自己想得不太明白的问题通过实验去理解清楚,争取得到最好的实验结果,达到预期的实验教学目的。
实验完成后,要求每个学生写出实验报告。
2. 实验方案:1.两片74LS181(每片4位)以并/串联形式构成字长为8为的运算器。
2.8为运算器的输出经过一个输入双向三态门(74LS245)与数据总线相连,运算器的两个数据输入端分别与两个8位寄存器(74LS273)DR1和DR2的输出端相连,DR1和DR2寄存器是用于保存参加运算的数据和运算的结果。
寄存器的输入端于数据总线相连。
3.8位数据D7~D0(在“INPUT DEVICE”中)用来产生参与运算的数据,并经过一个输出三态门(74LS245)与数据总线相连。
数据显示灯(BUS UNIT)已与数据总线相连,用来显示数据总线上所内容。
4.S3、S2、S1、S0是运算选择控制端,由它们决定运算器执行哪一种运算(16种算术运算或16种逻辑运算)。
5.M是算术/逻辑运算选择,M=0时,执行算术运算,M=1时,执行逻辑运算。
6.Cn是算术运算的进位控制端,Cn=0(低电平),表示有进位,运算时相当于在最低位上加进位1,Cn=1(高电平),表示无进位。
逻辑运算与进位无关。
7.ALU-B是输出三态门的控制端,控制运算器的运算结果是否送到数据总线BUS上。
低电平有效。
6 硬连线控制器的设计与调试(课程设计)一、教学目的、任务与实验设备(一)教学目的(1)融会贯通计算机组成原理课程、计算机组织和结构的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对硬连线控制器的认识。
(2)学习运用ISP(在系统编程)技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计、模拟调试工具的使用,体会ISP技术相对于传统开发技术的优点。
(3)培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
(二)设计与调试任务(1)按给定的数据格式和指令系统,在所提供的器件范围内,设计一台硬连线控制器控制的模型计算机。
(2)根据设计图纸,在通用实验台上进行组装,或对微程序控制方案的模型机进行改装,并调试成功。
(3)在组装调试成功的基础上,整理出设计图纸和其他文件,包括:1.总框图(数据通路图);2.硬连线控制器逻辑模块图;3.模块ABEL语言源程序(如果有的话);4.硬连线控制流程图;5.模拟向量测试方程(可以和ABEL源程序合并);6.元件排列图;7.设计说明书;8.调试小结。
如果没有第3点的ABEL源程序,则文件中必须包含控制信号的译码函数方程组,用逻辑表达式表示出每个控制信号。
(三)实验设备(1)TEC-5一台(2)双踪示波器一台(3)直流万用表一只(4)逻辑测试笔一支(在TEC-5上)集成电路建议使用ISP芯片(一片ispLSI1032)。
采用ISP器件,则需要一台PC机运行设计自动化软件(例如ispEXPERT)作设计、编程和下载使用。
二、数据格式和指令系统采用与模型计算机相同的指令系统,即8条机器指令。
三、总体设计采用的数据通路和微程序控制器方案相同,可参阅前面的介绍,不再赘述。
硬连线控制器模型机所使用的时序信号比微程序控制器的要多一些,除了原有的时序信号T1至T4外,还需要节拍信号,一拍等于一个T1至T4循环。
实验仪提供的节拍信号有三个:W1至W3。
《计算机组成实验C》课程设计适用专业:电子信息类专业专业:计算机科学与技术班级:计科四班学号:2 0 1 2 2 3 7 8姓名:王云龙指导教师:陈红梅实验学期: 2014-2015第1学期西南交通大学信息科学与技术学院简化计算机系统的设计一.实验目的通过学习简单的指令系统及其各指令的操作流程,用VHDL语言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。
二. 实验内容1. 用VHDL语言实现简单的处理器模块。
2. 调用存储器模块设计64×8的存储器模块。
3. 将简单的处理器模块和存储器模块连接形成简单的计算机系统。
4. 将指令序列存入存储器,然后分析指令执行流程。
三. 预习要求:1、学习简单指令集。
2、学习各指令的操作流程。
四. 实验报告1. BLOCK图2.内存文件内存文件中的数据:3. 程序设计LIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE mypack ISCONSTANT idle : std_logic_vector(3 DOWNTO 0) :="0000";CONSTANT load : std_logic_vector(3 DOWNTO 0) :="0001";CONSTANT move : std_logic_vector(3 DOWNTO 0) :="0010";CONSTANT addx : std_logic_vector(3 DOWNTO 0) :="0011";CONSTANT subp : std_logic_vector(3 DOWNTO 0) :="0100";CONSTANT andp : std_logic_vector(3 DOWNTO 0) :="0101";CONSTANT orp : std_logic_vector(3 DOWNTO 0) :="0110";CONSTANT xorp : std_logic_vector(3 DOWNTO 0) :="0111";CONSTANT shrp : std_logic_vector(3 DOWNTO 0) :="1000";CONSTANT shlp : std_logic_vector(3 DOWNTO 0) :="1001";CONSTANT swap : std_logic_vector(3 DOWNTO 0) :="1010";CONSTANT jmp : std_logic_vector(3 DOWNTO 0) :="1011";CONSTANT jz : std_logic_vector(3 DOWNTO 0) :="1100";CONSTANT read : std_logic_vector(3 DOWNTO 0) :="1101";CONSTANT write : std_logic_vector(3 DOWNTO 0) :="1110";CONSTANT stop : std_logic_vector(3 DOWNTO 0) :="1111";END mypack;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE WORK.mypack.ALL;------------------------cpu实体声明--------------------------------- ENTITY cpu ISPORT(reset : IN std_logic; --清零信号低有效clock : IN std_logic; --时钟信号Write_Read: OUT std_logic; --读写信号,'1'为写M_address: OUT std_logic_vector(11 DOWNTO 0); --地址线M_data_in: IN std_logic_vector(7 DOWNTO 0); --数据输入线M_data_out: OUT std_logic_vector(7 DOWNTO 0); --数据输出线overflow: OUT std_logic); --溢出标志END cpu;------------------------cpuRTL级行为描述--------------------------------ARCHITECTURE RTL of cpu ISSIGNAL IR: std_logic_vector(15 DOWNTO 0); --指令寄存器SIGNAL MDR: std_logic_vector(7 DOWNTO 0); --数据寄存器SIGNAL MAR: std_logic_vector(11 DOWNTO 0); --地址寄存器SIGNAL status: integer RANGE 0 TO 4; --状态寄存器SIGNAL PC:std_logic_vector(11 DOWNTO 0); --程序计数器SIGNAL R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0); --通用寄存器SIGNAL A: std_logic_vector(7 DOWNTO 0); --累加寄存器BEGINstatus_change: PROCESS(reset, clock, status )BEGINIF reset = '0' THENstatus <= 0 ;A <= (OTHERS=>'0');MAR <= (OTHERS=>'0');ELSIF clock'EVENT AND clock = '0' THENCASE status ISWHEN 0 =>IF IR(15 DOWNTO 12)/=Stop THENMAR <=pc;END IF;CASE IR(15 DOWNTO 12) ISWHEN shlp|shrp =>CASE IR(11 DOWNTO 10) IS-- Rx to AWHEN"00"=> A<= R0;WHEN"01"=> A<= R1;WHEN"10"=> A<= R2;WHEN OTHERS => A<= R3;END CASE;WHEN Load|Move|addx|subp|andp|orp|xorp|Swap => CASE IR(9 DOWNTO 8) IS-- Ry to AWHEN"00"=> A<=R0;WHEN"01"=> A<=R1;WHEN"10"=> A<=R2;WHEN OTHERS=> A<=R3;END CASE;WHEN OTHERS => NULL;END CASE;status <= 1;WHEN 1 =>CASE IR(15 DOWNTO 12) ISWHEN Stop =>status <=1;WHEN Swap|Jmp|Jz|Read|Write =>status <=2;WHEN OTHERS =>status <=0;END CASE;WHEN 2 =>CASE IR(15 DOWNTO 12) ISWHEN Swap =>status <=0;WHEN Jmp|Write|Read =>MAR <= IR(11 DOWNTO 0);status <= 3;WHEN Jz =>IF R0="00000000"THEN MAR <= IR(11 DOWNTO 0);ELSE MAR <= PC;END IF;status <= 3;WHEN OTHERS =>status <= 3;END CASE;WHEN 3 =>CASE IR(15 DOWNTO 12) ISWHEN Jmp|Jz =>status <=0;WHEN Read|Write =>MAR <= pc;status <=4;WHEN OTHERS =>status <=4;END CASE;WHEN 4 =>status <= 0;END CASE;ELSENULL;END IF;END PROCESS status_change;seq: PROCESS(reset,clock)VARIABLE temp: std_logic_vector(8 DOWNTO 0); --临时变量BEGINIF(reset='0') THEN-- 清零IR <= (OTHERS=>'0');PC <= (OTHERS=>'0');R0 <= (OTHERS=>'0');R1 <= (OTHERS=>'0');R2 <= (OTHERS=>'0');R3 <= (OTHERS=>'0');MDR <= (OTHERS=>'0');ELSIF(clock'event AND clock='1') THENoverflow <= '0';CASE status ISWHEN 0=> --状态0IR <= M_data_in & "00000000"; --取指令PC <= PC+1; --程序计数器加1WHEN 1=> --状态1CASE IR(15 DOWNTO 12) ISWHEN load =>R0<= "0000" & IR(11 DOWNTO 8);WHEN addx => -- Rx:= Rx + A;CASE IR(11 DOWNTO 10) ISWHEN"00"=>temp := (R0(7) & R0(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R0<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN"01"=>temp :=(R1(7) & R1(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R1<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN"10"=>temp :=(R2(7) & R2(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R2<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN OTHERS=>temp :=(R3(7) & R3(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R3<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN subp => -- Rx:= Rx - A;CASE IR(11 DOWNTO 10) ISWHEN"00"=>temp:=(R0(7) & R0(7 DOWNTO0)) + NOT(A(7) & A(7 DOWNTO0)) + 1;R0<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN"01"=>temp:=(R1(7) & R1(7 DOWNTO0)) + NOT(A(7) & A(7 DOWNTO0)) + 1;R1<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN"10"=>temp:=(R2(7) & R2(7 DOWNTO0)) + NOT(A(7) & A(7 DOWNTO0)) + 1;R2<=temp(7 DOWNTO 0);overflow <= temp(8) xor temp(7);WHEN OTHERS=>temp:=(R3(7) & R3(7 DOWNTO0)) + NOT(A(7) & A(7 DOWNTO0)) + 1;R3<=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);END CASE;WHEN move =>CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<= A;WHEN"01"=> R1<= A;WHEN"10"=> R2<= A;WHEN OTHERS=> R3<= A;END CASE;WHEN shrp =>CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<= '0' & R0( 7 DOWNTO 1 );WHEN"01"=> R1<= '0' & R1( 7 DOWNTO 1 );WHEN"10"=> R2<= '0' & R2( 7 DOWNTO 1 );WHEN OTHERS=> R3<= '0' & R3( 7 DOWNTO 1 );END CASE;WHEN shlp =>CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<= R0( 6 DOWNTO 0 ) & '0';WHEN"01"=> R1<= R1( 6 DOWNTO 0 ) & '0';WHEN"10"=> R2<= R2( 6 DOWNTO 0 ) & '0';WHEN OTHERS=> R3<= R3( 6 DOWNTO 0 ) & '0';WHEN andp => --Rx:= Rx AND A;CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<=R0AND A;WHEN"01"=> R1<=R1AND A;WHEN"10"=> R2<=R2AND A;WHEN OTHERS=> R3<=R3AND A;END CASE;WHEN orp => --Rx:= Rx OR A;CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<=R0OR A;WHEN"01"=> R1<=R1OR A;WHEN"10"=> R2<=R2OR A;WHEN OTHERS=> R3<=R3OR A;END CASE;WHEN xorp => --Rx:= Rx XOR A;CASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<=R0XOR A;WHEN"01"=> R1<=R1XOR A;WHEN"10"=> R2<=R2XOR A;WHEN OTHERS=> R3<=R3XOR A;END CASE;WHEN Swap => --Swap: Rx to Ry;CASE IR(11 DOWNTO 8) ISWHEN"0100"=> R0<=R1;WHEN"1000"=> R0<=R2;WHEN"1100"=> R0<=R3;WHEN"0001"=> R1<=R0;WHEN"1001"=> R1<=R2;WHEN"1101"=> R1<=R3;WHEN"0010"=> R2<=R0;WHEN"0110"=> R2<=R1;WHEN"1110"=> R2<=R3;WHEN"0111"=> R3<=R1;WHEN"1011"=> R3<=R2;WHEN"0011"=> R3<=R0;WHEN OTHERS=> NULL;END CASE;WHEN OTHERS => NULL;END CASE;WHEN 2=> --状态2 CASE IR(15 DOWNTO 12) ISWHEN Swap=> -- Swap: A to RxCASE IR(11 DOWNTO 10) ISWHEN"00"=> R0<=A;WHEN"01"=> R1<=A;WHEN"10"=> R2<=A;WHEN OTHERS=> R3<=A;END CASE;WHEN Jz|Read =>IR(7 DOWNTO 0)<= M_data_in; -- 取双字节指令的后半部分IF R0/="00000000"THENpc <= pc+1;END IF;WHEN Jmp =>IR(7 DOWNTO 0)<= M_data_in;WHEN Write =>IR(7 DOWNTO 0)<= M_data_in;pc <= pc+1;MDR <= R0;WHEN OTHERS => NULL;END CASE;WHEN 3=> --状态3CASE IR(15 DOWNTO 12) ISWHEN jmp => -- 无条件转移指令PC <= IR(11 DOWNTO 0);WHEN Jz => -- 条件转移指令IF(R0="00000000") thenPC <= IR(11 DOWNTO 0);END IF;WHEN OTHERS => NULL;END CASE;WHEN 4=> --状态4CASE IR(15 DOWNTO 12) ISWHEN Read => R0 <= M_data_in; --读数据WHEN OTHERS=> NULL;END CASE;END CASE;END IF;END process seq;comb: PROCESS (reset, status)BEGINIF (reset = '1' AND status = 3 AND IR(15 DOWNTO 12)= Write ) THEN Write_Read <= '1';ELSEWrite_Read <= '0';END IF;END PROCESS comb;M_address <= MAR;M_data_out <= MDR;END RTL;4.仿真波形图执行过程解释:指令Load,Add,Move,Sub,And,Or,Xor,Shr,Shl的执行需要两个时钟周期,即两个状态0,1;指令Swap的执行需要三个时钟周期,即三个状态0,1,2;指令Jz,Jmp的执行需要4个时钟周期,即四个状态0,1,2,3;指令Read,Write的执行需要5个时钟周期,即状态0,1,2,3,4;(1)刚开始reset信号为0,所有寄存器清零,状态清零,之后reset=1,clock有效,开始取指令并执行;(2)取地址为000H指令:Idle,无操作,pc=pc+1;(3)取地址为001H指令:Load 5,操作为R0=5H,pc=pc+1;(4)取地址为002H指令:Move R1,R0,操作为R1=R0=5H,pc=pc+1;(5)取起始地址为003H指令:Read 01F,操作为R0=(01F)=39H,pc=pc+1;(6)取地址为005H指令:Shl R1,操作为R1=(R1左移一位),操作完成后R1=0AH;(7)取地址为006H指令:Add R0,R1,操作为R0=R0+R1,操作完成后R0=43H;(8)取起始地址为007H指令:Write 01E,操作为(01EH)=R0=43H;(9)取地址为009H指令:Sub R0,R1,操作为R0=R0-R1,操作完成后R0=39H;(10)取地址为00AH指令:Swap R0,R1,操作为R1和R0的值互换,完成后R1=39H,R0=0AH;(11)取地址为00BH指令:OR R0,R1,操作为R0=R0 OR R1,完成后R0=3BH;(12)取地址为00CH指令:Shr R1,操作为R1=(R1右移一位),完成后R1=1CH;(13)取地址为00DH指令:AND R0,R1,操作为R0=R0 AND R1,完成后R0=18H;(14)取地址为00EH指令:Move R2,R0,操作为R2=R0,完成后R2=18H;(15)取地址为00FH指令:Move R3,R1,操作为R3=R1,完成后R3=1CH;(16)取地址为010H指令:XOR R2,R3,操作为R2=R2 XOR R3,完成后R2=04H;(17)取起始地址为011H指令:Read 01E,操作为R0=(01EH)=43H;(18)取起始地址为013H指令:Jz 019,操作为如果R0=00H,则跳转到起始地址为019H的指令开始执行,否则继续执行下一条指令,由于R0=43H,故不跳转,继续执行;(19)取起始地址为015H指令:Read 01D,操作为R0=(01DH)=00H;(20)取起始地址为017H指令:Jmp 013,操作为无条件跳转到起始地址为013H的指令(Jz 019)开始执行;(21)取起始地址为013H指令:Jz 019,由于此时的R0=00H,故跳转到起始地址为019H的指令(Stop)开始执行;(22)取地址为019H指令:Stop,停止执行。
计组课设实验报告《计算机组成原理与系统结构》课程设计实验报告课题:两个16位二进制数加法计算班级:成员:完成日期:2021年10月11日一:课程设计步骤1.确定设计目标综合考虑实验条件及自身能力水平,以及设计功能的可靠性和实用性,我们小组决定将设计目标定为“两个16位二进制数相加”。
分两次分别输入两个加数的低八位和高八位,输出两个16位二进制数相加的结果。
2.确定指令系统(1)数据格式模型机规定数据采用定点整数补码表示,字长为8位,其格式如下:7 6 5 4 3 2 1 0 符号尾数(2)指令格式模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
①算术逻辑指令设计九条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:7 6 5 4 OP-CODE RSRD 或00 01 10 ②I/O指令3 2 1 0 RS RD 其中,OP-CODE为操作码,RS为源寄存器,RD 为目的寄存器,并规定:选定的寄存器R0 R1 R2 输入(1N)和输入(OUT)指令采用单字节指令,其格式如下:7 6 5 4 3 2 1 0 OP-CODE addr RD 其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr=10时,选中“INPUT DEVICE”中的数码块作为输入设备。
③访问指令及转移指令模型机设计两条访问指令,即存数(STA)、取数(LDA),两条颛臾指令,即无条件转移(JMP)、结果为零或有进位转移(BZC),指令格式如下:7 6 00 5 4 M 3 2 OP-CODE 1 0 RD D 其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。
D为位移量(正负均可),M为寻址模式,其定义如下:寻址模式00 有效地址E E=D 说明直接寻址01 10 11 E=(D) E=(RI)+D E=(PC)+D 间接寻址RI变址寻址相对寻址本模式机规定变址寄存器RI指定为寄存器R2④停机指令停机指令格式如下:7 6 5 4 3 2 1 0 OP-CODE 00 00 HALT指令,用于实现停机操作。
计算机组成原理课程设计实验报告班级:任课老师:小组成员:学号:时间: 2014年1月目录一、前言 (1)二、实验目的···································三、实验设备······································四、实验原理图··································五、工作原理·····································六、实验内容·····································(一)实验思路································(二)微程序流程图··························(三)实验代码······························(四)功能运算式··························七、实验步骤································(一)实验连线····································(二)写微代码···································(三)读微代码及校验························(四)写机器指令···································(五)读机器指令及校验(六)运行程序八、实验结果说明(一)实验七(二)实验八(三)新功能运算九、实验问题及解决方法十、小组分工十一、总结反思一、前言2014年1月2号至6号,我们班在西区信息楼605进行了计算机组成原理课程设计,因为前些时候我们已经完成了实验1—6,故2号那天我们按照EL—JY—II型计算机组成原理实验系统实验指导书开始做实验7,首先我们阅读实验指导书,接着开始连线,输入微代码,机器指令,最后输入数据验证程序,由于其中微代码很多,输入步骤繁琐,开始时要么显示结果不正确,要么全速运行一直运行不出结果,经过我们反复的重输微代码,验证微代码,重输机器指令,验证机器指令看,最后终于得出正确的结果。
《计算机组成实验C》
课程设计
适用专业:电子信息类专业
专业:计算机科学与技术
班级:计科四班
学号:2 0 1 2 2 3 7 8
姓名:王云龙
指导教师:陈红梅
实验学期: 2014-2015第1学期
西南交通大学
信息科学与技术学院
简化计算机系统的设计
一.实验目的
通过学习简单的指令系统及其各指令的操作流程,用VHDL语言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。
二. 实验内容
1. 用VHDL语言实现简单的处理器模块。
2. 调用存储器模块设计64×8的存储器模块。
3. 将简单的处理器模块和存储器模块连接形成简单的计算机系统。
4. 将指令序列存入存储器,然后分析指令执行流程。
三. 预习要求:1、学习简单指令集。
2、学习各指令的操作流程。
四. 实验报告
1. BLOCK图
2.内存文件
内存文件中的数据:
3. 程序设计
4.仿真波形图
执行过程解释:
指令Load,Add,Move,Sub,And,Or,Xor,Shr,Shl的执行需要两个时钟周期,即两个状态0,1;
指令Swap的执行需要三个时钟周期,即三个状态0,1,2;
指令Jz,Jmp的执行需要4个时钟周期,即四个状态0,1,2,3;
指令Read,Write的执行需要5个时钟周期,即状态0,1,2,3,4;
(1)刚开始reset信号为0,所有寄存器清零,状态清零,之后reset=1,clock有效,开始取指令并执行;
(2)取地址为000H指令:Idle,无操作,pc=pc+1;
(3)取地址为001H指令:Load 5,操作为R0=5H,pc=pc+1;
(4)取地址为002H指令:Move R1,R0,操作为R1=R0=5H,pc=pc+1;
(5)取起始地址为003H指令:Read 01F,操作为R0=(01F)=39H,pc=pc+1;
(6)取地址为005H指令:Shl R1,操作为R1=(R1左移一位),操作完成后R1=0AH;
(7)取地址为006H指令:Add R0,R1,操作为R0=R0+R1,操作完成后R0=43H;
(8)取起始地址为007H指令:Write 01E,操作为(01EH)=R0=43H;
(9)取地址为009H指令:Sub R0,R1,操作为R0=R0-R1,操作完成后R0=39H;
(10)取地址为00AH指令:Swap R0,R1,操作为R1和R0的值互换,完成后R1=39H,R0=0AH;
(11)取地址为00BH指令:OR R0,R1,操作为R0=R0 OR R1,完成后R0=3BH;
(12)取地址为00CH指令:Shr R1,操作为R1=(R1右移一位),完成后R1=1CH;
(13)取地址为00DH指令:AND R0,R1,操作为R0=R0 AND R1,完成后R0=18H;
(14)取地址为00EH指令:Move R2,R0,操作为R2=R0,完成后R2=18H;
(15)取地址为00FH指令:Move R3,R1,操作为R3=R1,完成后R3=1CH;
(16)取地址为010H指令:XOR R2,R3,操作为R2=R2 XOR R3,完成后R2=04H;
(17)取起始地址为011H指令:Read 01E,操作为R0=(01EH)=43H;
(18)取起始地址为013H指令:Jz 019,操作为如果R0=00H,则跳转到起始地址为019H的指令开始执行,否则继续执行下一条指令,由于R0=43H,故不跳转,继续执行;
(19)取起始地址为015H指令:Read 01D,操作为R0=(01DH)=00H;
(20)取起始地址为017H指令:Jmp 013,操作为无条件跳转到起始地址为013H的指令(Jz 019)开始执行;
(21)取起始地址为013H指令:Jz 019,由于此时的R0=00H,故跳转到起始地址为019H的指令(Stop)开始执行;
(22)取地址为019H指令:Stop,停止执行。
5. 实验感想。