16位CPU设计

16位CPU设计
16位CPU设计

设计一个非常简单的16位CPU

I hear and I forget. I see and I remember. I do and I understand.

-- 孔子

Easy Right 计算机研究小组

https://www.360docs.net/doc/4d13717601.html, August 2003

第一章简介

1.目的

本项目的目的是设计一个十分简单的基于冯·诺依曼架构的16位CPU。我们将这颗CPU命名为ERVS16-CPU(EasyRight Very Simple 16-bit CPU )。 ERVS16有它自己的指令集。并且,为了测试ERVS16,我们将在项目的最后用它的指令集编写一个十分简单的操作系统。简单的说,我们在这个项目中只考虑CPU,寄存器,内存和指令集之间的关系。这就是说我们只需要实现:

(1)读/写寄存器

(2)读/写内存

(3)执行指令集中的所有指令

图1.1是ERVS16的抽象图

图 1.1 ERVS16抽象图

假设系统时钟频率是1MHz,我们将在设计中使用正缘触发时钟频率(Positive Edge Triggered Clocking)技术。复位信号首先输入一个高电平初始化 CPU ,接着当复位信号变为低电平时开始运行位于0地址的指令。

内存读/写循环时,要确保可读/可写信号是在低电平。如图1.2和1.3,所有内存读写操作都需要一个信号周期来完成。

时钟技术(Clocking Methodology)定义了信号可以被读写的时间。读写操作不能同时进行。边缘触发时钟频率技术(Edge-triggered Clocking Methodology)正是被用来防止这样的情况发生。边缘触发时钟频率技术是指机器存储的所有值都只能在时钟边缘被更新。

图1.2 内存读取循环时间图

图1.3 内存写入循环时间图

2.测试环境

我们使用XILINX development board来测试对ERVS16的设计。XILINX development board包括如下部件:

一系列I/O设备(包括一系列开关(Switch)和7 Segment Displays

RAM: 1k x 16

ROM: 1k x 16:它被用于存储测试程序。在模拟开始的时候,ROM镜像从一

个测试文件(Test File)中加载。这个文件的每一行都包括由空格隔开的两个值:一个十进制的地址和一个二进制的值。比如:

1 1010100010101010

2 0101011001100110

4 0101011110101000

7 0010101011010101

5 0111000101010000

系统:包括内存和I/O设备的界面

图1.4显示了development board的主要组成部分。我们只需要实现红色的部分

图 1.4 设计结构

下表显示了development board上所有设备的技术细节。

设备地址范围访问模式

ROM (1KW) 0x0000 – 0x03FF read only

RAM (1KW) 0x0400 – 0x07FF read and write

only 开关 0x8000

read

7 Segment Displays 0x8001 – 0x8002 read and write

第一个串口0xC000 – 0xC001 read and write

第二个串口0xC002 – 0xC003 read and write

2.计划

整个计划将在四个月内完成(从2003年7月27日到2003年11月27日)。在项目完成之后,我们将会有设计真正CPU的经验。这样的经验在我们今后设计复杂的CPU时会有帮助。下面是时间表:

27/7/2003 – 2/8/2003

(1)确定支持的指令集及其格式

(2)CPU的寄存器级元件图,包括程序计数器(Program counter),存储指令的内

存(Instruction memory),存储数据的内存(Data memory),寄存器(Registers),算术和逻辑单元(ALU),以及如何连接它们;

(3)用有限状态机(Finite State Machine,FSM)列出所有信号和状态的组合

3/8/2003 – 9/8/2003

(1)Multicycle diagram;

(2)ALU支持所有指令集

10/8/2003 – 16/8/2003

(1)用VHDL实现图4.1的大多数部分

第二章指令集

1.限制和假设

限制

(1)字长16位

(2)固定指令长度

(3)支持子程序

(4)位移语句的位移量是2的倍数

假设

(1)基于字(word)的寻址方式

(2)寄存器到寄存器

(3)8个16位寄存器

(4)8个1位寄存器

(5)3个操作数格式

(6)当获取指令时PC自动增加

2.指令及其格式

ERVS16拥有它自己的指令集,每条指令都与一个硬件操作精确对应。这些指令可以分为四类:

算术指令

机器码 ASM格式作用

0001 ddds ssii i000 srl Rd, Rs , Iamt Rd <= Rs >> Iamt (unsigned)

0001 ddds ssii i001 sra Rd, Rs, Iamt Rd <= Rs >> Iamt (signed)

0001 ddds sstt t010 sla Rd, Rs, Iamt Rd <= Rs << Iamt

0001 ddds sstt t011 add Rd, Rs, Rt Rd <= Rs + Rt

0001 ddds sstt t100 sub Rd, Rs, Rt Rd <= Rs – Rt

0110 ddds sstt teee mult Re, Rd, Rs, Rt Rd <= (Rs * Rt)15:0, Re <= (Rs * Rt)31:16 0111 ddds sstt teee div Re, Rd, Rs, Rt Rd <= Rs / Rt, Re <= Rs % Rt

0001 ddds ss00 0101 not Rd, Rs Rd <= not Rs

0001 ddds sstt t110 and Rd, Rs, Rt Rd <= Rs AND Rt

0001 ddds sstt t111 or Rd, Rs, Rt Rd <= Rs OR Rt

测试指令:

格式作用

机器码 ASM

0000 ddds ssii i100 tstlt Bd, Rs, Rt Bd <= '1' if Rs < Rt else '0'

0000 ddds ssii i001 tstgt Bd, Rs, Rt Bd <= '1' if Rs > Rt else '0'

0000 ddds ssii i110 tstle Bd, Rs, Rt Bd <= '1' if Rs <= Rt else '0'

0000 ddds ssii i011 tstge Bd, Rs, Rt Bd <= '1' if Rs >= Rt else '0'

0000 ddds ssii i010 tsteq Bd, Rs, Rt Bd <= '1' if Rs = Rt else '0'

0000 ddds ssii i101 tstne Bd, Rs, Rt Bd <= '1' if Rs != Rt else '0'

内存指令:

格式作用

机器码 ASM

0100 ddd0 iiii iiii li Rd, immed (Rd)15:8 <= 0; (Rd)7:0 <= immed

0101 ddd0 iiii iiii lui Rd, immed (Rd)15:8 <= immed; (Rd)7:0 <= (Rd)7:0 1100 ddds ssii iiii lw Rd, immed(Rs) Rd <= mem[immed + Rs] (signed +) 1101 ddds ssii iiii sw Rd, immed(Rs) mem[immed + Rs] <= Rd (signed +)

跳转和分支指令:

格式作用

机器码 ASM

1011 ddd0 0000 0000 jr Rd PC <= Rd

1010 ddd0 0000 0000 jalr Rd R7 <= PC; PC <= Rd

1000 dddi iiii iiii beqz Bd, offset PC <= PC + offset if Bd = '0' else PC + 1 (signed) 关于上面图标的命名规则:

Rd:存储目标操作数的寄存器,它保存操作结果

Rs:第一个源操作数寄存器

Rt:第二个源操作数寄存器

Bd:存储布尔值的寄存器;

Re:为乘法和除法指令准备的额外寄存器

I:整数

第三章数据路径(Datapath)和控制器(Control)1.介绍

ERVS16基于MIPS,因此,它有下列特征[1]:

ERVS16有两个主要部分:数据路径和控制。数据路径负责处理算术操作,而控制器按照程序指令的指示来控制数据路径,内存和I/O设备的行为。

在ERVS16钟,对于任何一个指令,头两步都是相同的:

(1)将程序计数器(program counter,PC)送到包含有代码的内存中,并获取后

面的指令。

(2)读取一个或者两个寄存器,用指令空间来选择读取的寄存器。

ERVS16的功能单元执行包括两种逻辑元素:操作数值的元素和包含状态的元素。

(1)操作数值的元素(Combinational elements):它们的输出只取决于当前的输入

(2)包含状态的元素(Sequential/State elements):有一些临时存储。一个包含状

态的元素至少有两个输入(被写入到元素的数值和时钟)以及一个输出(在前面某个时钟周期写入的值)。包含状态的元素只有在可写(write_enable)信号被声明并且在时钟边缘才能被改写。

2.构建数据路径

对于不同的指令,我们将构建不同的数据路径。在本节中只实现一部分指令,其他指令将会在后面的章节实现。

(1)获取指令(Fetching instructions)和增加程序计数器值

(incrementing PC)

数据路径包括:

(a)存放指令的内存(Instruction memory):它用来存储一个程序中的指令,是一

个包含状态的元素(state element);

(b)程序计数器:用于保存下一条指令的地址。是一个包含状态的元素;

(c)加法器(Adder):用于使程序计数器的值指向下一条指令。是一个操作数值

的元素。

如上所述,为了运行任何一条指令,我们都必须由从内存中获取这条指令开始。为了做好运行下一条指令的准备,我们还必须增加程序计数器的值使其指向下一条指令,也就是后面的2字节(16位)。图3.1显示了这一步的数据路径。

图 3.1 用于获取指令和增加程序计数器值的数据路径

(2)算术和测试指令(不包括mult, div, not, srl, sra, sla)

ERVS16的8个寄存器被放在一个名为Register File的结构中。Register File是一个可以通过指定某个寄存器在这个区域的编号来对其进行读写的区域。此外,我们需要一个算术逻辑单元(ALU)来对从寄存器读取的值进行操作。

因为这些指令有三个操作数,我们在执行每条指令的时候,需要从Register File 读取两个字的数据,并且写入一个字的数据到Register File。为了读取数据,我们需要一个指定寄存器编号的输入来读取该寄存器。为了写入数据,我们需要两个输入:一个用来指定被写入的寄存器编号,另外一个用来提供将要写入到寄存器中的数据。只要指定需要读取的寄存器的编号,Register File就会输出该寄存器的内容。然而,写操作是被写控制信号(Write Control Signal)控制的,在执行写操作之前的时钟边缘(Clock Edge)必须先声明它。因此,我们总共需要四个输入(三个用于3字节的寄存器编号,一个用于16字节的数据)以及两个输出(都是用于16字节的数据)以及一个信号(1字节的reg_write)。

ALU被四字节的信号所控制。它接收两个16字节的输入,并且输出一个16字节的结果。

图 3.2 算术和测试指令的数据路径(不包括mult, div, not, srl, sra, sla)

(3)读取字(Load word,lw)和存储字(store word,sw)指令

这两条指令通过用基址寄存器(Base Register,Rd)的值加上指令中包含的6字节偏移量来计算出内存地址。因此,我们需要用到Register File和ALU。

另外,我们需要一个单元(Unit)来将6位的偏移量扩展为带符号的16位值,并使用一个存储数据的内存单元(Data Memory Unit)来进行读取或者写入的操作。正如第一章提到的那样,存储数据的内存单元的读写操作受可读(read_enable)和可写(write_enable)信号控制,它们必须在读写操作的时钟边缘之前被声明。它会获取一个地址输入和一个被写入内存的数据的输入。

图 3.3 寄存器的读取或者存储访问,然后是内存地址计算,从内存中读写,在读取一条指令后向RegisterFile中写入的数据路径

(4)beqz指令

为了实现这条指令,我们必须计算分支跳转语句的目标地址(Branch Target Address),该地址等于扩展后的指令中的偏移量加上PC的值。我们应当注意: 分支跳转语句的目标地址的基址是下一条指令的地址;

因为寻址方式是字(word)寻址,所以偏移量要左移1位;左移功能使寻址范围增加了2倍。

分支数据路径必须完成两个操作:计算分支跳转语句的目标地址并决定寄存器的值是否为零。如果我们用0减去寄存器的值并且我们得到的结果为零,这就是说寄存器的值为零。

图 3.4 分支的数据路径使用ALU来判断分支条件,一个独立的加法器(Adder)计算分支目标作为PC的增量,并且扩展指令的低9位,偏移量左移1位

(4)综合以上数据路径

在本节中,我们要将前面章节所提到的所有数据路径。然后我们会强化我们的设计,使其支持ERVS16的所有指令集。

我们从简单的设计开始:综合的数据路径(Combined Datapath)在一个时钟周期内完成所有指令。这就是说所有数据路径资源(Datapath Resource)都不可能在同一条指令中使用超过一次,所以所有使用超过一次的元素(Element)都必须被复制(Duplicated)。这就是为什么我们需要数据存储器(Data Memory)和指令存储器(Instructions Memory)。

然而,许多元素可以被许多不同的指令流(Instructions Flows)共享。要在两个不同的指令类(Instruction Classes)之间共享数据路径元素(Datapath Element),我们必须允许建立到输入元素的多重连接(Multiple Connections),并且要有一个控制信号在输入之间进行选择。这样的选择通常是由一个名为多路复用器(Multiplexor)的设备完成。多路复用器通过设置控制行(Control Lines)从而在不同的输入之间进行选择。

(1)为内存指令、算术指令和测试指令整理数据路径

图3.2和图3.3十分接近,但是它们有两处不同:

ALU的第二个输入是一个寄存器(算术指令和测试指令)或者是符号扩展过的指令低位字节(内存指令);

值被储存在一个来自ALU的目的寄存器(Destination Register)中(算术指令和测试指令)或者内存(load)中。

我们可以使用两个多路复用器来解决这两个不同点。参见图3.5,绿色的部分是在图3.3的基础上更改的。

图3.5 内存指令、算术指令和测试指令的复合数据路径

(2)为获取指令和增加程序计数器(PC)增加数据路径

获取指令和增加程序计数器(图3.1)操作可以很简单的加入到图3.5的数据路径中。复合的数据路径包括一个指令存储器(Memory for Instructions)和一个单独的数据存储器(Memory for Data)。复合的数据路径需要一个加法器和一个ALU,加法器被用来增加程序计数器,ALU被用来在同一个周期中执行指令。

图3.6 图3.1, 3.2, 3.3的复合数据路径

(3)为beqz指令增加数据路径

beqz指令使用主要的ALU来判断寄存器操作数是否为0。另外需要两个多路复用器。一个(PCSrc)被用来选择是根据指令地址(PC+2)还是将分支目标地址(Branch Target Address)写入PC。另外一个(BeqzSrc)被用来选择是将ALUSrc 的值还是将0输入到主ALU中。

图3.7 图3.1, 3.2, 3.3, 3.4的复合数据路径

(4)为跳转指令:jr and jalr增加数据路径

跳转指令jr和jalr有相同的功能:PC <= Rd。jalr多一步:R7 <= PC。

我们需要扩展多路复用器(PCSrc)来增加一个选项:存储在Rd中的跳转目标地址。PCSrc就有三个选项,并且,需要两个控制行。

为了将PC中的值存储到R7,我们需要两个多路复用器(PCorData和RegorPC)进行实现。参见图3.8。

图3.8 图3.7和跳转指令的复合路径

(5)增加li和lui指令

为了实现li和lui指令,我们会用到主ALU(Main ALU)来左移指令的低八位字节。指令的低八位字节在li中会向左偏移0字节,在lui中会向左便宜8字节。因此我们需要扩展多路复用器(BeqSrc)使其能够输入8。并且我们还需要增加一个多路复用器(LISrc),它包含两个选项:从Register File中获取数据或者从符号扩展的指令域(Field of Instructions)获取数据。

图 3.9 图3.8和li,lui指令的复合数据路径

(6)Not,shift,mult,div指令

我们假设not和shift指令在ALU内部实现。因此除了操作数的数量和位置外,我们并不需要过多的更改图3.9。我们将在下一节讨论细节问题。

我们将在下一章实现mult和div指令:多周期数据路径。

3.控制单元(Control Unit)

控制单元必须能够获取输入,并且为每个状态元件(State Element)生成一个写信号(Write Singal),选择器(Selector)控制每个多路复用器以及ALU控制器。

(1)ALU控制器

我们假设ALU有下列功能和各自的控制输入:

ALU control input Function

0000 And

0001 Or

0010 Add

0110 Subtract

0111 set on less than

0101 Not

1100 shift right logical

1000 shift right arithmetic

1001 shift left arithmetic

取决于指令类(Instruction Class),ALU将会实现上面的其中一个功能。对于算术和测试指令,ALU实现上面的功能需要取决于指令的低阶(low-order)字段的一个3字节的Funct Field。对于load word和store word指令,我们使用ALU 来计算内存地址。对于li和lui,我们使用ALU的左移算术操作。对于beqz,ALU必须完成一个减法操作。

Instruction ALUop Instruction

type Funct

field

Desired

ALU action

ALU

control

Write

reg

Read

reg 1

Read

reg 2

Write

reg 2

srl 0001 0001 000 shift right logical 1100 9-11 6-8 3-5

sra 0001 0001 001 shift right arithmetic1000 9-11 6-8 3-5

sla 0001 0001 010 shift

left

arithmetic1001 9-11 6-8 3-5

add 0001 0001 011 Add 0010 9-11 6-8 3-5

sub 0001 0001 100 Subtract 0110 9-11 6-8 3-5

mult 0110 9-11

6-8

3-5

0-2 div 0111 9-11

6-8

3-5

0-2 not 0001 0001 101 Not 0101 9-11 6-8 xxx

and 0001 0001 110 And 0000 9-11 6-8 3-5

or 0001 0001 111 Or 0001 9-11 6-8 3-5

tstlt 0000 0000 1xx set on less than 0111 9-11 6-8 3-5

tstgt 0000 0000 1xx set on less than 0111 9-11 6-8 3-5

tstle 0000 0000 1xx set on less than 0111 9-11 6-8 3-5

tstge 0000 0000 1xx set on less than 0111 9-11 6-8 3-5

tsteq 0000 0000 0xx subtract 0110 9-11 6-8 3-5

tstne 0000 0000 0xx subtract 0110 9-11 6-8 3-5

0-7

9-11

arithmetic1001

li 01xx

0100 shift

left

9-11

0-7

arithmetic1001

left

lui 01xx

0101 shift

0-5

6-8

9-11

lw 11xx

1100 add 0010

0-5

6-8

sw 11xx

9-11

1101 add 0010

jr xxxx 1011 xxxx 6-8

7 6-8

jalr xxxx

1010 xxxx

0-8

9-11

1000 subtract 0110

beqz 10xx

从上表中我们可以发现指令li,lui,sw和beqz有不同的长度:6,8,9。然而,在li和lui中,第八个字节是0。因此,只有两个选项:6或者9,并且它需要一个多路复用器SworLW。并且,为了实现所有测试指令,我们需要将0和ALU 的输出结果通过AND,OR和NOT门进行综合,并且通过多路复用器TestType 选择结果。我们必须将测试代码与其他代码通过多路复用器TestIns区分开。

介绍sw,我们需要读取Rd的内容,Rd是指令的第9,10,11字节。因此我们需要一个额外的多路复用器:SWSrc。

图3.10 图3.9加上所有测试指令和所有必须的多路复用器和控制行(2)主控单元

精简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设计)

计算机硬件课程设计 设计报告 学号: 姓名:成绩: 学号: 姓名:成绩: 东南大学计算机科学与工程系 二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 来对数据通路中功能单元的输入进行选择。

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 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 控制器设计真值表

《单周期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 符号扩展再 相加。

中国32位嵌入式CPU芯片

2015-2020年中国32位嵌入式CPU芯片行业市场调研及未来发展分析报告 Special Statenent特别声明 本报告由华经视点独家撰写并出版发行,报告版权归华经视点所有。本报告是华经视点专家、分析师调研、统计、分析整理而得,具有独立自主知识产权,报告仅为有偿提供给购买报告的客户使用。未经授权,任何网站或媒体不得转载或引用本报告内容,华经视点有权依法追究其法律责任。如需订阅研究报告,请直接联系本网站客服人员(8610-56188812 56188813),以便获得全程优质完善服务。 华经视点是中国拥有研究人员数量最多,规模最大,综合实力最强的研究咨询机构(欢迎客户上门考察),公司长期跟踪各大行业最新动态、资讯,并且每日发表独家观点。 目前华经视点业务范围主要覆盖市场研究报告、投资咨询报告、行业研究报告、市场预测报告、市场调查报告、征信报告、项目可行性研究报告、商业计划书、IPO上市咨询等领域,同时也为个阶层人士提供论文、报告等指导服务,是一家多层次、多维度的综合性信息研究咨询服务机构。 Report Description报告描述 本研究报告由华经视点公司领衔撰写。报告以行业为研究对象,基于行业的现状,行业运行数据,行业供需,行业竞争格局,重点企业经营分析,行业产业链进行分析,对市场的发展状况、供需状况、竞争格局、赢利水平、发展趋势等进行了分析,预测行业的发展前景和投资价值。在周密的市场调研基础上,通过最深入的数据挖掘,从多个角度去评估企业市场地位,准确挖掘企业的成长性,为企业提供新的投资机会和可借鉴的操作模式,对欲在行业从事资本运作的经济实体等单位准确了解目前行业发展动态,把握企业定位和发展方向有重要参考价值。报告还对下游行业的发展进行了探讨,是企业、投资部门、研究机构准确了解目前中国市场发展动态,把握行业发展方向,为企业经营决策提供重要参考的依据。 Report Directory报告目录 第一章研究范围界定及市场特征分析 第一节CPU芯片分类及应用 一、CPU芯片分类 二、CPU芯片应用

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进制。 当全部为程序设计完毕后,应将每条微指令代码化,下表即为将下图的微程序流程图按微指令格式转化而成的“二进制微代码表”。 简单模型机微程序流程图

设计报告(电子版)

单片机应用设计实践报告 课程名称:单片机应用设计实践 设计题目:带温度显示的数字万年历设计 院(部):计算机与信息工程学院 学生姓名:******* 学号:************ 专业班级:************ 指导教师:******* 贵州 贵阳 年月日

课程设计任务书 设计题目万年历 学生姓名**** 所在院系***** 专业、年级、班*********** 设计要求: 1、设计制作一个用LCD1602显示的带温度显示的万年历; 2、具有年、月、日、星期、时、分、秒、温度等显示功能; 3、具备年、月、日、星期、时、分、秒校准功能; 4、具有闹钟显示、调节设定、整点鸣叫功能。 学生应完成的工作:设计万年历的工作原理,利用DXP 软件绘制电路原理图,利用Keil uVision4软件编写C语言程序并且生成HEX文件。并设计制作电路的PCB板(或万用板的元件布局和连线)。根据设计原理对电路进行安装、调试,完成课程设计工作,并提交课程设计报告。 参考文献阅读: 51单片机原理与应用案例教程(C51编程)p170的 9.1.2 LCD1602液晶应用实例 工作计划:*月*号:搜集资料;*月*号:方案论证拟定硬件方案;*月*号:讨论优化并确定硬件方案;*月*号—*号:讨论并确定程序流程并绘制流程图;*月*号:根据流程图编写程序并且进行软件的仿真与调试;*月*号—*号:硬件电路的制作并撰写课程设计报告;*月*号:烧录程序并调试;*月*号:完成课程设计报告的撰写。 任务下达日期:2017年11月30 日 任务完成日期:2017年11月01 日 指导教师(签名):学生(签名):田应焕

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

32位MIPS处理器设计实验报告

数字逻辑与处理器基础实验 32位MIPS处理器设计实验报告 王晗 (2013011076) July26,2015 Date Performed:July15,2015 Partners:耿天毅(2012011119) 陈志杰withdrawn 1实验目的 熟悉现代处理器的基本工作原理;掌握单周期和流水线处理器的设计方法。 2设计方案 2.1总体结构 由于这次实验涉及的功能较多,我们将完整的CPU分成多个模块。指令存储器、寄存器堆、控制器、ALU控制器、ALU、数据存储器、UART等功能单元均在单独的Module中实现。其中指令存储器、寄存器堆、控制器、ALU控制器、ALU等单元在Single Cycle Core中实例化,作为单周期处理器的核心;数据存储器、UART和定时器、LED、七段数码管、开关在Peripheral中实现,作为处理器的外设。处理器核心和外设在顶层模块中实例化,互相通信。 单周期CPU模块的结构关系如Figure1所示:

Figure1:单周期处理器结构 对于流水线CPU,我们还在Pipeline Core中加入了流水线寄存器、冒险检测单元、数据转发单元: Figure2:流水线处理器结构

2.2ALU1 ALU模块的结构如图所示,输入两个操作数A、B和控制信号ALUFun、Signed,在ARITH子模块中做加减法运算,CMP子模块根据ARITH模块的输出进行比较判断,LOGIC和SHIFT模块分别进行逻辑运算和移位运算,ALUFun的最高两位用于控制多路选择器的输出。 Figure3:ALU结构 ARITH模块ARITH模块中包括减法和加法两个模块,加法模块直接通过+号运算,减法模块先对第二个操作数取补码,再调用加法模块做加法运算。Overflow和Negative信号的产生是ALU中的难点: Figure4:ADD中的Overflow和Negative 1原作者:陈志杰;修改:王晗

哈工大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这两个标志位。

32位RISC处理器软核的设计与验证

32位RISC 处理器软核的设计与验证( Potato-I) 使用说明文档 1 CPU 流水线级数及各级功能 IF :取指令级,是从ROM 中读取指令,并在下一个时钟沿到来时把指令送到ID 级的指令缓冲器中。 ID :指令译码级,对IF 级来的指令进行译码,并产生相应的控制信号。整个CPU 的控制信号都是在这级上产生。 EX :执行级,对操作数进行算术或逻辑操作,此外LOAD ,STORE 指令所用的RAM 访问地址也是在EX 级上实现。 MEM :存储器访问级,只有在执行LOAD 、STORE 指令时对存储器进行读写,但对其他指令只起到缓冲一个周期的作用。 WB :回写级,把指令执行的结果回写到寄存器文件中,写入寄存器文件的数据来自于MEM 级上的缓冲值或来自于MEM 级上的存储器。 2指令集及编码格式 2.1指令集: NOP,ADD,ADC,SUB,SUBC,AND,OR,NOT,ADDI,ANDI,ORI,NOTI,LSL,LSR,ASR,ROR,ROL,STR,LDR,BTC,JUMP,JUMPR,JUMPL,RET 。 2.2指令编码格式 例:ADD R1,R2,R3; 在上面的加法指令中 OP=2、DS=1、S1=2 、S2=3,对应的机器码为: 32’b000010_00001_00010_00011_XXXXXXXXXXX; 2) ADDI,ANDI,ORI,NOTI 例:ADDI R4,R8,5; 其中 OP=1、DS=4、S1=8、IMM=5,对应的机器码为: 32’b000001_00100_01000_0000000000000101; 3) LSL,LSR,ASR,ROR,ROL

CPU设计实验报告

武汉大学计算机学院计算机科学与技术专业 CPU设计实验报告 实验名称:开放式实验CPU设计课题名称: 计算机组成原理 班级: 计科2班 指导教师:徐爱萍 组长: 组员: 二零一五年三月

目录 目录 (2) 1 实验环境(张航宇) (4) 1.1 Quartus Ⅱ介绍 (4) 1.2 硬件描述语言(VHDL) (4) 1.3实验的主要成果 (4) 2 实验要求(彭阳坤) (5) 2. 1 指令格式要求 (5) 2. 2 指令流程及微信号序列分析 (5) 2.2.1 ADD指令分析 (5) 2.2.2 ADC指令分析 (5) 2.2.3 SUB指令分析 (6) 2.2.4 SBC指令分析 (6) 2.2.5 INC指令分析 (6) 2.2.6 DEC指令分析 (6) 2.2.7 SHL指令分析 (7) 2.2.8 SHR指令分析 (7) 2.2.9 MOVR指令分析 (7) 2.2.11 MOVD指令分析 (7) 2.2.12 LDRR指令分析 (8) 2.2.13 STRR指令分析 (8) 2.2.14 JMP指令分析 (8) 2.2.15 JRZ指令分析 (8) 2.2.16 JRC指令分析 (9) 3.部件仿真实验(彭阳坤) (10) 3.1 八个通用寄存器设计与仿真 (10) 3.1.1 设计代码 (10) 3.1.2 RTL连接图 (16) 3.1.3 仿真过程 (16) 3.2算术逻辑单元设计与仿真 (17) 3.2.1 设计代码 (17)

3.2.2 RTL连接图 (22) 3.2.3 仿真过程 (23) 4. CPU设计(彭阳坤) (24) 4.1取指设计 (24) 4.2 时序节拍设计 (25) 4.3指令译码的设计 (26) 4.4执行部分设计 (29) 4.5存储器部分设计 (31) 4.6通用寄存器组设计 (32) 4.7寄存器输出设计 (38) 4.8顶层实体设计 (38) 5. 测试报告(张航宇) (42) 5.1规则文件 (42) 5.2测试文件 (42) 5.3指令测试 (44) 6 实验总结 (46) 6.1 彭阳坤的小结 (46) 6.1.1 实验收获 (46) 6.1.2 建议与意见 (46) 6.2张航宇的小结 (46) 6.2.1 实验收获 (46) 6.2.2 建议与意见 (47) 参考资料 (47)

cpu设计报告

基于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.360docs.net/doc/4d13717601.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的内

计算机组成原理-CPU设计实验报告

课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:设计CPU 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:2016.6.26

目录 总体设计方案 (3) 1.1 实验目的 (3) 1.2 实验容 (3) 1.3 实验仪器及元件 (3) 详细设计方案 (3) 2.1 实验原理及电路图 (3) 2.2 实验过程及结果记录 (6) 2.3 实验结果分析 (8) 总结 (8) 3.1 思考 (8) 3.2 收获感想 (8)

总体设计方案 1.1实验目的 在maxplus设计取数据、存数据、加指令的CPU程序 1.2 实验容 要现机器指令要现指令:LD(取数),ST(存数),ADD(算术加法);利用maxplus对于设计的微指令集用电路图进行实现,并分析结果是否正确, 1.3 实验仪器及元件 MAX+plus Ⅱ系统和其运行环境 详细设计方案 2.1 实验原理及电路图 全加器是用门电路实现两个二进制数相加并求出和的组成和电路的数字电路。除本位两个数相加外,还要加上从低位来的进位数。被加数Ai加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路

寄存器是CPU的组成部分,寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和地址。在CPU的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在CPU的算术及逻辑部件中,包含的寄存器有累加器(ACC) 计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲个数进行计数,以实现测量、计数、和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、

精简8位cpu设计报告

精简8位cpu实验设计报告实验介绍: 实验分为两个部分,第一部分为16*8 ROM 设计与仿真第二部分为SAP-1设计与仿真 实验流程: ①16*8ROM得设计与仿真 部分程序代码: Rom16_8、VHDL LIBRARYIEEE; USE IEEE、STD_LOGIC_1164。ALL; USE IEEE.STD_LOGIC_ARITH。ALL; USEIEEE.STD_LOGIC_UNSIGNED。ALL;

ENTITYROM16_8 is PORT( DATAOUT :OUT STD_LOGIC_VECTOR(7DOWNTO 0); --Data Output ADDR :INSTD_LOGIC_VECTOR(3 DOWNTO0);——ADDRESS CE :IN STD_LOGIC ——Chip Enable ); ENDROM16_8; ARCHITECTURE aOFROM 16_8IS BEGIN DATA〈=“”WHEN ADDR=“0000”ANDCE=‘0’-—L DA 9H “”WHEN ADDR=“0001"AND CE=‘0’ELSE —-ADD AH “"WHENADDR=“0010”AND CE=‘0’ELSE--ADDBH “"WHEN ADDR=“0011"AND CE=‘0’ELSE —-SUB C H “”WHEN ADDR=“0100”ANDCE=‘0'ELSE --OUT “”WHEN ADDR=“0101”AND CE=‘0’ELSE —-HLT “”WHEN ADDR=“1001"ANDCE=‘0’ELSE “"WHEN ADDR=“1010"AND CE=‘0'ELSE “”WHEN ADDR=“1011"ANDCE=‘0’ELSE “"WHEN ADDR=“1100”AND CE=‘0’ELSE “”;

32位cpu设计报告

CPU 设 计 报 告 姓名: 学号: 学院:信息科学与工程学院指导老师:

2013-01-12 一、设计目的 (1)学习设计CPU的基本步骤和方法,提高应用集成电路的基本技能,培养和提高独立设计计算机的工作能力。 (2)熟悉32位CPU各模块的工作原理,熟悉流水线数据通路和控制单元的工作原理从而熟悉CPU的工作机理。 (3)熟练地使用Quartus软件,做一些中等难度的课题,增加自己的一些实践经验,熟练VHDL编程。 (4)强化自身的系统设计能力,了解系统设计中的一般步骤。了解VHDL仿真和综合工具的潜力。 二、实验方法 实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言编写),软件模拟,以及硬件调试。这几部分的工作之间是先行后续的关系,也就是只有前一个步骤完成了下一个步骤才可以开始进行,不存在并行完成的情况。实验主要流程如下图所示: 指令系统设计逻辑设计 具体实现 软件模拟 硬件调试 设计FPGA-CPU的指令集。我们采用了流水线数据通路与控制单元的精简指令集计算机 分析并确定CPU主要功能模块,分析每条指令的执行过程,数据的流向和控制信号的产生,画出逻辑结构图 按模块分别实现,然后进行综合,建波形文件进行仿真 整体模拟仿真,检查时序关系配 合是否正确 下载到实验板中进行调试

三、数据格式 数据字长是32位,采用32位二进制有符号补码表示。 四、寻址方式 RSCI的四种寻址模式分别是寄存器寻址,存器间接寻址,立即寻址,相对寻址。这些寻址模式都是由操作码而不是单独的模式字段指定的。因此,对于某种给定操作来说,它的寻址模式是固定的,不能变动。三操作数数据处理指令采用寄存器寻址模式。寄存器间接寻址仅仅用于load和store这两个唯一能够访问数据存储器的指令。采用两寄存器格式的指令使用一个立即数取代寄存器地址SB。相对寻址专门用于分支和跳转指令,其产生的地址只用于指令存储器。 五、数据通路结构 下图中的流水线数据通路是我们即将设计的数据通路的基础,我们只需要做一些改进。这些改进涉及寄存器文件、功能单元和总线结构。

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

1个时钟周 期 Cloc k 电子科技大学计算机科学与工程学院 标 准 实 验 报 告 (实验)课程名称: 计算机组成原理实验 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 学生姓名: 郫县尼克杨 学 号: 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 的工作原理、实现方法及其组成部件的原理和设计方法,如控制器、运算器等。? 2、认识和掌握指令与CPU 的关系、指令的执行过程。? 3、熟练使用硬件描述语言Verilog 、EDA 工具软件进行软件设计与仿真,以培养学生的分析和设计CPU 的能力。 六、 实验内容 (一)拟定本实验的指令系统,指令应包含R 型指令、I 型指令和J 型指令,指令数为9条。 (二)CPU 各功能模块的设计与实现。 (三)对设计的各个模块的仿真测试。 (四)整个CPU 的封装与测试。 七、 实验器材(设备、元器件): (一)安装了Xilinx ISE Design Suite 的PC 机一台 (二)FPGA 开发板:Anvyl Spartan6/XC6SLX45 (三)计算机与FPGA 开发板通过JTAG (Joint Test Action Group )接口连接,其连接方式如图所示。 八、 实验步骤 一个CPU 主要由ALU (运算器)、控制器、寄存器堆、取指部件及其它基本功能部件等构成。? 在本实验中基本功能部件主要有:32位2选1多路选择器、5位2选1多路选择器、32位寄存器堆、ALU 等。 (一)新建工程(New Project ) 启动ISE Design Suite 软件,然后选择菜单File →New Project ,弹出New Project 26 31 25 21 20 16 15 11 10 6 5 0 op rs rt rd sa func R 型指令 26 31 25 21 20 16 15 0 op rs rt immediate I 型指令 26 31 25 0 op address J 型指令

精简8位cpu设计报告

“00011011” WHEN ADDR “0010” “00101100” WHEN ADDR “0011” “11100000” WHEN ADDR “0100” “11110000” WHEN ADDR “0101” “00010000” WHEN ADDR “1001” AND CE ‘ 0' E LSE - -ADD BH AND CE ‘ 0' E LSE --SUB CH AND CE ‘ 0' ELSE --OUT AND CE ‘ 0' ELSE --HLT AND CE ‘ 0' ELSE AND CE ‘ 0' ELSE 精简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(DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip En able ); END ROM16_8; ARCHITECTURE a OF ROM 16_8 IS BEGIN DATA<“00001001” WHEN ADDR “0000” AND CE ‘ O ' “00011010” WHEN ADDR “0001” AND CE ‘0' ELSE --ADD AH --LDA 9H

位CPU设计与实现

位C P U设计与实现文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

计 算 机 组 成 原 理 论 文 姓名:某某 班级:计科一班 学号: 8位CPU的设计与实现论文 CPU 的主要功能是执行指令,控制完成计算机的各项操作,包括运算操作、传送操作、输入/输出操作等。作为模型计算机设计,将重点放在寄存器组,采取较简单的组成模式,以尽量简洁的设计帮助读者掌握CPU 的基本原理。 此次设计CPU就是为了了解CPU运行的原理,从而完成从指令系统到CPU 的设计,并且通过仿真对CPU设计进行正确性评定。 关键词:CPU,设计指标,电路原理图,运算部件,寄存器组,模型 机指令系统,微命令序列,数据通路

1. 设计的任务与要求 1.1设计指标 1. 能实现IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、 JMP(无条件转移)这五种指令; 2. 整个系统能正常稳定工作。 1.2 设计要求 1. 画出电路原理图; 2.写出设计的全过程,附上有关资料和图纸(也可直接写在相关章节中), 有心得体会。 2. 方案论证与选择 2.1 CPU的系统方案 CPU 主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器 R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT 和输出单元OUTPUT 所组成。图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中实现。虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观察CPU 内部工作情况及运算结果。 1.运算部件 运算部件的任务是对操作数进行加工处理。主要由三部分组成:

相关文档
最新文档