湘潭大学计算机原理_实验三_多周期MIPS_CPU的控制部件实验报告
- 格式:doc
- 大小:683.00 KB
- 文档页数:12
湘潭大学计算机原理实验三多周期MIPSCPU的控制部件预习报告实验三多周期MIPS CPU的控制部件实验用有限状态机实现多周期CPU的控制部件一.实验目的1、了解MIPS—CPU控制器的功能和工作原理;2、掌握用有限状态机技术实现多周期控制器的方法;3、熟练掌握用Verilog HDL语言设计多周期控制器的方法;4、熟练掌握对多周期控制器的仿真实验验证和硬件测试两种调试方法;5、掌握向MIPS-CPU顶层数据通路中增加控制单元的方法,并通过仿真验证和硬件测试两种方法对电路进行故障定位的调试技术。
二.实验内容(1)MIPS—CPU控制器的有限状态机设计,根据MIPS—CPU 各种类型指令执行要求和有限状态机的设计原理,将多周期控制器的指令执行划分为多个状态,确定每一种指令的有限状态机,最后归纳为完整的多周期控制器有限状态机。
通过Verilog HDL语言实现多周期控制器有限状态机。
(2)根据MIPS—CPU控制器的接口要求,在有限状态机的基础上,用Verilog HDL实现完整的MIPS—CPU控制器的设计,并根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;(3)设计控制器的硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序重新编译;最终完成控制器的硬件电路设计;(4)在MIPS—CPU指令系统的数据通路基础上,增加控制单元电路,并进行编译,仿真波形和调试。
根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;(5)对增加了控制单元的顶层数据通路设计硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;最终完成增加了控制单元的顶层数据通路设计。
三.实验原理与步骤1.把指令执行分成多个阶段,每个阶段在一个时钟周期内完成(1).时钟周期以最复杂阶段所花时间为准(2).尽量分成大致相等的若干阶段(3).每个阶段内最多只能完成:1次访存或1次寄存器堆读/写或1次ALU2.每步都设置相应的存储元件,执行结果都在下个时钟开始保存到相应单元3.认真阅读书上的控制部件代码后,将其按照电路图进行拆分,拆分为三个部件,并在顶层模块中连接线路。
实验3 MIPS指令系统和MIPS体系结构一.实验目的(1)了解和熟悉指令级模拟器(2)熟悉掌握MIPSsim模拟器的操作和使用方法(3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解(4)熟悉MIPS体系结构二. 实验内容和步骤首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统。
(1)、启动MIPSsim。
(2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。
(3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。
(4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置。
(5)、查看“寄存器”窗口PC寄存器的值:[PC]=0X00000000 。
(6)、执行load和store指令,步骤如下:1)单步执行一条指令(F7)。
2)下一条指令地址为OX00000004 ,是一条有(有,无)符号载入 (字节,半字,字)指令。
3)单步执行一条指令(F7)。
4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。
5)下一条指令地址为 OX000000008 ,是一条有 (有,无)符号载入(字节,半字,字)指令。
6)单步执行1条指令。
7)查看R1的值,[R1]=0x0。
8)下一条指令地址为 0x0000000c ,是一条无(有,无)符号载入(字节,半字,字)指令。
9)单步执行1条指令。
10)查看R1的值,[R1]=0x0 。
11)单步执行1条指令。
12)下一条指令地址为0x00000014 ,是一条保存字节(字节,半字,字)指令。
13)单步执行一条指令。
14)查看内存BUFFER处字的值,值为0x00000080。
(7)、执行算术运算类指令。
步骤如下:1)双击“寄存器”窗口中的R1,将其值修改为2。
2)双击“寄存器”窗口中的R2,将其值修改为3。
3)单步执行一条指令。
mips运算器设计的实验报告MIPS运算器设计的实验报告在计算机科学领域,MIPS(Microprocessor without Interlocked Pipeline Stages)是一种常见的指令集架构,被广泛用于教学和研究。
MIPS运算器设计实验旨在通过实际操作,加深对MIPS指令集的理解,提高学生的计算机系统设计能力。
实验开始前需要明确设计的目标和功能需求。
在设计MIPS运算器时,需要考虑指令的执行流程、寄存器的设计、ALU的功能等关键要素。
设计者应该清楚每条指令的操作码、操作数及操作结果的存储位置,确保整个运算器的功能正常实现。
根据设计要求,搭建MIPS运算器的硬件结构。
在硬件设计中,需要考虑到时钟频率、数据通路的连接、控制信号的传输等方面。
合理的硬件设计是保证运算器正常运行的基础,需要对各个模块进行充分测试和调试,确保整个系统的稳定性和可靠性。
接着,进行指令集的编码和解码工作。
MIPS指令集包括常见的算术运算指令、逻辑运算指令、分支跳转指令等,设计者需要为每条指令赋予唯一的操作码,并实现指令的编码和解码功能。
编码和解码的准确性直接影响到指令的执行结果,需要仔细检查和验证每条指令的功能和操作。
进行仿真和调试工作。
通过仿真软件模拟MIPS运算器的运行过程,检查指令执行的正确性和时序的准确性。
在调试过程中,需要重点关注指令执行的过程中是否存在冲突和错误,及时修改和优化设计方案,确保运算器的功能完整和稳定。
总的来说,通过设计MIPS运算器的实验,可以帮助学生深入理解计算机系统的结构和工作原理,提高他们的设计和调试能力,培养他们的团队合作和问题解决能力。
同时,这也是一个很好的实践机会,让学生将理论知识应用到实际项目中,提升他们的综合素质和创新能力。
希望通过这样的实验,能够激发学生对计算机科学的兴趣,培养他们对技术研究的热情,为未来的科技发展做出贡献。
多周期M I P S微程序实验目的◼掌握多周期MIPS CPU设计原理◼掌握微程序控制器设计的基本原理◼利用微程序控制器的设计实现多周期MIPS处理器◼主要任务☐绘制多周期MIPS CPU数据通路☐实现微程序控制器☐测试联调核心指令集8条(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add$rd,$rs,$rt R[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd] 2slt$rd,$rs,$rt R[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,imm R[$rt]←R[$rs]+SignExt(imm)溢出产生异常16b4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq$rs,$rt,imm if(R[$rs]=R[$rt])PC←PC+SignExt18b({imm,00})7bne$rs,$rt,imm if(R[$rs]!=R[$rt])PC←PC+SignExt18b({imm,00})8syscall系统调用,这里用于停机多周期MIPS CPU 数据通路参考A L UENCLK31:265:001Addr InstrData15:015:1120:1625:21Sign ExtendR1#R2#W#WDWER1R2RegisterFileA BSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp 01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorD IRWriteMemWrite PCWrite Branch PCSrc AluOp ALUSrcB ALUSrcA RegWritePCEnRegDst MemtoRegPC00011011010101WE RD AMemoryWDCLK步骤1:构建多周期MIPS CPU数据通路◼在MIPS多周期CPU(微程序)子电路中,利用如下组件构建CPU数据通路☐PC、MEM、IR、DR、RegFile、ALU、Controller步骤2:设计微程序控制器◼输入信号◼指令字Opcode,Func字段(12位)◼时钟信号、复位信号◼输出信号◼多路选择器选择信号◼内存访问控制信号◼寄存器写使能信号◼运算器控制信号、指令译码信号控制信号功能说明(8条核心指令集)#控制信号信号说明产生条件1PCWrite PC写使能控制取指令周期,分支指令执行2IorD指令还是数据0表示指令,1表示数据3IRwrite指令寄存器写使能高电平有效4MemWrite写内存控制信号sw指令5MemRead读内存控制信号lw指令取指令6Beq Beq指令译码信号Beq指令7Bne Bne指令译码信号Bne指令8PcSrc PC输入来源顺序寻址还是跳跃寻址9AluOP运算器操作控制符4位ALU_Control控制,00加,01减,10由Funct定10AluSrcA运算器第一输入选择11AluSrcB运算器第二输入选择Lw指令,sw指令,addi12RegWrite寄存器写使能控制信号寄存器写回信号13RegDst写入寄存器选择控制信号R型指令14MemToReg写入寄存器的数据来自存储器lw指令◼载入微程序,设计地址转移逻辑下址字段逻辑微指令译码阶段地址转移逻辑◼打开CPU.circ打开多周期微程序控制器电路◼首先完成如下电路逻辑:指令译码、ALU控制2.实现微程序地址转移逻辑◼填写微程序地址入口表(Excel表微程序地址转移逻辑自动生成.xlsx)☐左侧是译码信号,右侧是对应类型指令对应的入口地址,地址转移逻辑会自动生成◼自动生成微程序地址转移逻辑子电路☐Logisim的分析电路功能Project →Analyze CircuitR_Type ADDI LW SW BEQ BNE SYSCALL 入口地址10进制S3S2S1S0170111 1111011 1910011111机器指令译码信号微程序入口地址构建指令状态变换图◼一个状态对应一个时钟周期◼一个状态对应一条微指令◼状态值对应微指令地址3.根据状态图构建微程序◼状态值→微指令地址◼不同状态→微控制信号、P字段设置、下址字段→微指令→微程序微指令、微程序自动生成Excel表格步骤3:CPU测试◼在存储器中载入排序程序sort.hex◼时钟自动仿真,Windows:Ctrl+k Mac: command+k运行程序◼程序停机后,查看数据存储器中排序情况,有符号降序排列下节课再见…。
mips运算器设计的实验报告
MIPS运算器设计的实验报告
MIPS运算器是一种使用MIPS指令集进行运算的微型计算机。
它是一个重要的数字逻辑电路设计实验,能够让我们深入了解计算机的内部结构、运算的实现原理和操作系统等重要的概念。
本文将简要介绍MIPS运算器的设计原理和实验过程。
首先,MIPS运算器的设计由以下六个部分组成:存储器、CPU、输入控制器、输出控制器、时钟和调试器。
存储器包括一个程序存储器和一个数据存储器,分别用于存储程序和数据。
CPU包括ALU和寄存器,用于处理运算。
输入控制器用于控制输入设备,输出控制器用于控制输出设备,时钟用于同步和计时,调试器用于调试程序。
其次,在设计MIPS运算器时,我们采用了门级逻辑的方法。
首先,我们先根据MIPS指令集定义CPU的指令格式和指令编码,然后使用Karnaugh图和布尔代数等方法进行逻辑门电路的设计和优化,最终实现电路的硬件描述语言(HDL)编写和模拟仿真。
最后,我们进行了一系列实验验证了MIPS运算器的正确性和性能。
我们通过加载不同的程序和数据,进行了各种不同的运算测试,包括加、减、乘、除、与、或、异或、移位等运算,同时还测试了运算器的运行速度和存储器的容量等性能
指标。
实验结果表明,MIPS运算器的设计符合MIPS指令集的规范,功能完备,性能稳定,能够满足各种不同的运算需求。
总之,MIPS运算器是一款非常实用且具有挑战性的数字逻辑电路设计实验,它可以让我们更好地理解计算机的原理和操作系统等重要的概念,同时也能够培养我们的动手能力和解决问题的能力。
CPU组成与机器指令执行实验报告1. 引言本实验旨在探究中央处理器(CPU)的组成以及机器指令的执行过程。
通过深入理解CPU的工作原理和机器指令的执行流程,我们可以更好地理解计算机的数据处理过程。
2. CPU的组成CPU是计算机的核心组件之一,它负责执行计算机上的所有任务。
一个典型的CPU由以下几个重要组成部分构成:2.1 控制单元(Control Unit)控制单元是CPU的核心组件之一,负责协调和控制整个CPU的操作。
它从存储器中读取指令,并解码这些指令以确定下一步的操作。
2.2 算术逻辑单元(Arithmetic Logic Unit,ALU)算术逻辑单元是CPU的另一个重要组成部分,负责执行各种算术和逻辑运算,如加法、减法、乘法、除法等。
ALU能够执行基本的数学计算和布尔逻辑运算。
2.3 寄存器(Registers)寄存器是CPU内部的临时存储器,用于存储指令和数据。
CPU拥有多个寄存器,每个寄存器都有特定的功能,如程序计数器(Program Counter,PC)用于存储下一条指令的地址,累加器(Accumulator)用于存储运算结果等。
3. 机器指令的执行过程机器指令是计算机能够理解和执行的指令,它们以二进制的形式表示。
机器指令的执行过程可以分为以下几个步骤:3.1 取指令(Fetch)控制单元从存储器中读取下一条指令,并将其存储在指令寄存器(Instruction Register,IR)中。
3.2 解码指令(Decode)控制单元解码指令寄存器中的指令,确定需要执行的操作类型和操作数。
3.3 执行指令(Execute)根据解码的结果,CPU执行指令中指定的操作。
这可能涉及到从寄存器中读取数据、进行算术运算、修改寄存器的值等。
3.4 存储结果(Store)执行指令后,结果可能需要存储在寄存器或存储器中,以备后续操作使用。
4. 实验步骤在本次实验中,我们将使用一个简单的汇编语言程序来演示机器指令的执行过程。
实验四多周期MIPS CPU +存储器实验一.实验目的1、深入理解MIPS—CPU指令系统的功能和工作原理;2、掌握多周期CPU的工作原理和逻辑功能实现;3、熟练掌握用Verilog HDL语言设计多周期存储器的方法;4、熟练掌握对多周期存储器的仿真实验验证和硬件测试两种调试方法;5、通过对多周期CPU的运行情况进行观察和分析,进一步加深理解。
二.实验设备硬件:现代计算机组成原理实验系统(兼)Nios 32位嵌入式系统实验开发平台EP1C12Q240Core(TM)i3-3240 CPU@3.40GHz 3.39GHz 1.91GB的内存软件:QuartusII 13.0sp1Microsoft Windows xp三.实验内容1、设计一个32位MIPS多周期CPU具体的要求如下:至少运行下列的6类32条MIPS指令。
(1)算术逻辑指令and、sub、addi(2)逻辑运算指令and、0r、xor、andi、ori、xori(3)位移指令sll、srl、sra(4)条件分支指令beq、bne、(5)无条件跳转指令j、jr(6)数据传送指令lw、sw2.设计一个存储器四.实验原理与步骤实现上述原理框图根据功能将其分划分为控制单元(cunit)、执行单元(eunit)、指令单元(iunit)以及存储单元(munit)四大模块。
(1).控制单元(cunit)是多周期微处理器的核心控制微处理器取指令、指令译码和指令执行等工作。
主要由指令译码器控制器(outputs control)、算术逻辑运算控制器(ALU control)两个子模块组成。
(2).执行单元(eunit)主要由寄存器堆(registers)和算术逻辑单元(ALU)两个子模块组成。
其中寄存器是微处理器最基本的元素MIPS系统的寄存器堆由32个32位寄存器组成而ALU则是微处理器的主要功能部件执行加、减、比较等算术运算和与、或、或非、异或等逻辑运算。
CPU计算机组成原理实验报告实验名称:CPU计算机组成原理实验一、实验目的:1.了解计算机硬件的基本组成原理,特别是CPU的工作原理;2.掌握计算机的组装和调试技能;3.熟悉计算机操作系统的安装和配置方法;4.学习使用计算机进行基本的应用程序开发。
二、实验设备和材料:1.CPU主机:包括主板、CPU、内存、硬盘等;2.显示设备:显示器、键盘、鼠标等;3.软件:操作系统、开发工具等。
三、实验步骤:1.将主板、CPU、内存、硬盘等硬件组件组装到主机箱中,连接电源、显示器、键盘、鼠标等外设;2.打开电源,按照BIOS界面提示进行主板和硬件设置;3.插入操作系统安装光盘,根据安装界面提示进行操作系统的安装;4.安装完成后,进入操作系统,根据提示进行相应驱动程序的安装和配置;5.打开开发工具,进行编程实践。
四、实验结果与分析:通过以上步骤,成功组装了一台计算机并安装了操作系统。
在操作系统中,能够正常运行各种应用程序,并且能够进行编程开发。
通过实验,可以清楚地了解到计算机硬件的组成原理,特别是CPU的工作原理。
CPU 作为计算机的核心部件,负责指令的执行和数据的处理。
通过对CPU的组装和调试,可以更深入地了解其工作原理和操作方法。
五、实验心得与体会:通过实验,我对计算机硬件的组装和设置有了更深入的理解。
计算机硬件的组成非常复杂,需要我们仔细阅读说明书,按照步骤进行操作。
在实验过程中,我们学会了解决一些常见的硬件问题,如硬件不兼容、连接错误等。
此外,操作系统的安装和配置也是非常重要的一步,只有正确地安装和配置操作系统,才能保证计算机的正常运行。
通过这个实验,我不仅学到了理论知识,还锻炼了实际操作的能力。
计算机的组装和调试需要我们仔细、耐心地进行,一丝不苟地对待每一步操作。
只有掌握了计算机组成原理,才能更好地理解和应用计算机技术。
通过实验,我深刻地认识到计算机是一台高度复杂的机器,它可以帮助我们解决各种问题,提高工作效率。
组成原理实验报告【实验名称】多周期MIPS CPU设计【实验目的】1.学习如何使用ISE的IP核2.学习使用Xilinx FPGA内的RAM资源3.熟悉mips指令集4.掌握多周期mips CPU的原理。
5.多周期状态机的编写。
【实验内容】•设计CPU,完成以下程序代码的执行,其功能是起始数为3和3的斐波拉契数列的计算。
只计算20个数。
•.data•fibs: .word 0 : 20 # "array" of 20 words to contain fib values•size: .word 20 # size of "array"•temp: .word 3 3•.text•la $t0, fibs # load address of array•la $t5, size # load address of size variable•lw $t5, 0($t5) # load array size•la $t3, temp # load•lw $t3, 0($t3)•la $t4, temp•lw $t4, 4($t4)•sw $t3, 0($t0) # F[0] = $t3•sw $t4, 4($t0) # F[1] = $t4•addi $t1, $t5, -2 # Counter for loop, will execute (size-2) times•loop: lw $t3, 0($t0) # Get value from array F[n]•lw $t4, 4($t0) # Get value from array F[n+1]•add $t2, $t3, $t4 # $t2 = F[n] + F[n+1]•sw $t2, 8($t0) # Store F[n+2] = F[n] + F[n+1] in array•addi $t0, $t0, 4 # increment address of Fib. number source•addi $t1, $t1, -1 # decrement loop counter•bgtz $t1, loop # repeat if not finished yet.•out:•j out•实验设计中可以不使用给定的数据通路和状态机,但仅允许使用一个存储器。
计算机原理与设计
实验报告
实验三多周期MIPS CPU的控制部件用有限状态机实现多周期CPU的控制部件
姓名: XXX
学号: 2013551728
班级: 13级软件工程2班
实验日期: 2014年 11 月12 日
一.实验目的
1、了解MIPS—CPU控制器的功能和工作原理;
2、掌握用有限状态机技术实现多周期控制器的方法;
3、熟练掌握用Verilog HDL语言设计多周期控制器的方法;
4、熟练掌握对多周期控制器的仿真实验验证和硬件测试两种调试方法;
5、掌握向MIPS-CPU顶层数据通路中增加控制单元的方法,并通过仿真验证和硬件测试两种方法对电路进行故障定位的调试技术。
二.实验内容
(1)MIPS—CPU控制器的有限状态机设计,根据MIPS—CPU各种类型指令执行要求和有限状态机的设计原理,将多周期控制器的指令执行划分为多个状态,确定每一种指令的有限状态机,最后归纳为完整的多周期控制器有限状态机。
通过Verilog HDL语言实现多周期控制器有限状态机。
(2)根据MIPS—CPU控制器的接口要求,在有限状态机的基础上,用Verilog HDL实现完整的MIPS—CPU控制器的设计,并根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(3)设计控制器的硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序重新编译;最终完成控制器的硬件电路设计;
(4)在MIPS—CPU指令系统的数据通路基础上,增加控制单元电路,并进行编译,仿真波形和调试。
根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(5)对增加了控制单元的顶层数据通路设计硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;最终完成增加了控制单元的顶层数据通路设计。
三.实验原理与步骤
1.把指令执行分成多个阶段,每个阶段在一个时钟周期内完成
(1).时钟周期以最复杂阶段所花时间为准
(2).尽量分成大致相等的若干阶段
(3).每个阶段内最多只能完成:1次访存或 1次寄存器堆读/写或 1次ALU
2.每步都设置相应的存储元件,执行结果都在下个时钟开始保存到相应单元
3.认真阅读书上的控制部件代码后,将其按照电路图进行拆分,拆分为三个部件,并在顶层
模块中连接线路。
四.实验源代码D触发器源代码:
下一状态部件源代码:
输出函数部件源代码:
五.EDA阶段的实验结果(“编译”、“仿真”等)
仿真结果如上图。
六.实验电路结构图
七.实验按键显示说明及引脚分配
1、本实验按键及显示说明
按键对应功能
键1 op
键2 op
键3 func
键4 func
键7 clk
键8 clrn
数码编号对应结果
数码1 aluc
数码2 aluscrb
数码3 pcsource[1..0]
数码4 jal regret m2reg
D1 wreg
D2 sext
D3 shift
D4 selpc
D5 wmem
引脚分配表:
八.测试时的电路总体结构及其说明多周期CPU控制部件的状态转移图
多周期CPU控制部件的电路结构图
实验电路图
九.测试计划(包括计划进行的系统测试、每一测试的测试过程、测试所需的测试数据、预期结果数据等)及其相关说明
下一状态函数的真值表
实验结果如下:
与预期实验结果相符。
十.关于实验电路设计的其他说明
q(state)值暂未进行输出。
十一.实验心得
这次实验将控制部件拆分花费了大量的时间,也使得我对于Verilog语言加深了理解和掌握。
对cpu的控制部件的结构和原理进行了深入的了解,对以后的学习起到了重要的作用。