文档库 最新最全的文档下载
当前位置:文档库 › cpu设计报告11

cpu设计报告11

cpu设计报告11
cpu设计报告11

基于VHDL的8位CPU设计

设计要求

按给定的数据格式和指令系统,运用“数字系统设计”课学得的知识,用vhdl或verilog 语言设计一个8位的具有复杂指令的CPU系统。

指令系统

寻址方式:

1.立即数寻址

操作码r1

数据

2.立即地址寻址

操作码

地址

3.寄存器直接寻址

操作码r1 r2

r1和r2的状态为00时,为A寄存器;为01时,为B寄存器;为10时,为C寄存器。

4.寄存器间接寻址

操作码r1/11 r2/11

当r1或r2中有一处为“11”状态时,就表示这个操作数的地址在C寄存器中。

指令系统:

该机给定的指令系统共有28条指令,各条指令的编码可以是多种多样的。因此还可以扩展该指令系统。

指令的汇编符号指令的二进制编码第二字节

1.MOV r1 r2 0 0 1 1 r1 r2

2.MOV M r2 0 0 1 1 1 1 r2

3.MOV r1 M 0 0 1 1 r1 1 1

4.MVI r1 data 1 0 1 1 r1 0 0 data

5.MVI M data 1 0 1 1 1 1 0 0 data

6.STR address r2 1 1 0 0 0 0 r2 address

7.LDR r1 address 1 1 0 1 r1 0 0 address

8.ADD r1 r2 1 0 0 1 r1 r2

9.ADD r1 M 1 0 0 1 r1 1 1

10.SUB r1 r2 0 1 1 0 r1 r2

11.SUB r1 M 0 1 1 0 r1 1 1

12.INR r1 1 1 1 1 r1 XX

13.INR M 1 1 1 1 1 1 XX

14.DCR r1 0 0 0 0 r1 XX

15.DCR r1 0 0 0 0 1 1 XX

16.AND r1 r2 1 1 1 0 r1 r2

17.AND r1 M 1 1 1 0 r1 1 1

https://www.wendangku.net/doc/a17315552.html, r1 0 1 0 1 r1 XX

19.SHR r1 1 0 1 0 r1 0 0

20.SHL r1 1 0 1 0 r1 1 1

21.JMP address 0 0 0 1 0 0 0 0 address

22.JZ address 0 1 1 0 1 1 0 0 address

23.JCN address 0 0 0 1 1 0 0 0 address

24.JCZ address 0 0 0 1 1 1 1 1 address

25.IN r1 0 0 1 0 r1 XX

26.OUT r1 0 1 0 0 r1 XX

27.NOP 0 1 1 1 0 0 0 0

28.HALT 1 0 0 0 0 0 0 0

数据通路

计算机的工作过程,可以看成有许多不同的数据流和信号流在机器各部分之间进行传送,数据流所经过的路程就称作数据通路。数据通路不同,指令执行所经过的操作过程也不同,机器的结构也就不一样。本设计的要求的数据和指令都是8位的,所以同时采用并行工作方式和单总线结构。

1.算术运算类指令对数据通路的要求

完成加法指令:(r1)+(r2)=>r1

完成这个指令的基本操作为:

1)在某个控制信号的控制下,从r1指定的寄存器中取出第一操作数,送入A暂存器暂存起来。

2)在另一个控制信号的控制下,从r2指定的寄存器中取出第二操作数,送入B暂存器暂存起来。

3)对算术逻辑运算部件发出的相应的选择信号,使其完成操作码所要求的操作,对两个暂存器内的数进行运算,运算的结果定义在某一个信号控制下送回r1所指定的寄存器。

2.传送类指令对数据通路的要求

完成的指令为(r2)=>r1

1)在RE的控制下,由r2所给定的编码选择RA0,RA1从寄存器组中读出r2的内

容,并由loada送入A暂存器。

2)选择ALU的控制信号,使暂存器的数据直接通过ALU送入总线BUS,再由WE 控制和r1给定的编码选择,将BUS上的数据写入通用寄存器r1中。

完成的指令为(r2)=>((C))

1)在RE的控制下,从C寄存器中读出的内容送入MAR。

2)在RE和r2的控制下,读出r2的内容,经过A暂存器。经过ALU送入总线,然后在CS和XL的配合下,写入MAR指定的内存单元。

立即数传送

1)将程序计数器PC的内容送ROM,然后PC的内容加1

2)对RAM发出CS和DL控制信号,把ROM的内容读到总线上,并在WE和r1控制下,写入寄存器组中的r1中。

数据通路可以修改为寄存器与内存中的数据可不再经过ALU传送。

3.移位指令对数据通路的要求

操作过程是:

1)在RE的控制下,由r1所给定的编码选择RA0,RA1从寄存器组中读出r2的内容,并由loada送入A暂存器。

2)选择ALU的控制信号,使暂存器的数据直接通过ALU送入总线BUS前完成移位,再由WE控制和r1给定的编码选择,将BUS上的数据写入通用寄存器r1中。

这就要求有移位模块,所以在ALU后面再加一个移位寄存器。最后确定的数据通路如下:

RAM ALU

MAR

PC

Register

loada IR

SEQUENCER

ROM

S

B

S Bus i

Bus i-1

Bus i+1

右移不移

左移

3

S 2S 1S 0S M

loadb B

S A

S 0RA 1RA 0WA 1

WA WE

PC_ Bus

DL XL

CS

Loadmar

PC_load

PC_inc

RE

TRI_reg

INPUT

状态流程

机器指令的CPU 操作流程图是根据模型机的硬件设计、指令系统、所有指令的解释过程和控制信号的时序设计出来的,如下图所示。图中每一个方框执行的时间为一个时钟周期,对应一条微指令。框中上面的四位二进制数表示的是当前指令的操作码,框内是控制信号的产生情况。图中只画了四种常用的指令,其他指令的情况可以同样得到。

S0:PC_bus=1 AR_load=1 S1:DR_bus=1 IR_load=1

Case:outinstr

Mvi1:PC_bus =1 AR_load = 1 PC_inc <= 1Add1:Loada=1

RA0=outr1(1)

RA1=outr1(0)

RE=1

Shl:Loada<=1

RA0<=outr1(1)

RA1<=outr1(0)

RE<='1'

Jcz:PC_bus= 1

AR_load = 1

PC_inc = 1

1011

If:outr1!=11

1001

If:outr2!=11

0001

If:outr2=11

1010

If:outr2=11

Mvi2:DR_bus= 1

WE<=1 WA0=outr1(1) WA1=outr1(0)

S0

Add10:Loadb=1

RA0=outr2(1)

RA1=outr2(0)

RE=1

Add11:ALU_sel=

plus;shipass<=

1;M<=1;AC_bus<

=1;WE<=1;WA0<=

outr1(1);

WA1<=outr1(0);

S0

Shl1:Shl<=1

AC_bus<=1

WE<=1

WA0<=outr1(1)

WA1<=outr1(0)

S0

if yz=0

DR_bus =1

PC_load=1

S0

Y N

S0

顶层设计

在vhdl顶层模块里,把各个小模块例化后,然后映射各个端口就把整个cpu连接好了。

entity WORK.XX port map(clock,reset,……);

XX代表各子模块的实体,经过port map映射按照实体中同样的顺序排列好顶层模块中的信号即可实现。

clkk

reset

start inbus[7..0]sy sbus[7..0]

simCPU

inst1

Clkk:为输入时钟脉冲

Reset:为复位键

Start:遇到halt指令后,需要按一下此键让测试程序继续运行。

Inbus:从开关中输入数据

Sysbus:总线上的数据输出

各模块介绍

(一)ALU模块

M

clock

reset

ALU_sel[3..0] a[7..0]

b[7..0]

y z

aluout[7..0] ALU:p1

ALU的功能主要有:直通数据,与,或,异或,非,加法,减法,加1,减1,清0。通过ALU_sel[3..0]选择这些操作,M的作用已在这儿发生了变化,它不再有选择操作的功能,而是成了进位输出的控制位,只有当M=1时,进位标志yz才允许输出。

(二)IR模块

IR_load clock reset sysbus[7..0]

outinstr[3..0]

outr1[1..0]

outr2[1..0] IR:i1

指令寄存器模块的功能是把ROM里面输出的指令通过IR_load载入到里面,然后分成三个部分,其中outinstr为高四位,可以判断指令是哪一条组成。后面四位分成两个两位,分别对应两个寄存器。这些输出都到控制器里面,由控制器判断指令并生成相应的控制信号。

(三)PC模块

PC:a1

PC_bus

PC_inc

PC_load

clock

reset

sy sbus[7..0]

PC模块有三个控制命令PC_bus把PC的地址送到总线上;PC_load从总线上载入地址,一般用于跳转指令;PC_inc把PC的内容加1,每读一条指令时都需要对PC进行加1操作。

(四)RAM模块

RAM:ram1

CS

DL

XL

clock

reset

ADDR[7..0]

sy sbus[7..0]

为了节省门电路,只分配了32个内存单元,即地址为为低五位有用,每一个地址都对应一个内存单元。CS控制信号作为允许三态输出的功能,DL就是把数据从总线读到对应的地址单元中,而XL就是把总线上的数据写到对应的地址单元中。

(五)ROM模块

AR_load

DR_bus

clock

sy sbus[7..0]

ROM:rom1

ROM的功能是存储测试程序的,每一条地址对应一条指令,地址位从00H开始一直往后面加。AR_load是从PC中载入指令的地址,然后DR_bus控制从对应的地址输出指令。

(六)Reg模块

clk

load a[7..0]

q[7..0] reg:ra

Reg就是一个8位的寄存器,它在这个设计中使用了三次,分别用于A,B暂存器和地址寄存器。

(七)Registers模块

RA0

RA1

RE

WA0

WA1

WE

clock

reset

sy sbus[7..0]

registers:regs

此为寄存器组模块,绝大多数指令取操作数或是存操作数都是从中调用数据,其中的控制指令有六条。RE,RA0和RA1控制读数据,RE同时也作三态使能信号。RA0和RA1则确定调用哪个寄存器,00为A寄存器,01为B寄存器,10为C寄存器。WE,WA0和WA1控制写数据,同样WA0和WA1则确定调用哪个寄存器。

(八)移位寄存器模块

AC_bus

clock

reset

shipass shl

shr

a[7..0]

y[7..0] shift:shift1

AC_bus作为移位寄存器的三态输出使能信号,shipass是直通信号,shl是左移信号,shr 是右移信号。

(九)三态寄存器模块

clk

load a[7..0]

q[7..0] trireg:rin

尽管引脚与普通寄存器的引脚是一样的,但其中load控制信号的含义不同,普通寄存器的load是作为载入数据的信号,即当load有效时,数据可以从总线存到寄存器中;而三态寄存器的load信号是三态使能控制信号,即当load有效时,数据允许从寄存器输出到总线。

(十)控制模块

clock

reset

start

y z

outinstr[3..0] outr1[1..0] outr2[1..0]

AC_bus

AR_load

CS

DL

DR_bus

IR_load

M

PC_bus

PC_inc

PC_load

RA0

RA1

RE

WA0

WA1

WE

XL

loada

loadb

loadin

loadmar

shipass

shl

shr

ALU_sel[3..0] sequencer:s1

所有的控制信号都是从控制模块中产生,控制模块中含有两个进程。第一个进程为切换状态的进程,即把下一个状态赋给当前状态。

if reset='1' then

present_state <= s0;

elsif rising_edge(clock) then

present_state <= next_state;

end if;

第二个进程为产生控制指令,根据当前的状态,产生适合当前指令的控制信号,按照状态流程图产生控制信号。

(十一)分频模块

clk reset

clk1

clk2 fre2:f1

因为某些模块的时钟需要比状态改变的时钟频率要快,所以需要对时钟进行分频处理。Clk为输入时钟,clk1不做改变,而clk2则进行分频处理,本设计中采用的是10分频,即一个指令周期包含10个节拍。

汇编测试程序

设计一个输入一个数,然后算出其平方的程序,思想为先把输入的数放入一寄存器,再把这个数与自己相加,加的次数为这个数本身,如5*5,即为把5本身自加5次,即为此数的平方。在次试验中,先设计出汇编程序,再根据汇编程序写出其机器码。

设计程序为:

IN A ——输入A

HALT ——停止

MOVE C A ——把A放入C寄存器

MOVE B A ——再把A放入B寄存器

ADD A B ——A加B

DCR C ——C自减

JCZ ——如果C不为0,跳转到ADD A B

SUB A B ——A寄存器的值减B

SUB A B ——A寄存器的值减B

OUT A ——输出A

HALT ——停止

测试两组输入数据:

第一个数据:3 输出结果为:9

第二个数据:4 输出结果为:16

精简8位cpu设计报告

精简8位cpu实验设计报告 实验介绍: 实验分为两个部分,第一部分为16*8 ROM 设计与仿真 第二部分为SAP-1 设计与仿真 实验流程: ①16*8 ROM 的设计与仿真 Rom16_8.VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16_8 is PORT( DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --Data Output ADDR :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip Enable ); END ROM16_8; ARCHITECTURE a OF ROM 16_8 IS BEGIN DATA<=“00001001”WHEN ADDR=“0000”AND CE=‘0’--LDA 9H “00011010”WHEN ADDR=“0001”AND CE=‘0’ELSE --ADD AH “00011011”WHEN ADDR=“0010”AND CE=‘0’ELSE --ADD BH “00101100”WHEN ADDR=“0011”AND CE=‘0’ELSE --SUB CH “11100000”WHEN ADDR=“0100”AND CE=‘0’ELSE --OUT “11110000”WHEN ADDR=“0101”AND CE=‘0’ELSE --HLT “00010000”WHEN ADDR=“1001”AND CE=‘0’ELSE “00010100”WHEN ADDR=“1010”AND CE=‘0’ELSE “00011000”WHEN ADDR=“1011”AND CE=‘0’ELSE

计算机组成原理CPU设计

1 CPU的用途 字长:8位D[7…0] 寻址围:64byte,2的6次方=64,A[5…0] 2 确定ISA(包括程序员可访问的寄存器) 1)程序员可访问的寄存器AC—8位累加器 3 CPU设计状态图 为了确定CPU的状态图,对每条指令作以下分析 1)从存贮器中取指令(所有指令均相同) 原理:在CPU能执行指令之前,它必须从存贮器中取出,CPU通过执行如下的操作序列完成这个任务 A)选择存贮单元由A[5…0]确定 B)对工A[5…0]译码,延迟,并向存贮器发一个信号使存贮器将此指令输出到它的输出引脚。这些引脚与CPU的D[7…0]相连。CPU从这些引脚读 入数据。 具体操作:(分为三个状态) A)要取的指令的地址存放在程序计数器(PC)中。第一步就是把PC的容拷贝到AR中。 FETCH1:AR←PC B)CPU必须从存贮器中读取指令,为此CPU必须发一个READ信号到器的RD(RD-RAM,相对于OE-ROM)端上使存贮器将数据发送到D[7…0]上,存入 CPU的DR寄存器中。同时实现PC←PC+1,为取下一条指令作准备。 FETCH2:DR←M,PC←PC+1 C)作为取指令的一部分,CPU还必须完成两件事。 ①DR的高2位拷贝到IR,目的是确定指令的功能 ②DR的低6位拷贝到AR,目的: a. 对于ORT和SUB1指令这6 位包含了指令的一个操作数的存贮器 地址(一个数已经在AC) b. 对于COM和JREL,它们不需要再次访问存贮器,一旦它们返回

到FETCH1周期,FETCH1将把PC的值装到AR,覆盖无用的值。 FETCH3:IR←DR[7,6], AR←DR[5…0] 取指令周期的状态图 2)指令译码(每条指令的操作码都是唯一的) 本CPU有四条指令,因此有四个不同的执行同期,为此用IR中的值来确定即可。 3)指令执行(每条指令的执行周期都是一样的) 每条指令的执行周期的状态分析: 1.COM指令 功能是对AC的容取反,执行周期的状态是 COM1:AC←AC’ 2. JREL指令 代码为01AAAAAA,即转移的相对地址由AAAAAA确定,而AAAAAA在 DR[5…0]中,所以有 JREL1:PC←PC+ DR[5…0] 3.OR指令 为了执行指令,必须完成两件事情 OR1:DR←M;从存贮器取出一个操作数送到数据寄存器 OR2:AC←AC∨DR;与AC相或,并把结果存回AC中 4. SUB1指令 为了执行指令,必须完成两件事情

数据通路实验报告

非常简单CPU数据通路设计实验报告非常简单CPU数据通路设计【实验目的】 1. 掌握CPU的设计步骤 2. 学会芯片的运用及其功能 【实验环境】 Maxplus2环境下实现非常简单CPU数据通路的设计 【实验内容】 非常简单CPU的寄存器:一个8位累加器AC,一个6位的地址寄存器绘制 AR,一个6位的程序计数器PC,一个8位的数据寄存器DR,一个2位的指令寄存器IR。其数据通路详见教材P。 1、零件制作 6位寄存器 (自行设计) 6位计数器 (自行设计) 8位寄存器 (可选择74系列宏函数74273) 8位计数器 (由两个74161构成) 2位寄存器 (由D触发器构成,自行设计) 6三态缓冲器 (自行设计,可由74244内部逻辑修改而成) 8三态缓冲器 (选择74系列宏函数74244,或作修改) alu模块 (自行设计,限于时间,其内部逻辑不作要求) 2、选择器件,加入数据通路顶层图 8位累加器AC:选择8位计数器 6位地址寄存器AR:reg6 6位的程序计数器PC:cou6

8位的数据寄存器DR:选择8位寄存器 2位的指令寄存器IR:选择2位寄存器 3、为PC、DR加入三态缓冲器。 4、调整版面大小,器件位置。 5、设计地址引脚、数据引脚、8位内部总线,加入数据引脚到内部总线的 缓冲器。 6、连接各器件之间以及到内部总线的线路,设计并标注各控制信号。 7、(选做)编译之后,给出微操作 AR<-PC 的测试方法及仿真结果。 8、实验报告中应给出各元部件的实现方法、内部逻辑贴图、打包符号说 明及顶层的“非常简单CPU”数据通路图。 实验报告 一、实验步骤 基于前面非常简单CPU的讲解,我掌握了非常简单CPU的指令集结构及非常简单CPU的指令读取过程和执行过程,本次实验是在上次实验的基础之上完成非常简单CPU数据通路的设计,其步骤如下: (1)、AC累加器原理图如下:

计算机硬件课程设计报告(cpu设计)

计算机硬件课程设计 设计报告 学号: 姓名:成绩: 学号: 姓名:成绩: 东南大学计算机科学与工程系 二0 10 年11 月

一、设计名称: My CPU的设计 二、本设计的主要特色: 1、熟悉挂总线的逻辑器件的特性和总线传送的逻辑实现方法。 2、掌握半导体静态存储器的存取方法。 三、设计方案: 1. 数据格式——8位二进制定点表示 2. 指令系统——CPU的指令格式尽量简单规整,这样在硬件上更加容易实现。 7条基本指令:输入/输出,数据传送,运算,程序控制。 指令格式:Array 7 6 5 4 3 2 1 0 两种寻址方式: 寄存器寻址Array 7 6 5 4 3 2 1 0 直接地址寻址,由于地址要占用一个字节,所以为双字节指令。 7条机器指令:

IN R目:从开关输入数据到指定的寄存器R目。 OUT R源:从指定的寄存器R源中读取数据送入到输出缓冲寄存器,显示灯亮。 ADD R目,R源:将两个寄存器的数据相加,结果送到R目。 JMP address : 无条件转移指令。 HALT : 停机指令。 LD R目,address : 从内存指定单元中取出数据,送到指定寄存器R 目。 ST address , R 源: 从指定的寄存器R源中取出数据,存入内存指定单元。

Address(内存地址) 3. CPU内部结构 4.数据通路设计 根据指令系统,分析出数据通路中应包括寄存器组、存储器、运算器、多路转换器等,采用单总线结构。 通用寄存器组:

运算器: 存储器: 多路转换器:

输出缓冲器: 5.控制器设计 控制通路负责整个CPU的运行控制,主要由控制单元和多路选择器MUX 完成。在每一个时钟周期的上升沿指令寄存器IR 从内存中读取指令字后,控制单元必须能够根据操作码,为每个功能单元产生相应主控制信号,以及对ALU 提供控制信号。对于不同的指令,同一个功能单元的输入不同,需要多路选择器MUX 来对数据通路中功能单元的输入进行选择。

8位CPU的设计与实现

实验题目 8位CPU的系统设计学号 1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东

华侨大学电子工程系 8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构

三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ;

计算机组成原理实验报告单周期cpu的设计与实现

1个时钟周期 Clock 电子科技大学计算机科学与工程学院 标 准 实 验 报 告 (实验)课程名称: 计算机组成原理实验 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 学生姓名: 郫县尼克杨 学 号: 2014 指导教师:陈虹 实验地点: 主楼A2-411 实验时间:12周-15周 一、 实验室名称: 主楼A2-411 二、 实验项目名称: 单周期CPU 的设计与实现。 三、 实验学时: 8学时 四、 实验原理: (一) 概述 单周期(Single Cycle )CPU 是指CPU 从取出1条指令到执行完该指令只需1个时钟

周期。 一条指令的执行过程包括:取指令→分析指令→取操作数→执行指令→保存结果。对于单周期CPU 来说,这些执行步骤均在一个时钟周期内完成。 (二) 单周期cpu 总体电路 本实验所设计的单周期CPU 的总体电路结构如下。 (三) MIPS 指令格式化 MIPS 指令系统结构有MIPS-32和MIPS-64两种。本实验的MIPS 指令选用MIPS-32。以下所说的MIPS 指令均指MIPS-32。 MIPS 的指令格式为32位。下图给出MIPS 指令的3种格式。 本实验只选取了9条典型的MIPS 指令来描述CPU 逻辑电路的设计方法。下图列出了本实验的所涉及到的9条MIPS 指令。 五、 实验目的 1、掌握单周期CPU 的工作原理、实现方法及其组成部件的原理和设计方法,如控制器、26 31 221 216 15 11 1 6 5 0 op rs rt rd sa func R 型指令 26 31 221 216 15 0 op rs rt immediate I 型指令 26 31 20 op address J 型指令

CPU课程设计报告

课程设计报告 课程片上计算机系统 题目 CPU模型机设计 班级 专业 学生 学号 指导教师 2014年7 月 3 日 目录: 1.课程设计的目的及要求 (3) 2.处理器的设计思想和设计内容 (3)

3.设计处理器的结构和实现方法 (3) 4.模型机的指令系统 (4) 5.处理器的状态跳转操作过程 (4) 6. CPU的Verilog代码 (7) 7. 模型机在Quartus II环境下的应用 (19) 8. 仿真波形 (19) 9. 课程设计的总结 (21) 一.课程设计的目的及要求: (一)目的: 1.掌握RISC CPU与内存数据交换的方法。 2.学会指令格式的设计与用汇编语言编写简易程序。 3.能够使用VHDL硬件描述语言在QuartusⅡ软件环境下完成CPU模型机的 设计。

(二)要求: 1.以《计算机组成与设计》书中123页的简化模型为基础更改其指令系 统,形成设计者的CPU, 2.在Quartus II环境下与主存连接,调试程序,观察指令的执行是否达 到设计构想。 二.处理器的设计思想和设计内容: 处理器的字长为16b;包括四种指令格式,格式1、格式2、格式3的指令字长度为8b,格式4的指令字长度为16b;处理器内部的状态机包括七个状态。(一)关于修改后的CPU: 一共设计25条指令,主要包括空操作指令、中断指令、加法指令、减法指令、加法指令、四种逻辑运算指令、比较、算术移位操作指令、逻辑移位操作指令、加减1指令、加减2指令、数据传输指令、转移类指令、读写指令、特权指令等等。 (二)关于RAM: 地址线设置成8bits,主存空间为4096words。 三.设计处理器的结构和实现方法: (指令格式) 格式1:寄存器寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Rx Ry 空白 格式2:寄存器变址寻址方式 OP Ry 空白 格式3:立即数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP I 空白 格式4:无操作数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP 空白空白 格式5:直接寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Addr 内存(2的12次方) 四.模型机的指令系统 CPU的指令集: 操作码OP IR(15..1 2) 指令 格式 指令的助记指令的内容

CPU设计实验报告

实验中央处理器的设计与实现 一、实验目的 1、 理解中央处理器的原理图设计方法。 2、 能够设计实现典型MIPS 的11条指令。 二、 实验要求 1、 使用Logisim 完成数据通路、控制器的设计与实现。 2、 完成整个处理器的集成与验证。 3、 撰写实验报告,并提交电路源文件。 三、 实验环境 VMware Workstatio ns Pro + Win dows XP + Logisim-wi n-2.7.1 四、 操作方法与实验步骤 1、数据通路的设计与实现 数据通路主要由NPC 、指令存储器、32位寄存器文件、立即数扩展部件、 ALU 、数据存储器构成。其中指令存储器和数据存储器可直接调用软件库中的 ROM 和RAM 元件直接完成,其余部件的设计如图所示: Cue ------- 吊孙 ----------- n -ar ch Zan [p]~ 图 1.1 NPC G —-- DO jlf* 04 4 D 04 nero & res?l ■&

幣> >曰CXI e Q

图1.3立即数扩展部件 图 1.4 ALU 2、控制器的设计与实现 控制器的主要设计思想如图所示 图2.1控制器设计思想 通过列真值表得到控制器的两部分电路,真值表如下 : 输入 000000 001101 100011 101011 000100 000010 immIC £it£ DOO -DO ooo n Q □□□non UOnflO OOC ?>:>0 DQ 000 指令 lnst :ruction[31:O] OP[5:OJ fu net [5:0] Jump ExBp Branch Mem Write ALUctr * RegWrite MemtoReg * ALUSrc 控制器 控制信号 LLLLLLLLLmM f ZERO A ()-- irnmmmiiiimiiiiifeiiim IIII93 1-] * 11114444 ".'O

CPU设计实验报告文档(英文版)

Southeast University Microprogra m med CPU Design -- COA experiment School of Information Science and Engineering 04009XXX 2012-4-25

Purpose The purpose of this project is to design a simple CPU (Central Processing Unit). This CPU has basic instruction set, and we will utilize its instruction set to generate a very simple program to verify its performance. For simplicity, we will only consider the relationship among the CPU, registers, memory and instruction set. That is to say we only need consider the following items: Read/Write Registers, Read/Write Memory and Execute the instructions. At least four parts constitute a simple CPU: the control unit, the internal registers, the ALU and instruction set, which are the main aspects of our project design and will be studied. Instruction Set Single-address instruction format is used in our simple CPU design. The instruction word contains two sections: the operation code (opcode), which defines the function of instructions (addition, subtraction, logic operations, etc.); the address part, in most instructions, the address part contains the memory location of the datum to be operated, we called it direct addressing. In some instructions, the address part is the operand, which is called immediate addressing. For simplicity, the size of memory is 256×16 in the computer. The instruction word has 16 bits. The opcode part has 8 bits and address part has 8 bits. The instruction word format can be expressed in Figure 1 Figure 1 the instruction format The opcode of the relevant instructions are listed in Table 1. In Table 1, the notation [x] represents the contents of the location x in the memory. For example, the instruction word 00000011101110012 (03B916) means that the CPU adds word at location B916 in memory into the accumulator (ACC); the instruction word 00000101000001112 (050716) means if the sign bit of the ACC (ACC [15]) is 0, the CPU will use the address part of the instruction as the address of next instruction, if the sign bit is 1, the CPU will increase the program counter (PC) and use its content 7 as the address of the next instruction. Table 1 List of instructions and relevant opcodes

8位CPU的设计与实现

计算机组成原理 实验题目8位CPU得系统设计 学号1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东 华侨大学电子工程系 8位CPU得系统设计 一、实验要求与任务 完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1。1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1、2设计要求 画出电路原理图、仿真波形图;

二、CPU得组成结构 三、元器件得选择 1.运算部件(ALU) ALU181得程序代码: LIBRARY IEEE; USEIEEE、STD_LOGIC_1164。ALL; USEIEEE、STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT( S: IN STD_LOGIC_VECTOR(3 DOWNTO0 ); A:IN STD_LOGIC_VECTOR(7 DOWNTO0); B: INSTD_LOGIC_VECTOR(7DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ?COUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0); M :INSTD_LOGIC; CN : IN STD_LOGIC; CO,FZ:OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0); SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0); BEGIN A9<= '0'& A; B9 <= ’0’&B;

cpu实验报告

简易计算机系统综合设计设计报告 班级姓名学号 一、设计目的 连贯运用《数字逻辑》所学到的知识,熟练掌握EDA工具的使用方法,为学习好后续《计算机原理》课程做铺垫。 二、设计内容 ①按给定的数据格式和指令系统,使用EDA工具设计一台用硬连线逻辑控制的简易计算机系统; ②要求灵活运用各方面知识,使得所设计的计算机系统具有较佳的性能; ③对所做设计的性能指标进行分析,整理出设计报告。 三、详细设计 3.1设计的整体架构 控制信号

3.2各模块的具体实现 1.指令计数器(zhiling_PC) 元件: 输入端口:CLK,RESET,EN; 输出端口:PC[3..0]; CLK:时钟信号; RESET:复位信号; EN:计数器控制信号,为1的时候加一; PC[3..0]:地址输出信号; 代码:

波形图: 总共有九条指令,指令计数器从0000到1000;功能: 实现指令地址的输出; 2.存储器(RAM) 元件: 输入端口:PC[3..0],CLK; 输出端口:zhiling[7..0]; CLK:时钟信号; PC[3..0]:指令地址信号; zhiling[7..0]:指令输出信号; 代码:

波形图: 功能: 根据输入的地址输出相应的指令; 3.指令译码器(zlymq) 元件: 输入端口:zhiling[7..0]; 输出端口:R1[1..0],R2[1..0],M[3..0];zhiling[7..0]:指令信号; R1:目标寄存器地址; R2:源寄存器地址; M[3..0]:指令所代表的操作编号; 代码:

波形图:

功能: 实现指令的操作译码,同时提取出目标寄存器和源寄存器的地址; 4.算术逻辑运算器(ALU) 元件: 输入端口:EN_ALU,a[7..0],b[7..0],M[3..0]; 输出端口:c[7..0],z; EN_ALU:运算器的使能端; a[7..0]:目标寄存器R1的值; b[7..0]:源寄存器R2的值; M[3..0]:指令所代表的操作编号; c[7..0]:运算结果; z:运算完成的信号; 代码:

《单周期CPU设计》实验报告

《计算机组成原理与接口技术实验》 实验报告 学院名称: 学生姓名: 学号: 专业(班级): 合作者: 时间:2016 年4 月25 日 成绩: ________ 实验二: 一. 实验目的 1.掌握单周期CPU数据通路图的构成、原理及其设计方法; 2.掌握单周期CPI的实现方法,代码实现方法; 3.认识和掌握指令与CPU勺关系; 4.掌握测试单周期CPI的方法。 二. 实验内容 设计一个单周期CPU,该CPU至少能实现以下指令功能操作。需设计的指令

与格式如下:

==>算术运算指令 功能:rd Jrs + rt 。 reserved为预留部分,即未用,一般填“0 (2)addi rt , rs , immediate 功能:rt J rs + (sign-extend) immediate ;immediate 符号扩展再参加“加”运算(3) sub rd , rs , rt 完成功能:rd J rs - rt ==>逻辑运算指令 (4)ori rt , rs , immediate 功能:rt Jrs | (zero-extend) immediate ; immediate 做“ o ”扩展再参加“或”运算(5) and rd , rs , rt 功能:rd Jrs & rt ;逻辑与运算 (6)or rd , rs , rt 功能:rd Jrs | rt ;逻辑或运算。 ==>传送指令 功能:rd Jrs + $0 ; $0=$zero=0。 ==>存储器读/写指令 (8)sw rt , immediate( rs)写存储器 功能:memory[rs+ (sign-extend) immediate ] J rt ; immediate 符号扩展再 相加。

8位CPU的设计与实现

计算机组成原理 CPU 实验题目 8位的系统设计1115106046 号学 魏忠淋姓名 B 11电子班班级凌朝东指导老师

华侨大学电子工程系 8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构 三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN B9 <= '0' & B ; A9 <= '0' & A ; PROCESS(M,CN,A9,B9) BEGIN CASE S IS WHEN ぜ?尰=> IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF; WHEN IF M='0' THEN F9<=(A9 or B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF; WHEN 0 => IF M='0' THEN F9<=(A9 or (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF; WHEN 1 => IF M='0' THEN F9<= ; ELSE F9<= END IF; WHEN 0 => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF; WHEN 1 => IF M='0' THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF; WHEN 0 => IF M='0' THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF; WHEN 1 => IF M='0' THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF; WHEN @0 => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF; WHEN @1 => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF; WHEN A0 => IF M='0' THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ;

CPU设计实验报告

实验中央处理器的设计与实现 一、实验目的 1、理解中央处理器的原理图设计方法。 2、能够设计实现典型MIPS的11条指令。 二、实验要求 1、使用Logisim完成数据通路、控制器的设计与实现。 2、完成整个处理器的集成与验证。 3、撰写实验报告,并提交电路源文件。 三、实验环境 VMware Workstations Pro + Windows XP + Logisim-win-2.7.1 四、操作方法与实验步骤 1、数据通路的设计与实现 数据通路主要由NPC、指令存储器、32位寄存器文件、立即数扩展部件、ALU、数据存储器构成。其中指令存储器和数据存储器可直接调用软件库中的ROM和RAM元件直接完成,其余部件的设计如图所示: 图1.1 NPC

图1.2 32位寄存器

图1.3 立即数扩展部件 图1.4 ALU 2、控制器的设计与实现 控制器的主要设计思想如图所示 图2.1 控制器设计思想 输入 1 1 0

输出R-type ORI LW SW BEQ JUMP RegDst 1 0 0 x x x ALUSrc 0 1 1 1 0 x MemtoReg0 0 1 x x x RegWrite 1 1 1 0 0 0 MemWrite0 0 0 1 0 0 Branch 0 0 0 0 1 0 Jump 0 0 0 0 0 1 Extop x 0 1 1 1 x ALUop2 1 0 0 0 0 x ALUop1 x 1 0 0 x x ALUop0 x 0 0 0 1 x ALUop[2:0] Funct[3:0] 指令ALUctr[2:0] 111 0000 add 010 111 0010 sub 110 111 0100 and 000 111 0101 or 001 111 1010 slt 111 010 xxxx ori 001 000 xxxx Lw/sw 010 011 xxxx beq 110 表2.1 控制器设计真值表

8位CPU的设计与实现

计算机组成原理 实验题目 8位CPU的系统设计学号 1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东 华侨大学电子工程系

8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构

三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ;

CPU与简单模型机设计 实验报告汇总

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机组成与结构 项目名称 CPU与简单模型机设计实验 班级 学号 姓名 同组人员无 实验日期 2015-11-15

一、实验目的 1.掌握一个简单CPU的组成原理; 2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机; 3.为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 二、实验逻辑原理图与分析 2.1 实验逻辑原理图及分析 本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(RO)、指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图下图所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和贮存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。 基本CPU构成原理图 系统的程序计数器(PC)和地址寄存器(AR)集成在一片CPLD芯片中。CLR连接至CON单元的纵情断CLR,按下CLR按钮,将是PC清零,LDPC和T3相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线的数据打入PC。 程序计数器(PC)原理图

2.2 逻辑原理图分析 本模型机;和前面微程序控制器实验相比,新增加一条跳转指令JMP,供有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移)、HLT(停机)、其指令格式瑞霞(高4为为操作码): 其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。 系统涉及到的微程序流程如下图所示,当拟定“取指”微指令时,该微指令的判别测试字段为P<1>测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P<1>的测试结果出现多分支。本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定为地址单元,剩下的其他地方就可以一条微指令占用控制一个微地址单元随意填写,微程序流程图上的但愿地址为16进制。 当全部为程序设计完毕后,应将每条微指令代码化,下表即为将下图的微程序流程图按微指令格式转化而成的“二进制微代码表”。 简单模型机微程序流程图

哈工大CPU设计报告

计算机设计与实践CPU设计报告

指令格式设计: 注:Ri代表3位该寄存器号的二进制表示,X,sign为8位立即数,add为8为地址

一整体框图

二各模块详细说明(数据流关系、接口说明) 1 时钟管理模块 1.1结构框图: 1.2功能描述:时钟模块为一节拍发生器,以输入时钟信号作为触发,四个节拍循环往复,当“rst”为1时节拍复位。 1.3数据流关系: 1.4接口说明: port( rst: in std_logic; --复位信号 clk: in std_logic; --输入时钟信号 k: out std_logic_vector(3 downto 0) --节拍输出 ); 2 取址模块 2.1 visit_mem_flag pc_out ir_out 2.2功能描述:取指模块主要负责取指操作,当复位信号为1时,pc置零;若pc更新标志(pc_in_flag)为1,则更新当前的pc值;在第一个节拍,将当前pc给到访存控制模块,同时送访存请求信号(visit_mem_flag),取得指令;同时将取得的指令送往运算模块、回写模块,pc送往回写模块。

2.3数据流关系: Port (rst: in std_logic; --复位 k0,k1: in std_logic; --节拍控制 pc_in_flag: in std_logic; --PC回写允许 ir_in : in std_logic_vector(15 downto 0); --IR进入 pc_in : in std_logic_vector(15 downto 0); --PC回写 visit_mem_flag: out std_logic; --访存信号 pc_out : out std_logic_vector(15 downto 0); --PC输出 ir_out : out std_logic_vector(15 downto 0) --IR输出 ); 3 运算模块 3.1结构框图: 3.2功能描述:复位信号为1时,alutou、addr、Cy、Z清零;当回写信号为1时,将回写的数据回写入寄存器中;在第二节拍完成指令的译码工作,并根据译码结果置if_reg(是否更新寄存器),if_pc(是否更新PC),m_r(是否读请求),m_w(是否写请求)四个标志位,并对相关的指令置好addr、aluout和ToHX,以及对一些改变运算标志位的指令置好Cy和Z这两个标志位。

计算机组成原理课程设计微程序设计报告书

计算机组成原理课程设计微程序设计 报告书

课程设计指导教师评定成绩表

指导教师评定成绩: 指导教师签名: 年月日 重庆大学本科学生课程设计任务书

指导教师 (签名) 学生 (签名) 说明:1、学院、专业、年级均填全称,如:光电工程学院、测控技术、。 2、本表除签名外均可采用计算机打印。本表不够,可另附页,但应在页脚添加页码。 计算机组成原理课程设计报告书 一、设计目的: 综合运用所学过的计算机原理知识,设计并实现较为完整的计算机。 掌握运用计算机原理知识解决问题和设计指令程序的能力。经过课程设计的综合训练,培养实际分析问题,编写程序指令和动手能力、团队协作精神,帮助学生系统掌握计算机组成原理课程的主要内容。二、设计要求: 设计要求: 用微程序控制器实现以下指令功能 调用:CALL addr ;指令功能与80X86相同,addr是8位二进制地址 返回:RET ; 存储器到存储器传送: MOV memi , memj ; memi (memj), i<>j,memi内存单元地址带右移的加法运算: ADD Ri , Rj , N ; Ri (Ri)+(Rj)>>N ,Rj中内容不变 N=0-7根据模型计算机的数据路径以及微程序控制器的工作原理,设计各指令格式以及编码,并实现各机器指令微代码,根据定义的机器指

令,自拟编写包含以下指令的应用程序。 三、微程序控制器的原理: A.微程序控制的基本思想: 1. 若干微命令编制成一条微指令,控制实现一步操作; 2. 若干微指令组成一段微程序,解释执行一条机器指令; 3. 微程序事先存放在控制存储器中,执行机器指令时再取出。 B.基本组成:控制存储器,微指令寄存器,微地址寄存器,地址转移 逻辑框图: 图1 微程序控制器组成原理框图 控制存储器(CM):用来存放实现全部指令系统的微程序,位于CPU 中。它是一种只读型存储器,要求速度快,读出周 期短 微指令寄存器:存放当前由控制存储器读出的一条微指令信息,分为 微地址寄存器和微命令寄存器两个部分。其中微地址

相关文档