简单16位CPU的设计
简单CPU的设计
设计步骤:
1)确定CPU功能
2)拟定指令系统(采用MIPS)
3)分析指令系统,为数据通路选择合适的组件,并给出组件
所需的控制信号,连接组件建立数据通路
4)详细分析指令在多周期通路中的执行过程,给出指令执行
的流程图
5)依据指令执行的流程图,分析控制信号的取值,生成相应
的状态转换图
一、确定CPU功能
M[2]←M[0]+M[1]
二、拟定指令系统
J类型
4位12位
指令格式中的op(opcode)是指令操作码。
rs(register source)是源操作数的寄存
器号。
rd(register destination)是目的寄存器号。
rt(register target)即可作为源寄
存器号,又可作为目的寄存器号,有具体的指令决定。
func(function)可被认为
是扩展的操作码,Target表示一下个地址开始
注:操作码4位,寄存器字段rs,rt,rd各三位,Fun功能字段3位,Imm立即值字段6位;一共8个寄存器,R0只读不可写,恒为0。
R类型的指令
ADD Rd,Rs,Rt
SUB Rd,Rs,Rt
AND Rd,Rs,Rt
OR Rd,Rs,Rt
XOR Rd,Rs,Rt
I类型的指令
LW Rt, Rs,imm6
SW Rt, Rs,imm6
存放在ROM中的汇编指令,完成M[2]←M[0]+ M[1]
LW R1,0(R0);R1←M[R[0]+0],由于R(0)内容为0,即R1←M[0] LW R2,1(R0);R1←M[R[0]+1],由于R(0)内容为0,即R1←M[1] ADD R3,R1,R2 ; R3←R1+R2
SW R3,2(R0) ; M[R[0]+2]←R3
下面地址对应着rom模块里面
LW表示读取数据,SW表示存储数据,BEQ表示相等就跳转,J表示直接跳转到某个地址
三、根据指令的需求,连接组件,形成多周期的数据通路
irwr,pcwr,regwr,aluoutregwr,memwr,lmdwr:相应组件的写使能控制信号,为1时,有效
Regdst: 为1时选择RD;为0时选择RT.
Signex:为1时扩展器进行符号扩展;为0时扩展器进行零扩展。
Aluselb:为1时选择暂存器B;为0时选择扩展器的输出端。
Alufunc:0000与运算;0001或运算;0010异或;0011取反;0100加;0101减
Memtoreg:为1时选择LMD;为0时选择aluoutput
关键组件
1)寄存器及寄存器组
●设计带复位(清零)、写使能控制功能的16位寄存器(PC),
当复位信号为1时,寄存器输出0,否则,在时钟下降沿且写
使能信号有效时将输入数据传送至输出端。
●设计带写使能控制功能的16位寄存器(ALUO、LMD),在
时钟下降沿且写使能信号有效时将输入数据传送至输出端。
●设计暂存器(暂存器A、B),在时钟下降沿将输入数据传送至
输出端。
●设计指令寄存器(IR), 在时钟下降沿且写使能信号有效时将
输入指令传送至输出端,并且分解出指令的op、rs、rt、rd 、func、imm字段。
●设计由8个寄存器构成的16位通用寄存器组。
通用寄存器组
有两个读口,ReadOne 和ReadTwo分别读出由RegOne和
regTwo指定编号的寄存器中的信息,读操作属于组合逻辑操
作,不需时钟控制;有一个写口,WriteData上的信息写入由
WriteReg指定编号的寄存器中,写操作属于时序逻辑操作,需
要clk时钟信号的控制,在WriteEnable为1的情况下,clk
下降沿完成信息的写入。
图1PC元件图符
图 2 寄存器元件图符
图3暂存器元件图符
图4 IR 元件图符图5 寄存器组的元件图符
2)RAM 及ROM
●设计存储容量为64×16的RAM
写操作为时序逻辑操作,当时钟clock下降沿到来且wren=1的情况下,data开始写入由address指定的存储单元中;读操作为组合逻辑操作,address有效后,q输出address指定的存储单元的内容.
定制初始化数据文件,建立Memory Initialization File(.mif)文件,选择File→New命令,并在New窗口选择Other file
选项,再选择Memory Initialization File选项。
出现如图1
所示的窗口,指定存储容量,字的个数输入64,字长输入
16。
之后,出现如图2所示的窗口,向存储单元中输入初
始化数据,选择地址及存储内容采用16进制。
输入数据后
保存文件,文件名ram1.mif。
初始化0单元数据为90H,1
单元数据为60H。
图1 指定存储容量窗口图2 初始化数据窗口
设计存储容量为64×16的ROM
ROM为只读存储器,读操作为组合逻辑操作,Q输出由ADDRESS指定的存储单元的内容。
3)ALU
设计具有下列功能的16位ALU
ALU的元件图符4)指令执行流程图
5)状态转换图。
组成原理课程设计(16位全加器电路的设计与实现)
16位全加器电路的设计与实现学生姓名:杨传福指导老师:王新摘要本课程设计主要利用门电路完成一个16位的全加器电路的设计与实现。
本设计采用逐步求解的方法,即先设计一位全加器,再利用一位全加器设计出四位全加器,最后在四位全加器的基础上设计出16位全加器,并使用VHDL语言编写程序,在MAX-PLUSⅡ仿真平台上进行仿真。
仿真结果表明,本课程设计中设计出的16位全加器能正确完成16位二进制数的加法运算。
关键词全加器;门电路;先行进位Abstract:This curriculum design primarily use the gate circuit to complete a 16-bit full-adder circuit.The design solve this problem with step-by-step approach, namely start designing one full-adder, and then use one full-adder design a four full-adder , the last design the 16-bit full-adder based on the four full-adder,and use VHDL language programming, at MAX-PLUS Ⅱsimulation on simulation platform. The simulation results show that the design of the curriculum design of the 16-bit full-adder to add a 16-bit binary number addition operations.Keywords:Full-adder; Gate circuit; First binary1引言1.1课程设计的背景随着计算机科学技术的发展,人们获得信息的途径更加多样,获取信息的速度更加快捷。
新编16_32位微型计算机原理及应用(李继灿主编)课件第2章
2. I/O空间: 486利用低16位地址线访问I/O端口,所 以I/O端口最多有216=64K,I/O地址空间为 0000H~FFFFH。 注意:I/O地址空间不分段 I/O地址空间与存储空间不重叠 CPU有一条控制线M/IO,在硬件设计上用 M/IO=1,参与存储器寻址,用M/IO=0参与 I/O寻址。 从PC/XT~Pentium,基于Intel微处理器的 系统机,实际上只使用低10位地址线,寻址 210=1024个I/O端口。
指 代码流 预取 令 译 指令 码 24位 2*16 总线 器
数据总线 线性地址总线 32 32
A2~A31 BE0~BE3 系统 地址总线
D0~D31 系统 数据总线
控制 总线
控制ROM 控制部分
系统 控制总线
指令队列
译码部分 指令预取部分
总线接口部分
一. 7个功能块: 1.总线接口单元: 产生三总线信号,进行存储器和I/O端口 的访问。
地址(32位) A2~A31、BE0~BE3 地址驱动器 系统地址总线
数据(32位) 写缓冲器 4*80 D0~D31 数据(32位) 数据总线收发器 系统数据总线 控制总线 系统控制总线
2.高速缓冲存储器(CPU内部的Cache): 存放从存储器中取出的最近要执行的指 令和数据,这样CPU就只需从Cache中取指令, 不必经常访问存储器了。
指 运算部分 微指令 令 代码流 控制部分 指令 译 24位 码 总线 器
指 令 预 取 队 列
5.控制器: 控制器采用微程序设计,根据指令译码 器送来的信息产生微指令,对运算器、存储 器管理部分……发出控制信号。 存储管 指 控制与保护 理部分 令 微指令 部件 译 运算部分 码 控制ROM 器 控制器
MIPS的指令的CPU(14条指令)logisim仿真软件编写
MIPS的指令的CPU(14条指令)logisim仿真软件编写⼀、课程设计题⽬基于FPGA(或者Logisim 软件仿真)实验平台,完成16位单周期CPU设计。
⼆、课程设计的⽬的与意义本课程设计综合利⽤计算机组成原理课程所学的理论知识,并结合其单元实验中所积累的计算机部件设计和调试⽅法,设计出⼀台具有⾃定义指令系统的简单计算机系统。
所设计的系统能在基于FPGA(或者Logisim)平台上运⾏⼀段⽤户程序,通过检查程序结果的正确性来判断所设计的计算机系统的正确性。
三、课程设计的内容设计模型机系统的指令系统、总体结构和时序信号。
要求所设计的整机系统能⽀持⾃动和单步运⾏⽅式,能正确地执⾏存放在主存中的⽤户程序,并且对主要的数据流和控制流通过适当⽅式显⽰;验证实验结果。
①该单周期CPU实现的指令如下:(从中⾄少选取10条指令,其余指令可以⾃⼰设计;⾄少要选择1条R-型指令、1条⽴即数运算指令、Load 指令(读)、Store指令(写)、1条分⽀指令和⽆条件转移指令;)表1选取指令及格式指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能1 or 0 rs rt rd 0 0 $rd = $rs | $rt2 and 0 rs rt rd 0 1 $rd = $rs & $rt3 add 0 rs rt rd 0 2 $rd = $rs + $rt4 sub 0 rs rt rd 0 3 $rd = $rs - $rt5 sllv 0 rs rt rd 0 4 $rd = $rs << $rt 逻辑左6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt 逻辑右7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算术右8 slt 0 rs rt rd 0 7 $rd = ($rs < $rt) ? 1 :010 lui 2 0 rt immediate-u $rt = imm << 811 ori 3 rs rt immediate-u $rt = $rs | imm12 andi 4 rs rt immediate-u $rt = $rs & imm13 addi 5 rs rt immediate-s $rt = $rs + imm14 lw 6 rs rt immediate-s $rt = MEM[$rs + imm]15 sw 7 rs rt immediate-s MEM[$rs+imm] = $rt16 beq 8 rs rt offset-s beq =?17 bne 9 rs rt offset-s bne != ?18 bgt 10 rs rt offset-s bgt >?(有符号⽐较)19 jump 11 jump address jump20 halt 12 0 halt (时钟暂停)②编写⼀段包含所有指令的测试程序,将测试程序的机器语⾔存⼊ROM,运⾏测试程序,并对运⾏结果与理论运算结果对⽐(⽤表格对⽐), 判断每⼀步对错。
CPU-与简单模型机设计实验
评语: 课中检查完成的题号及题数:课后完成的题号与题数:成绩: 自评成绩: 85实验报告实验名称:CPU 与简单模型机设计实验日期:2015.11.17 班级: 2 学号:13 姓名:周小多一、实验目的:1. 掌握一个简单CPU 的组成原理。
2. 在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。
3. 为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。
二、实验内容:1.要实现一个简单的CPU,并且在此CPU 的基础上,继续构建一个简单的模型计算机。
CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图2-1-1 所示。
这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意义,所以还需要在该CPU 的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。
2.本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码):助记符机器指令码说明IN 0010 0000 IN→R0ADD 0000 0000 R0 + R0→R0OUT 0011 0000 R0→OUTJMP addr 1100 0000 addr→ PCHLT 0101 0000 停机3. 设计一段机器程序,要求从IN 单元读入一个数据,存于R0,将R0 和自身相加,结果存于R0,再将R0 的值送OUT 单元显示。
根据要求可以得到如下程序,地址和内容均为二进制数。
地址内容助记符说明00000000 00100000 ; START: IN R0 从IN 单元读入数据送R000000001 00000000 ; ADD R0,R0R0 和自身相加,结果送R000000010 00110000 ; OUT R0R0 的值送OUT 单元显示00000011 11100000 ; JMP START跳转至00H 地址00000100 0000000000000101 01010000 ; HLT停机三、项目要求及分析:1. 试修改现有的指令系统,将加法指令的功能修改为R0的内容和某个存储单元的内容相加;增加存数、取数和减法三条机器指令,指令助记符分别为STA、LAD 和SUB,指令操作码分别为十六进制的60、70和80。
第2章 16位微处理器
表2.2 段寄存器使用时的一些基本约定
思考题
下列CPU中属于准16位的是 A.8080 B.8086 C.8088 。 D.80386SX A.ALU,EU,BIU C.寄存器组,ALU 答案: C
思考题
8086CPU的内部结构由 组成。 B.ALU,BIU,地址加法器 D.EU,BIU
答案:D
思考题
例题
设(CS)=4232H ,(IP)=0066H,试计算物理地址。
思考题
已知物理地址为FFFF0H,且段内偏移量为 A000H,若对应的段基址放在DS中,则DS 应为 。 A.5FFFH B.F5FFH C.5FFF0H D.F5FF0H 答案:B
注意
一个存储单元的物理地址是唯一的,而逻辑 地址是可以不唯一的。 例如: 1200H:0345H12345H 1100H:1345H12345H
第2章 16位微处理器8086/8088
2.1.0 简介 2.1.1 8086/8088CPU的内部结构 2.1.2 8086/8088CPU的总线周期 2.1.3 8086/8088系统的工作模式 2.1.4 8086/8088的操作和时序 作业
2.1.0 简介
1978年,Intel推出了8086微处理器,一年多以后推出了 8088,这两种都是16位微处理器。 时钟频率为5MHz~10MHz,最快的指令执行时间为400ns。 8086有16根数据线:可以处理8位或16位数据。 有20根地址线:可寻址即1MB(220)的存储单元和 64KB(216)的I/O端口。 8088:准16位微处理器 8088的内部寄存器、运算器以及内部数据总线都是按16位设 计的,但外部数据总线只有8条,因此执行相同的程序, 8088要比8086有较多的外部存取操作而执行得较慢。 设计的主要目的:为了与Intel原有的8位外围接口芯片直接 兼容。
清华大学 微机原理课件 CPU设计ALU
ALU电路设计
(2)移位器
采用2:1多路选择器构造的8位右移位器
A7 A6 A5 A4 A3 A2 A1 A0 S2 S1 S0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0 R7
1
0 R6
1 R5
0
1 R4
0
1 R3
0
1 R2
0
1 R1
0
1 R0
0
MSB的输入如何? 32位移位器需要多少级?
CPU逻辑设计
—— ALU电路设计
1
MIPS对ALU的需求
Add, AddU, Sub, SubU, AddI, AddIU =>带溢出检测和反向器的补码加法器 SltI, SltIU(Set Less than) =>带反向器的补码加法器,检测结果的符号 And, Or, AndI, OrI =>逻辑或、逻辑与
B12 B11 B10 B9
B11 B10 B9 B8
B6 B5 B4 B3
B5 B4 B3 B2
B4
B3 B2
B1
B3
B2 B1
B0 S1 S0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
大师教你如何制作一个简单的16位CPU
mv指令将Ry的数据转移到Rx中,mvi将立即数D转移到Rx当中,add将Rx和Ry的和放到Rx中,sub同上,不过执行的是减法。 首 先来说明mv指令是如何执行的:mv指令将Ry的值移入Rx寄存器当中,这两个寄存器都是由一组D触发器构成,而D触发器的个数取决 于寄存器的宽度,就像 32位机、64位机这样,那他们的寄存器使用的D触发器的个数就是不一样的。当执行mv rx,ry时,中间的多路器(图 中最大的那个multiplexer)选通Ry,让Ry寄存器驱动总线,这个时候Bus上的信号就是Ry的值;然后再看到 R0~R7上分别有R0in~R7in信 号,这个信号是使能信号,当这个信号有效时,在上升沿此触发器会将din的数据输入,所以说到这里大家一定想到 了,这个时候Rx触发 器上的Din信号就会变为有效,这样过了一个时钟周期后Ry的值就被送到了Rx当中。 与mv指令类似,mvi指令也将一个数据送入Rx当中,只不过这次的数据存在指令当中,是立即数,所以Rx的Din信号会变为有效,而多路 器会选择IR中的数据,因为mvi指令的立即数存在指令当中。并且进行一定处理,例如扩展等。 add 指令会让多路器先选择Rx,然后Ain信号有效,这样一个时钟周期后,Rx数据被送入Alu的A寄存器当中,这时多路器选择 Ry,addsub信号为 add以指示ALU进行加法操作,Gin有效让G寄存器存放运算结果,然后再过一个时钟周期G当中的数据就是Rx与Ry的 和,这时多路器再选择 Gin,Rx的Din有效,过了一个时钟周期后数据就被存放到Rx当中了。 sub的过程与add差不多,不过addsub信号是sub指示ALU进行减法。 【分页导航】
计算机组成原理CPU设计实验报告
计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。
《简化CPU设计》-
电子科技大学通信学院简化CPU设计2013年9月一、课程设计要求1.设计16位精简指令集CPU指令系统;2.完成精简指令集CPU的结构设计和所有模块的代码编写,并仿真验证;3.编写能够完成加法器﹑流水灯等功能的汇编程序,并翻译成二进制机器码;4.设计CPU外围模块如分频器,存储器和IO接口,并在软件平台上仿真CPU执行程序的完整过程;5.下载工程到FPGA芯片,在硬件资源上实现。
二、设计思路1、CPU指令集系统设计本课程设计所设计的RISC_CPU指令长度为16位,能够处理16位数据,指令中需要操作符,寄存器地址和立即数等字段。
完成立即数数据载入操作需要如下指令:mil:将立即数放在低8位mih:将立即数放在高8位因为一条指令无法载入完整16比特立即数数据,设计指令格式中用于存放立即数的字段为8bits,将16bits数据传递到通用寄存器需要2条指令,“mil R1,I(低8位)”将立即数I 的低8位传递给通用寄存器R1,“mih R1,I(高8位)”将立即数I的高8位传递给通用寄存器R1。
完成存储器或I/O数据载入与存储的操作需要如下指令:lda:载入指定地址数据sta:储存数据到指定地址inp:从端口输入oup:输出到端口因为存储器中有些地址的数据可能是有工程意义的,对这些地址上的数据的处理是必不可少的。
“lda Rd Rs”将通用寄存器Rs的数据作为指定地址,将存储器中该地址上的数据载入到通用寄存器Rd中,“sta Rd Rs”将通用寄存器Rd的数据作为指定地址,将通用寄存器Rs的数据储存到存储器该地址上。
完成通用寄存器阵列内数据运算操作需要如下指令:and:寄存器数据与操作orr:寄存器数据或操作not:寄存器数据非操作shl:左移shr:右移add:寄存器数据相加sub:寄存器数据相减mul:寄存器数据相乘cmp:寄存器数据相比较这些是本CPU设计能够完成的数据处理操作,有3点需要注意:1、所有操作的数据必须储存于通用寄存器中2、乘法运算只能进行8比特数据相乘,溢出则取其低8位数据相乘3、cmp指令的结果会影响标志位,该标志位可作为分支操作的条件,但执行cmp指令之前建议先清除相关标志位。
第4章 16位CISC CPU设计_2
6.1.2指令系统设计
LOADI指令:将立即数装入寄存器
举例:将立即数0021h装载到R1寄存器
LOADI R1,0021h; #0021hR1 十六进制指令 (双字) 2001h 0021h
二进制指令(双字) 操作码 00101 空位填零 00000000000
立即数:0000000000000110
6.1.2指令系统设计
BRAGTI指令:比较大于时转移到立即数指定的程序地址 举例:设比较数存放在R1、R2寄存器中,当R1>R2时,程 序转移到立即数0006h指定的地址执行,否则执行 下一条指令 BRAGTI R1,R2,0006h; # R1>R2, 0006hPC
6.1 顶层系统设计
(2)双字指令
空位填零
图6-2 双字指令格式
空位填零
图6-3 双字节指令
2 . 指 令 操 作 码 表 6-1 操 作 码 功 能 表
KX
康芯科技
6.1.2指令系统设计
NOP指令:空操作
举例:NOP;
二进制指令 操作码 00000 空位填零
#PC+1PC
十六进制指令
00000000000
二进制指令(双字) 操作码 00100 空位填零 00000000 目的操作数 001
立即数:0000000000100001
6.1.2指令系统设计
BRAI指令:无条件转移到立即数指定的程序地址
举例:程序转移到立即数0006h指定的地址执行
BRAI 0006h; #0006hPC 十六进制指令 (双字) 2800h 0006h
