单周期处理器
《数字逻辑与计算机组成》实验讲义-实验5

实验5:单周期处理器的控制器设计实验一、实验目的1、理解随机访问存储器RAM和只读存储器ROM的操作原理。
2、理解指令类型与指令格式之间的关系,掌握取指部件、指令解析和立即数扩展器的设计方法。
3、理解每条目标指令的功能和数据通路,掌握单周期处理器的控制器设计方法。
二、实验环境Logisim-ITA V2.16.1.0。
三、实验内容1、利用Logisim中的RAM组件进行数据读写操作实验。
Logisim中RAM的地址位宽最多可设置为24位,数据位宽最多可设置为32位。
在属性窗口的数据接口中有三种不同的工作模式。
若设置为“分离的加载和存储引脚”模式,则有两个数据端口分别连接输入数据和输出数据(如图1所示);否则,使用同一数据端口连接数据总线。
注意:当设置数据位宽为32位时,采用按字编址方式(32位),而不是采用按字节编址方式。
图1 采用分离加载和存储模式的32位数据读取实验图实验要求RAM组件的地址位宽设置为12位,数据接口模式设置为分离的加载和存储引脚模式。
实验过程与验证步骤如下:(1)设置数据位宽为32位,即可访问空间大小为16KB;连接必要的输入输出信号并选择合适的控制信号;从0地址处开始顺序写入以下两个32位的十六进制数据:0x4E4A5543、0x53657200;然后再读出所存储的数据。
(2)设置数据位宽为8位,即可访问空间大小为4KB;将输出数据端口连接到如图2所示的文本终端TTY;从0地址开始顺序写入以下八个字节的十六进制数据:4E4A554353657200;然后按字节为单位读出并输出到文本终端TTY,观察显示的内容。
图2 采用分离加载和存储模式的8位数据读取实验图(3)Logisim中RAM和ROM组件的数据输入还可以采用Logisim十六进制编辑器和直接读取二进制编码文件的方法实现。
把鼠标移到存储器组件上,点击鼠标右键,则弹出菜单框(如图3所示),选中“编辑存储内容”,则打开Logisim十六进制编辑器(如图4所示),可按照存储器设置的数据位宽,直接使用键盘输入数据;输入数据后,可点击保存按钮,把输入的数据保存到数据镜像文件(image)中。
计算机专业基础综合(中央处理器)模拟试卷4(题后含答案及解析)

计算机专业基础综合(中央处理器)模拟试卷4(题后含答案及解析) 题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.通常所说的32位微处理器是指( )。
A.地址总线的宽度为32位B.处理的数据长度只能为32位C.CPU字长为32位D.通用寄存器数目为32个正确答案:C解析:通常所说的32位微处理器是指CPU字长为32位。
将运算器和控制器合称为中央处理器(CPU),在由超大规模集成电路构成的微型计算机中,往往将CPU制成一块芯片,称为微处理器。
CPU按照其处理信息的字长可以分为8位CPU、16位CPU、32位CPU、64位CPU等。
选项A、B、D均与微处理器的位数无关。
知识模块:中央处理器2.在微程序控制方式中,机器指令、微程序和微指令的关系是( )。
A.每一条机器指令由一条微指令来解释执行B.每一条机器指令由一段(或一个)微程序来解释执行C.一段机器指令组成的工作程序可由一条微指令来解释执行D.一条微指令由若干条机器指令组成正确答案:B解析:机器指令是由一段(或一个)微程序来解释执行的,一条微程序是由若干微指令构成的。
知识模块:中央处理器3.一个单周期处理器,各主要功能单元的操作时间为:指令存储器和数据存储器为0.3 ns,ALU为0.2 ns,寄存器文件为0.1 ns,则该CPU的时钟周期最少应该是( )。
A.0.4 nsB.0.3 nsC.0.2 nsD.1 ns正确答案:D解析:单周期处理器时钟周期取为“Load”指令的执行时间(最长),它等于读指令存储器(取指)的时间、读寄存器堆(取形式地址)的时间、ALU(计算有效地址)的时间、读数据存储器(取操作数)的时间以及写寄存器堆(将操作数写入目的寄存器)的时间之和,为1 ns。
知识模块:中央处理器4.微程序存放在( )。
A.主存中B.堆栈中C.只读存储器中D.磁盘中正确答案:C解析:微程序存放在控制存储器中,是只读存储器。
华中科技大学HUST类MIPS单周期微处理器设计实验报告

类MIPS单周期微处理器设计实验报告专业:班级:学号:姓名:一、微处理器各模块设计各模块的框图结构如上图所示。
由图可知,该处理器包含指令存储器、数据存储器、寄存器组、ALU单元、符号数扩张、控制器、ALU控制译码以及多路复用器等。
图中还忽略了一个单元:时钟信号产生器,而且以上各个部件必须在时钟信号的控制下协调工作。
1.指令存储器的设计指令寄存器为ROM类型的存储器,为单一输出指令的存储器。
因此其对外的接口为clk、存储器地址输入信号(指令指针)以及数据输出信号(指令)。
(1)在IP wizard 中配置ROM,分配128个字的存储空间,字长为32位宽。
(2)选择输入具有地址寄存功能,只有当时钟上升沿有效时,才进行数据的输出。
(3)配置ROM内存空间的初始化COE文件。
最后单击Generate按钮生成IROM模块。
2.数据存储器的设计数据存储器为RAM类型的存储器,并且需要独立的读写控制信号。
因此其对外的接口输入信号为clk、we、datain、addr;输出信号为dataout。
数据存储器基本建立过程同ROM的建立。
3.寄存器组设计寄存器组是指令操作的主要对象,MIPS中一共有32个32位寄存器。
在指令的操作过程中需要区分Rs、Rt、Rd的地址和数据,并且Rd的数据只有在寄存器写信号有效时才能写入,因此该模块的输入为clk、RegWriteAddr、RegWriteData、RegWriteEn、RsAddr、RtAddr、reset;输出信号为RsData、RtData。
由于$0一直输出0,因此当RsAddr、RtAddr为0时,RsData以及RtData 必须输出0,否则输出相应地址寄存器的值。
另外,当RegWriteEn有效时,数据应该写入RegWriteAddr寄存器。
并且每次复位时所有寄存器都清零。
代码如下:module regFile(input clk,input reset,input [31:0] regWriteData,input [4:0] regWriteAddr,input regWriteEn,output [31:0] RsData,output [31:0] RtData,input [4:0] RsAddr,input [4:0] RtAddr);reg[31:0] regs[0:31];assign RsData = (RsAddr == 5'b0)?32'b0:regs[RsAddr];assign RtData = (RtAddr == 5'b0)?32'b0:regs[RtAddr];integer i;always @(posedge clk)beginif(!reset)beginif(regWriteEn==1)beginregs[regWriteAddr]=regWriteData;endendelsebeginfor(i=0;i<31;i=i+1)regs[i]=0;regs[31]=32'hffffffff;endendendmodule4.ALU设计在这个简单的MIPS指令集中,微处理器支持add、sub、and、or、slt运算指令,需要利用ALU单元实现运算,同时数据存储指令sw、lw也需要ALU单元计算存储器地址,条件跳转指令beq需要ALU来比较两个寄存器是否相等。
Project4 VerilogHDL完成单周期处理器开发(2013.12.2)

一、 设计说明
1. 处理器应 MIPS-Lite3 指令集。 a) MIPS-Lite3={MIPS-Lite2,addi,addiu, slt,j,jal,jr}。 b) MIPS-Lite2 指令集:addu,subu,ori,lw,sw,beq,lui。 c) addi 可以不支持溢出。 2. 处理器为单周期设计。
Figure2 参考的 project 目录组织
b) 顶层设计文件命名为 mips.v。 c) 建议 datapath 中的每个 module 都由一个独立的 VerilogHDL 文件组成。 d) 建议所有 mux (包括不同位数、 不同端口数等) 都建模在一个 mux.v 中。 可以有多个 module。 6. code.txt 中存储的是指令码 a) 用 VerilogHDL 建模 IM 时,必须以读取文件的方式将 code.txt 中指令加 载至 IM 中。 b) code.txt 的格式如 Figure3 所示。每条指令占用 1 行,指令二进制码以文 本方式存储。
15. 详细说明你的测试程序原理及测试结果。 【WORD】 a) 应明确说明测试程序的测试期望,即应该得到怎样的运行结果。 b) 每条汇编指令都应该有注释。
五、 问答【WORD】
16. C 语言是一种弱类型程序设计语言。C 语言中不对计算结果溢出进行处理, 这意味着 C 语言要求程序员必须很清楚计算结果是否会导致溢出。因此,如 果仅仅支持 C 语言,MIPS 指令的所有计算指令均可以忽略溢出。 a) 请说明为什么在忽略溢出的前提下, addi 与 addiu 是等价的, add 与 addu 是等价的。 提示: 阅读 《MIPS32® Architecture For Programmers Volume II: The MIPS32® Instruction Set》中相关指令的 Operation 部分。
MIPS指令单周期CPU设计

Data memory
rd rs rt
Register File
PC
执行步骤(3/5)
instruction memory
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory 5. Register Write
– 将结果写入目的寄存器
需要保存的值
– PC、寄存器组、存储器
二、典型指令的数据通路
ADDU and SUBU – addu rd,rs,rt
31 op 6 bits 31 op 6 bits 26 rs 5 bits 26 rs 5 bits 21 rt 5 bits 21 rt 5 bits 16 immediate 16 bits 16 rd 5 bits 11 6 shamt 5 bits funct 6 bits 0 0
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory5. Register Write
Phase 1: Instruction Fetch (IF)
– Fetch 32-bit instruction from memory – Increment PC (PC = PC + 4)
Data memory
rd rs rt
Register File
PC
执行步骤(2/5)
instruction memory
ALU
MUX
单周期cpu课程设计

单周期cpu课程设计一、课程目标知识目标:1. 学生能理解单周期CPU的工作原理,掌握其内部结构及功能。
2. 学生能描述单周期CPU的指令执行过程,包括取指、译码、执行、访存、写回等阶段。
3. 学生能解释单周期CPU中时钟、指令和数据的关系,并分析其性能特点。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的单周期CPU。
2. 学生能运用仿真软件对单周期CPU进行功能仿真,验证其正确性。
3. 学生能通过课程学习,培养自己的逻辑思维和问题解决能力。
情感态度价值观目标:1. 学生能对计算机硬件及CPU产生兴趣,激发学习热情。
2. 学生能认识到CPU在计算机系统中的核心地位,增强对计算机科学的尊重和热爱。
3. 学生能在团队协作中发挥积极作用,培养合作精神和沟通能力。
课程性质:本课程为计算机科学与技术专业核心课程,旨在让学生了解CPU的基本原理,掌握单周期CPU的设计方法。
学生特点:学生已经具备一定的数字逻辑电路基础,具有一定的编程能力和逻辑思维能力。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过课程学习,达到课程目标所规定的知识、技能和情感态度价值观要求。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养其独立思考和解决问题的能力。
通过课程目标的分解,确保教学设计和评估的针对性和有效性。
二、教学内容1. 单周期CPU概述:介绍CPU的发展历程,单周期CPU的概念及其在计算机系统中的作用。
教材章节:第1章 计算机系统概述2. 单周期CPU内部结构:讲解CPU的内部组成部分,包括控制单元、算术逻辑单元(ALU)、寄存器组、程序计数器等。
教材章节:第2章 CPU内部结构3. 指令集与指令执行过程:分析指令集的设计,讲解单周期CPU指令执行过程中各阶段的任务和实现方法。
教材章节:第3章 指令集与指令执行4. 时序控制与性能分析:探讨时钟、指令和数据的关系,分析单周期CPU的性能特点。
教材章节:第4章 时序控制与性能分析5. 单周期CPU设计方法:介绍设计单周期CPU的步骤,包括电路设计、指令集设计、时序控制等。
Logisim完成MIPS单周期处理器开发实验报告

Logisim完成MIPS单周期处理器开发实验报告Project3Logisim完成单周期处理器开发实验报告⼀.总体设计⼆.模块定义(1)IFU(2)GPR(3)ALU(4)EXT(5)DM(6)Controller四.控制器设计单周期真值表Func100000100010N/AOp000000000000001101100011000100001111add sub ori lw sw beq lui RegDst1100X X0 ALUSrc0011101 MemtoReg0001X X X RegWrite1111002 MemWrite0000100 nPC_sel0000010 ExtOp X X000X1ALUctr Add Subtract Or Add Add Subtract X五.测试要求16.测试程序lui$t0,0x0004#lui测试程序要实现:⽴即数0x0004加载⾄t0寄存器的⾼位lui$t1,0x0008#lui测试程序要实现:⽴即数0x0008加载⾄t1寄存器的⾼位ori$t3,$zero,0x00002000#ori测试程序要实现:zero寄存器中的内容与⽴即数0x00002000进⾏或运算,储存在t3寄存器中sw$t0,4($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量4,所指向的RAM中sw$t0,8($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量8,所指向的RAM中loop:add$t2,$t2,$t1#add测试程序要实现:t1寄存器中的值加上t2寄存器中的值后存到t2寄存器中lw$t4,4($t3)#lw测试程序要实现:把t3寄存器的值+4当作地址读取存储器中的值存⼊t4 lui$t5,0x0004#lui测试程序要实现:⽴即数0x0004加载⾄t5寄存器的⾼位sub$t7,$t6,$t5#sub测试程序要实现:t6寄存器中的值减去t5寄存器中的值后存到t7寄存器中add$t0,$t0,$t5#sub测试程序要实现:t0寄存器中的值减去t5寄存器中的值后存到t0寄存器中add$t6,$t6,$t0#add 测试程序要实现:t6寄存器中的值加上t0后存到t6寄存器中beq$t0,$t1,loop#beq测试程序要实现:判断t0的值和t1的值是否相等,相等转loopadd$t0,$t0,$t5#add测试程序要实现:t0寄存器中的值加上t5后存到t0寄存器中lui$v0,0x0001#lui测试程序要实现:⽴即数0x0001加载⾄v0寄存器的⾼位lui$v1,0x0002#lui测试程序要实现:⽴即数0x0002加载⾄v1寄存器的⾼位add$v0,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v0寄存器中add$v1,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v1寄存器中ori$a0,$v0,0xffff#ori测试程序要实现:v0寄存器中的内容与⽴即数0xffff进⾏或运算,储存在a0寄存器中sub$a1,$a0,0x0000ffff#sub测试程序要实现:a0寄存器中的值减去⽴即数0x0000ffff后存到a1寄存器中loop2:sub$a2,$v1,$v0#sub测试程序要实现:v1寄存器中的值减去v0中的值后存到a2寄存器中add$a1,$a2,$a1#add测试程序要实现:a2寄存器中的值加上a1后存到a1寄存器中beq$a1,$v1,loop2#beq测试程序要实现:判断a1的值和v1的值是否相等,相等转loop2机器码:3c0800043c090008340b2000ad680004014950208d6c00043c0d000401cd7822010d402001c870201109fff9010d40203c0200013c03000200431020004318203444ffff3c010*******ffff008128220062302200c52820 10a3fffdMARS模拟结果:Logism:GPR:DM:六、问答18.对于Figure5、Figure6中的与或阵列来说,1个3输⼊与门最终转化为2个2输⼊与门,1个4输⼊与门最终转化为3个2输⼊与门,依次类推。
(完整word版)32位单周期RISC处理器设计

第一章32 位单周期RISC处理器设计要设计一款处理器,首先要选择体系结构,本题选择的是RISC体系结构,因为它适合于流水线设计。
然后需要选择一个标准的指令集,本题选择的MIPS指令集并按照常规的五段流水的方式来实现流水线。
流水线的实现过程将在第二章介绍。
1.1目标处理器指令集与指令格式本题目标CPU以能实现部分MIPS指令为目标,具体指令如下表1:(slti)无条件跳跳转(jL)J转空操作空操作(nop)表1 目标CPU指令集1.2 从指令具体行为反推设计方案CPU要执行一条指令,不外乎需要完成以下几个过程:取指令,指令译码,将译码出的指令放到算术逻辑运算部件ALU上执行运算,根据ALU算得的访存地址进行访存和将访存的结果写回寄存器等。
当然,不同的指令类型(R、I、J)可能经过的过程稍有不同,即它们的数据通路有所不同,以下将具体介绍:1、R格式指令数据通路:1)从指令寄存器Instr MEM中取出指令,同时PC增值(即加1等待下个CLK到来);2.)寄存器单元rs1和rs2的内容从寄存器堆Reg File中读出;3.)ALU根据功能码Opcoder确定操作方式,对从寄存器堆读出的数据进行计算;4.)ALU运算结果被写入寄存器堆,由rd确定写入的寄存器堆存储单元地址。
图1 R指令数据通路2. I 指令(除lw、sw和分支指令)数据通路如图2:1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);2.)寄存器单元rs1的内容从寄存器堆Reg File中读出;3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;4.)ALU的运算结果被写入寄存器堆,由rt确定写入的寄存器堆存储单元地址。
图2 I 指令(除lw、sw和分支指令)数据通路3、Lw指令数据通路如图3:1.)从指令寄存器Instr Mem中取出指令,同时PC增值(即加1等待下个CLK到来);2.)寄存器单元rs1的内容从寄存器堆Reg File中读出;3.)ALU将从寄存器堆rs1单元中读出的数据与符号扩展后的指令低16位值相加;4.)将ALU的运算结果作为数据存贮器的地址读出相应单元的内容;5)把从数据存储单元取出的数据写入寄存器堆,由rt确定写入的寄存器存储单元地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八单周期处理器的实现
实验目的:
进一步理解数据通路、控制通路等基本概念
掌握处理器中控制器的基本设计方法
进一步理解单周期处理器以及多周期处理器的工作原理和设计思路实验要求:
设计和实现一个单周期处理器(60%)
可执行至少7条MIPS指令,add、sub、ori、lw、sw、beq、j
编写测试程序的二进制代码,测试实现的电路
撰写实验报告,dead line:5.19
设计和实现一个多周期处理器(40%)
Dead line:6.6。
实验报告:
(1)实验过程
1 控制器的设计与实现
控制器的功能
根据当前指令,生成处理器内部各部件所需要的控制信号
控制器的输入输出
输入:op[5:0],func[5:0]
输出:RegDst,ALUSrc,MemtoReg,RegWrite,MemWrite,Branch,Jump,ExtOp,ALUctr[2:0]
图表1 主控的设计
图表2 ALUCTR的设计
图表3 控制器的封装
2 ALU的设计与实现
ALU的功能
根据控制信号ALUctr[2:0],将输入端口的两个32位的数据进行加、减、与、或操作,并判断结果是否为0
ALU的输入输出
输入:A[31:0],B[31:0],ALUctr[2:0]
输出:OUT[31:0],Zero
ALU的实现
将运算器实验中实现的加减法扩展为32位
增加32位与、或功能
增加结果判零电路
根据ALUctr[2:0]信号确定ALU的输出
图表4 加法器的设计与封装
(由于上一个实验已做成ALU,这里不再赘述加法器的制作)
根据ADD/SUB信号判断实现加法或是减法,并且设置Zero
项输出,用作Beq指令的判定依据
图表5 加减法器的设计
图表6 ALU的封装
三寄存器文件的设计与实现
寄存器文件的功能
寄存器读:根据Rs,Rt的值读出相应寄存器的值,Rs对应
BusA,Rt对应BusB。
用多路选择器实现寄存器数据的选择。
寄存器写:当RegWR=1时,clk上升沿,将busW的值写入
Rw对应的寄存器。
用译码器实现寄存器的实现。
寄存器文件的输入输出
输入:Rs,Rt,Rw,RegWr,busW,clk
输出:BusA,BusB
寄存器文件的实现
使用Memory库中的register元件搭建
图表7 寄存器文件的实现
四立即数扩展部件的设计与实现
立即数扩展部件的功能
根据控制信号Extop的值,将十六位的立即数进行符号位扩展(Extop = 1)或者无符号扩展(Extop = 0)
立即数扩展部件的输入输出
输入:imm16,Extop
输出:imm32
立即数扩展部件的实现
当Extop = 1,并且imm16的高位为1时,imm32的高16为全为1 否则,imm32的高16位全为0。
因此立即数的高位与ExtOp信号做“与”操作,当且仅当结果为一时做逻辑扩展。
图表8 位扩展的实现
五取指部件以及指令存储器的设计与实现
取指部件的功能
根据当前PC及当前指令,计算下一PC
使用当前PC到指令存储器取指令
取指部件的输入输出
输入:Jump,Branch,Zero,Imm32,CLK
输出:Instruction[31:0]
取指部件的实现
当前指令为普通指令时,PC=PC+4
当前指令为beq指令时,若Zero=1,则PC = PC + 4 +SignExt[imm16];否则PC=PC+4
当前指令为j指令时,PC={PC<31:28>,target<25:0> ,“00”}
数据在取指传输通路中为30位,当其进入PC时,扩展为32位,但RAM地址只有24位,考虑地址输入到本实验中指令数目较少,只取数据的低二十四位作为RAM地址输入
图表9 取指部件的实现
六处理器的封装
七处理器的执行
第一条指令执行一号寄存器加二号寄存器的值,以3+7为例。
并将
结果存入三号寄存器。
第二条指令将三号寄存器的值存入数据存储器的九号单元
第三条指令将数据存储器九号单元的数据存入四号寄存器
第四条
11。