当前位置:文档之家› 组成原理 8位模型机的设计

组成原理 8位模型机的设计

组成原理  8位模型机的设计
组成原理  8位模型机的设计

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

题目8位模型计算机的设计

姓名

学号

班号

指导老师

成绩

目录

1. 课程设计目的 (3)

2. 开发工具选择 (3)

3. 方案选择 (3)

4.指令系统设计 (4)

5. 模型机框图设计 (5)

6. 指令流程图 (6)

7. 微指令格式(微程序控制器)设计 (7)

8. 微程序(微程序控制器)设计 (7)

9. VHDL实现 (9)

10. 调试仿真 (16)

11. 课程设计回顾总结 (19)

参考文献 (19)

附录 (19)

1. 课程设计目的

(1)、计算机组成原理课程设计的主要任务是让学生通过动脑和动手解决计算机设计中的实际问题。综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。

(2)、通过一台模型机的设计过程,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。

2. 开发工具选择

以TEC-CA教学实验系统为平台,采用硬件描述语言 VHDL为设计工具,应用QUARTUSⅡ5.1环境进行大规模集成电路的功能设计仿真。

3. 方案选择

实习的内容为八位模型计算机的设计,为单总线,微程序控制方式,设置两种寻址方式:直接寻址(“0”)和寄存器寻址(“1”)。

微程序控制方式由微指令译码产生。微程序中一条机器指令往往分成几步执行,将每一步操作所需的若干为命令以代码编写在一条微指令中,若干条微指令组成一段微程序,对应一条机器指令。然后根据系统的需要,事先编制各段微程序,将它存入控制存储器(CM)中。

微程序执行过程:

(1)从控存中逐条取出“取指令操作”,执行取指令公共操作。

(2)根据指令的操作码,经过微地址形成部件,得到这条指令的入口地址,并送入微地址寄存器中。

(3)从控存中逐条的取出对应的微指令并执行。

(4)执行完一条机器指令对应的微程序后又回到取指微程序的入口地址,继续第(1)步,以完成取下一条机器指令的公共操作。

微程序控制基本框图:

4. 指令系统设计

所要设计的微程序控制器是由七条指令来完成的,即:sta, add, sub, and1, jmp, shl, nop 。实现功能分别如下:

sta 指令实现存操作;

add 指令实现加法操作; sub 指令实现减法操作; and1指令实现与操作; jmp 指令实现无条件跳转操作; shl 指令实现逻辑左移操作; nop 指令实现空操作。

7 5 4 1 0

模拟机采用了定长的指令格式,每条指令字长为8位。采用的寻址方式为直接寻址和寄存器寻址,标志位为“0”时为直接寻址,为“1”时为寄存器寻址。

操作码类型及编码方式如下:

操作码 寻址方式

标志位

操作码 sta add sub and1 jmp shl nop 编码方式 000 001 010 011 100 101 110 含义 传送

减 与

跳转

逻辑左移

IR

PSW

PC

微地址 形成电路

微地址寄存器MAR

微指令寄存器MIR

译码器

控制存储器CM

指令代码

运行状态

……

微命令字段 微地址字段

……

微命令序列

图1 微程序控制基本框

图2 指令格式

表1 指令列表

图2 模拟机数据通路

5. 模型机框图设计

模拟机数据通路如下图所示,模型机采用单总线结构,主要包括运部件ALU ,以及程序计数器PC 、累加器ACC 、指令寄存器IR 、数据寄存器MDR 、地址寄存器MAR 和通用寄存器R ,RAM 为内存。

控制信号

ALU

(1)寄存器的位数

所有的寄存器都均为8位:

① 通用寄存器R 。该模拟机有1个通用寄存器,用于寄存器寻址时存放结果,提供操作数。 ② 指令寄存器IR 。为了提高取指令的速度,将指令从内存中读出,经数据总线直接置入IR 。 ③ 数据寄存器MDR 、地址寄存器MAR 。地址寄存器MAR 提供访问主存的地址;数据寄存器MDR ,把从内存取出的数据暂存于MDR 中,在用到该数据进行运算时,再从MDR 中取出数据进行运算。

④ 程序计数器PC 。用于存放下一条指令的内存地址。 (2)总线宽度:该模拟机只有一条总线,且总线宽度为8位。 (3)ALU 位数及运算功能

ALU 可以实现8位操作数的运算,即ALU 的位数为8位。

PC R IR

微程序控制器

ACC

MDR

RAM

MAR Flags

地址 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4--0 alu_ srl reg_ bus load _pc

acc_bus

load _acc pc_

bus loa

d_ir load

_mar mdr

_bus alu_

and alu_acc

inc _pc

addr _bus

cs

r_

nw alu_

add

alu_sub

下址 字段

ALU 运算功能为:

加(001:add )、减(010:sub )、逻辑与(011:and )、左移(101:shl )、跳转(100:jmp )、 空(110:nop )。

(4)微命令的设置(各标识的含义)

6. 指令流程图

指令的流程图如图 3所示,共有 8 条指令,每条指令都要经过取指令、分析指令和执行指令3个步骤。

在取指令阶段,8 条指令是一样的,首先程序计数器PC 的内容通过总线送入地址寄存器MAR ,存储信息,PC+1传送给PC ,把读出的内容传送给指令寄存器IR 。再接下来的操作中,根据不同的指令,执行顺序也不同。

M —>IR ,PC+1—>PC

PC —>MAR 开始

PC →MAR

PC+1→PC

M →ACC

R →ACC

sta

M →PC

jmp

PC →MAR PC+1→PC R →D

ACC -D →ACC M →D

PC →MAR PC+1→PC R →D

ACC+D →ACC M →D

PC →MAR

PC+1→PC R →D

ACC AND D →ACC

M →D PC →MAR

PC+1→PC

ACC 左移→ACC

M →ACC

R →ACC

sub

and

shl

nop

and

结束 图3 指令流程图

7.微指令格式(微程序控制器)设计

微指令格式设计如表1:

控制信号描述

ACC_bus 用ACC的内容驱动总线

load_ACC 将总线上的数据载入ACC

PC_bus用PC的内容驱动总线

load_IR 将总线上的数据装载至IR

load_MAR将总线上的数据装载至MAR

MDR_bus用MDR的内容驱动总线

ALU_ACC用ALU的结果装载ACC

INC_PC PC+1并将结果存至PC中

Addr_bus 用IR指令中的地址部分驱动总线

CS 片选。用MAR的内容设置存储器地址

R_NW 读取,不可写。当R_NW无效且CS有效时,MBR的内容存储于存储器中

Reg_bus用寄存器R的内容驱动总线

load_Reg将总线上的数据装载至R

ALU_ADD在ALU中执行逻辑加操作

ALU_SUB在ALU中执行减操作

ALU_AND在ALU中执行与操作

ALU_SHL在ALU中执行左移操作

表2 微指令格式

8. 微程序(微程序控制器)设计

根据微处理器的数据通路和指令系统,可得出微程序的流程图如图4所示。微程序的编码采用直接编码方法,每一个控制信号对应一位,共有17个控制信号,根据微指令格式把相关的控制信号整合到一起进行编码。

微程序流程图的下地址,可知共有25条微指令,表2给出了该模拟机微程序的编码。地址3的下地址,应该根据指令操作码来和寻址方式形成,所以将其下地址设为11111,表示如果下地址为11111时,且寻址方式标志位为0(即立即寻址),则下地址应为01 & 指令的操作码,若寻址方式标

志位为1(即寄存器寻址),则下地址应为10 & 指令的操作码。

PC_bus load_MAR

INC_PC

CS R_NW

addr_bus load_MAR

MDR_bus load_IR

op

MDR_bus load_ac c

MDR_bus load_re g sta CS R_NW

CS R_NW IR_out(0)

MDR_bus ALU_ACC ALU_ADD

CS R_NW add

Reg_bus ALU_ACC ALU_ADD

IR_out(0

CS

R_NW sub

MDR_bus ALU_ACC ALU_SUB

an d

CS R_NW

MDR_bus ALU_ACC ALU_AND

jmp

CS R_NW

MDR_bus Load_PC

z_flag

shl

ALU_ACC ALU_SRL

nop

3

2

1

9

8 10

15 7 5

4 6 16 13

12

11

25 24

23 22 21 20

19 18 17 图4 微程序流程图

该模拟机微程序的编码如下

0=> 0000010100010000000001

1=> 0000000000000110000010

2=> 0000001010000000000011

3=> 0000000100001000011111

4=> 0000000000000110000110

5=> 0000000000000110000111

6=> 0000100010000000000000

7=> 0001000010000000000000

8=> 0000000000000000011011

9=> 0000000000000000011100

10=> 0000000000000000010010

11=> 0000000000000000010100

12=> 0000000000000000010110

13=> 0000000000000000011001

14=> 0000000000000110000000

15=> 0000000000000110010001

16=> 0000000010100001000000

17=> 0100000000100001000000

18=> 0000000000000110010011

19=> 0000000010100000100000

20=> 0000000000000110010101

21=> 0000000011100000000000

22=> 0000000000000110011101

23=> 0010000010000000000000

24=> 0000000000000000000000

25=> 1000000000100000000000

9. VHDL实现

头文件cpu_defs.vhd如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

PACKAGE cpu_defs IS

TYPE opcode IS (sta, add, sub, and1, jmp, shl, nop);

CONSTANT word_w: NA TURAL :=8;

CONSTANT op_w: NA TURAL :=3;

CONSTANT rfill: STD_LOGIC_VECTOR(op_w-1 downto 0):=(others =>'0');

--FUNCTIOn slv2op(slv:IN STD_LOGIC_VECTOR) RETURN opcode;

FUNCTION op2slv(op:in opcode) RETURN STD_LOGIC_VECTOR;

END PACKAGE cpu_defs;

PACKAGE BODY cpu_defs IS

TYPE optable IS ARRAY(opcode) OF STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);

CONSTANT trans_table:optable :=("000", "001", "010", "011", "100", "101", "110");

FUNCTION op2slv(op:IN opcode) RETURN STD_LOGIC_VECTOR IS

BEGIN

RETURN trans_table(op);

END FUNCTION op2slv;

--function slv2op(slv:in std_logic_vector) return opcode is

-- variable transop:opcode;

-- begin

-- for i in opcode loop

-- if slv=trans_table(i) then

-- transop:=i;

-- end if;

-- end loop;

-- return transop;

--end function slv2op;

END PACKAGE BODY cpu_defs;

源程序cpu.vhd如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;

USE WORK.CPU_DEFS.ALL;

ENTITY CPU IS

PORT( clock : IN STD_LOGIC;

reset : IN STD_LOGIC;

mode : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

mem_addr : IN UNSIGNED(word_w-op_w-1 DOWNTO 0);

output : OUT STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

data_r_out : OUT STD_LOGIC_VECTOR(21 DOWNTO 0);

op_out : OUT STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);

add_r_out : OUT UNSIGNED(4 DOWNTO 0)

);

END ENTITY;

ARCHITECTURE rtl OF CPU IS

TYPE mem_array IS ARRAY(0 TO 2**(word_w-op_w)-1) OF STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

SIGNAL mem : mem_array;

CONSTANT prog : mem_array:=(

0=>op2slv(sta) & STD_LOGIC_VECTOR(TO_UNSIGNED(9,word_w-op_w-1)) & '0',

1=> op2slv(sta) & STD_LOGIC_VECTOR(TO_UNSIGNED(10,word_w-op_w-1)) & '1',

2=> op2slv(add) & STD_LOGIC_VECTOR(TO_UNSIGNED(9,word_w-op_w-1)) & '1',

3=> op2slv(sub) & STD_LOGIC_VECTOR(TO_UNSIGNED(10,word_w-op_w-1)) & '0',

4=> op2slv(and1) & STD_LOGIC_VECTOR(TO_UNSIGNED(10,word_w-op_w-1)) & '0',

5=> op2slv(shl) & STD_LOGIC_VECTOR(TO_UNSIGNED(10,word_w-op_w-1)) & '0',

6=> op2slv(nop) & STD_LOGIC_VECTOR(TO_UNSIGNED(9,word_w-op_w-1)) & '0',

7=> op2slv(sta) & STD_LOGIC_VECTOR(TO_UNSIGNED(11,word_w-op_w-1)) & '0',

8=> op2slv(jmp) & STD_LOGIC_VECTOR(TO_UNSIGNED(12,word_w-op_w-1)) & '0',

9=> STD_LOGIC_VECTOR(TO_UNSIGNED(2,word_w)),

10=> STD_LOGIC_VECTOR(TO_UNSIGNED(3,word_w)),

OTHERS => (OTHERS =>'0'));

TYPE microcode_array IS ARRAY (0 TO 25) OF STD_LOGIC_VECTOR(21 DOWNTO 0);

CONSTANT code : microcode_array:=(

0=> "0000010100010000000001",

1=> "0000000000000110000010",

2=> "0000001010000000000011",

3=> "0000000100001000011111",

4=> "0000000000000110000110",

5=> "0000000000000110000111",

6=> "0000100010000000000000",

7=> "0001000010000000000000",

8=> "0000000000000000011011",

9=> "0000000000000000011100",

10=> "0000000000000000010010",

11=> "0000000000000000010100",

12=> "0000000000000000010110",

13=> "0000000000000000011001",

14=> "0000000000000110000000",

15=> "0000000000000110010001",

16=> "0000000010100001000000",

17=> "0100000000100001000000",

18=> "0000000000000110010011",

19=> "0000000010100000100000",

20=> "0000000000000110010101",

21=> "0000000011100000000000",

22=> "0000000000000110011101",

23=> "0010000010000000000000",

24=> "0000000000000000000000",

25=> "1000000000100000000000");

SIGNAL count : UNSIGNED(word_w-op_w-1 DOWNTO 0);

SIGNAL op : STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);

SIGNAL z_flag : STD_LOGIC;

SIGNAL mdr_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

SIGNAL mar_out : UNSIGNED(word_w-op_w-1 DOWNTO 0);

SIGNAL IR_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

SIGNAL acc_out : UNSIGNED(word_w-1 DOWNTO 0);

SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

BEGIN

PROCESS(reset,clock)

V ARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

V ARIABLE acc : UNSIGNED(word_w-1 DOWNTO 0);

CONSTANT zero : UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0');

V ARIABLE mdr : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

V ARIABLE reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

V ARIABLE mar : UNSIGNED(word_w-op_w-1 DOWNTO 0);

V ARIABLE sysbus : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);

V ARIABLE microcode : microcode_array;

V ARIABLE add_r : UNSIGNED(4 DOWNTO 0);

V ARIABLE data_r : STD_LOGIC_VECTOR(21 DOWNTO 0);

V ARIABLE temp : STD_LOGIC_VECTOR(4 DOWNTO 0);

BEGIN

IF reset='0' THEN

add_r:=(OTHERS =>'0');

count <= (OTHERS =>'0');

instr_reg := (OTHERS =>'0');

acc := (OTHERS =>'0');

mdr := (OTHERS =>'0');

reg := (OTHERS =>'0');

mar := (OTHERS =>'0');

z_flag <='0';

mem <= prog;

sysbus :=(OTHERS =>'0');

ELSIF RISING_EDGE(clock) THEN

--microprogram controller

data_r := code(TO_INTEGER(add_r));

IF data_r(4 DOWNTO 0)="11111" THEN --判断下地址

temp:="01" & op(2 DOWNTO 0);

add_r := UNSIGNED(temp);

ELSIF data_r(4 DOWNTO 0)="11011" THEN

IF IR_out(0)='1' THEN

add_r :="00101";

ELSE

add_r :="00100";

END IF;

ELSIF data_r(4 DOWNTO 0)="11100" THEN

IF IR_out(0)='1' THEN

add_r :="10001";

ELSE

add_r :="01111";

END IF;

ELSIF data_r(4 DOWNTO 0)="11101" THEN

IF z_flag='1' THEN

add_r:="10111";

ELSE

add_r :="11000";

END IF;

ELSE

add_r := UNSIGNED(data_r(4 DOWNTO 0));

END IF;

data_r_out <=data_r;

add_r_out <= add_r;

--PC

IF data_r(16)='1' THEN --PC_bus='1'

sysbus := rfill & STD_LOGIC_VECTOR(count);

END IF;

IF data_r(19)='1' THEN --load_PC='1'

count <= UNSIGNED(mdr(word_w-op_w-1 DOWNTO 0)); ELSIF data_r(10)='1' THEN --INC_PC='1'

count <= count+1;

ELSE

count <= count;

END IF;

--IR

IF data_r(15)='1' THEN --load_IR

instr_reg := mdr;

END IF;

IF data_r(9)='1' THEN --Addr_bus='1'

sysbus :='0' & rfill & instr_reg(word_w-op_w-1 DOWNTO 1); END IF;

op <= instr_reg(word_w-1 DOWNTO word_w-op_w); IR_out <= instr_reg;

op_out <=op;

--ALU

IF data_r(18)='1' THEN --ACC_bus='1'

sysbus := STD_LOGIC_VECTOR(acc);

END IF;

IF data_r(20)='1' THEN --REG_bus='1'

sysbus := STD_LOGIC_VECTOR(reg);

END IF;

IF data_r(17)='1' THEN --load_ACC='1'

acc:=UNSIGNED(mdr);

END IF;

IF data_r(13)='1' THEN --MDR_bus='1'

sysbus:=mdr;

END IF;

IF IR_out(0)='0' THEN

IF data_r(11)='1' THEN --ALU_ACC='1'

IF data_r(6)='1' THEN --ALU_add='1'

acc := acc + UNSIGNED(mdr);

ELSIF data_r(5)='1' THEN --ALU_sub='1'

acc := acc - UNSIGNED(mdr);

ELSIF data_r(12)='1' THEN --ALU_and='1'

acc := acc and UNSIGNED(mdr);

ELSIF data_r(21)='1' THEN --ALU_srl='1'

acc :=acc(word_w-1-1 DOWNTO 0) & '0';

END IF;

END IF;

ELSE

IF data_r(11)='1' THEN --ALU_ACC='1'

IF data_r(6)='1' THEN --ALU_add='1'

acc := acc + UNSIGNED(reg);

ELSIF data_r(12)='1' THEN --ALU_and='1'

acc := acc and UNSIGNED(reg);

ELSIF data_r(21)='1' THEN --ALU_srl='1'

acc :=acc(word_w-1-1 DOWNTO 0) & '0';

END IF;

END IF;

END IF;

IF acc=zero THEN

z_flag <='1';

ELSE

z_flag <='0';

END IF;

acc_out<=acc;

--RAM

IF data_r(14)='1' THEN --load_MAR='1'

mar := UNSIGNED(sysbus(word_w-op_w-1 DOWNTO 0));

ELSIF data_r(12)='1' THEN --load_MDR='1'

mdr := sysbus;

ELSIF data_r(18)='1' THEN --load_REG='1'

reg := sysbus;

ELSIF data_r(8)='1' THEN --CS='1'

IF data_r(7)='1' THEN --R_NW='1'

mdr := mem(TO_INTEGER(mar));

ELSE

mem(TO_INTEGER(mar))<=mdr;

END IF;

END IF;

mdr_out <= mdr;

mar_out <= mar;

END IF;

sysbus_out <=sysbus;

END PROCESS;

PROCESS(mode,mem_addr)

BEGIN

--mode=0 -> sysbus

--mode=1 -> PC

--mode=2 -> result of ALU

--mode=3 -> IR

--mode=4 -> MAR

--mode=5 -> MDR

--mode=6 -> mem

output <= (OTHERS =>'0');

CASE mode is

WHEN "000" =>

output<=sysbus_out;

WHEN "001" =>

output(word_w-op_w-1 DOWNTO 0)<= STD_LOGIC_VECTOR(count);

WHEN "010" =>

output <= STD_LOGIC_VECTOR(acc_out);

WHEN "011" =>

output <= IR_out;

WHEN "100" =>

output(word_w-op_w-1 DOWNTO 0) <= STD_LOGIC_VECTOR(mar_out);

WHEN "101" =>

output <= mdr_out;

WHEN "110" =>

output <= mem(TO_INTEGER(mem_addr));

WHEN others =>

output <= (OTHERS =>'Z');

END CASE;

END PROCESS;

END ARCHITECTURE;

10. 调试仿真

add_r_out下地址的输出端,clock为时钟脉冲,data_r_out为微指令的输出,mem_addr为内存地址的输入,mode为输出模式的选择,op_out为操作码的输出,output结果的输出,根据模式决定,reset复位信号,

1. mode的值为010,则output中输出为acc中的内容:

STA指令:把9号单元的数据放到acc中,把10号单元的数据放入寄存器中。此时acc值为2,寄存器的值为3,仿真图并不显示。

仿真图1 STA指令

ADD 指令:把9号单元的数据放到acc ,并与寄存器中的数据相加,把结果放到acc 中,acc 中的数据为5。

SUB 指令:acc 中的数据与10号单元的数据想减,结果放到acc 中。acc 中数据为2

AND 指令:acc 中的数据与10号单元的数据相与,结果放到acc 中。acc 中数据为2。

仿真图2 ADD 指令

仿真图3 SUB 指令

仿真图4 AND 指令

SHL 指令:acc 中的数据逻辑左移一位,空位补0,结果放入acc 中。acc

中数据为4.

NOP 指令:此操作为空操作,对acc 中数据无影响。

JMP 指令:跳转到STA 指令,将9号单元的数据放到acc 中。acc 中数据为

2.

仿真图5 SHL 指令

仿真图6 NOP 指令

仿真图7 JMP 指令

2.mode中的值为001,则则output中输出为pc中的内容:

在此只截了具有代表性的jmp

指令截图:

11. 课程设计回顾总结

本次课程设计我们要设计一台微程序控制的模型计算机,完成对计算机组成原理这门课程的综合应用,达到学习本书的作用。由于计算机设计的部件较多、结构原理较复杂,对于我们这样的初设计者来说感到无从下手,所以我们在整个过程中采取由浅入深,由简单到复杂的放法,通过这次设计,使我们能清楚的了解计算机的基本组成、基本原理和设计步骤、设计思路和调试步骤,为独立完成计算机设计奠定了基础。也是通过这次课程设计,使我学会了我的动手能力以及动脑能力的重要性,同时信心也增强了,在课程设计中通过自己动脑子解决遇到的问题,把书本上学到的知识应用到实践中去,这样也巩固和深化了自己的知识结构。

虽然在设计的过程中遇到了很多问题不是我自己能够独自解决的,但是通过同学和老师的帮助和指导使我遇到的问题得到清楚的解决,同时也让我学到在遇到问题时如何去解决所遇到的问题。虽然在整个设计过程不是很完善,所做的也都只是按老师的最低要求完成的,只是多加了一条指令,但是总的来说这次课程设计还是很成功的,从中我得到了不少的收获,它很好的将理论与实际相结合,既检验了知识还锻炼了思维和设计操作能力。在此次的课程设计中,我要感谢辅导我们的老师们,是你们不辞辛苦的奔波以及对我们的帮助和指导,才让我们顺利的完成了这次课程设计。在此我代表所有的同学跟你们说声谢谢!

参考文献

[1] 罗克露,单立平,刘辉,俸志刚.计算机组成原理.北京:电子工业出版社,2004。

[2] 张兴忠,阎宏印,武淑红.数字逻辑与数字系统.北京:科学出版社,2004。

[3] 杨春武,于艳丽,刘敬晗.tec-ca学生实验指导书.北京:清华大学科教仪器厂,2005。

8位模型机课程设计

xxxxx 课程设计报告学院机电信息学院 课程课程设计 专业计算机科学与技术班级xxxxx 姓名xxxxxxx x 学号xxxxxxxxxx 指导教师xxxxxx 日期201x年x月x日

目录 1.概述 0 2.总体设计 0 3.详细设计 (2) 3.1 运算器 (2) 3.2 存储器 (3) 3.3 微控制器 (5) 3.4 基本模型机设计与实现 (8) 4. 总结 (10) 参考文献 (11)

8位模型机的设计与仿真 1.概述 在掌握部件单元电路设计与仿真的基础上,进一步将其组成系统构造一台8位模型机。字长是8位纯整型,包含基本的五大件:运算器、存储器、控制器、I/O设备。它的结构框图如下图1-1所示. 这基本的五大件通过数据总线连接,实现数据的处理和控制。 部件实验过程中,各部件单元的控制信号是人为模拟产生的,而综合实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 2.总体设计 模型机主要由运算器、控制器、存储器、数据总线、输入输出和时序产生器组成,模型机的结构图如图2-1所示。 图2-1 模型机结构图 在图2-1中T1、T2、T3和T4等控制信号都是由时序产生器生产,时序产生器由时序电路实现如图2-2所示,时序产生器一个周期中产生四个脉冲信号T1~T4,这四个脉冲信号用于控制组件的执行顺序,组件在这些信号的控制下有序的执行,一个周期中完成一条微指令的执行。 图2-2 时序产生器

16位模型机的设计

16位CPU的设计 要求: 此模型机的功能是将存储区的数据块复制到另一个存储区。 汇编代码如下: START:LOADI R1,0010H ;源操作数地址送R1 LOADI R2,0030H ;目的操作数地址送R2 LOADI R6,002FH ;结束地址送R6 NEXT:LOAD R3,[R1] ;取数 STORE [R2],R3 ;存数 BRANCHGTI START ;如果R1>R6,则转向START INC R1 ;修改源地址 INC R2 ;修改目的地址 BRANCHI NEXT ;转向NEXT 1.16位CPU的组成结构

2.指令系统的设计 一、指令格式 1)单字指令格式 2)双字指令格式 操作码指令功能 00001 LOAD 装载数据到寄存器 00010 STORE 将寄存器的数据存入到存储器 00100 LOADI 将立即数装入到寄存器 00101 BRANCHI 无条件转移到由立即数指定的地址 00110 BRANCHGTI 如果源寄存器容大于目的寄存器的容,则转移到由 立即数指定的地址 00111 INC 寄存器容加1指令 依据以上设计的指令系统,则完成数据块复制的程序如下: 地址机器码指令功能说明 0000H 0001H 2001H 0010H LOADI R1,0010H 源操作数地址送R1

一、程序包:说明运算器的功能、移动寄存器的操作、比较器的比较类型和用于CPU控 制的状态类型。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; package cpu_lib is subtype t_shift is unsigned (3 downto 0); constant shftpass :unsigned(3 downto 0):="0000"; constant sftl :unsigned(3 downto 0):="0001"; constant sftr:unsigned(3 downto 0):="0010"; constant rotl :unsigned(3 downto 0):="0011"; constant rotr :unsigned(3 downto 0):="0100"; subtype t_alu is unsigned(3 downto 0); constant alupass :unsigned(3 downto 0):="0000";

基本模型机的设计与实现课程设计报告

基本模型机的设计与实现课程设计报告 https://www.doczj.com/doc/e613749081.html,/maria87328/archive/2008/01/13/2041130.aspx 一、实验基本任务 1、由基本单元电路构成一台基本模型机。 2、设计五条机器指令,并编写相应的微程序。 3、调试指令和模型机使其在微程序的控制下自动产生各部件单元的控制信号正常工作。 二、设计方案 1、硬件设计 (1)设计微程序控制电路 微程序控制器的组成:控制存储器:EPROM2816*3,8D触发器74ls273*2,4D触发器74ls74*3;微指令寄存器格式:18位微指令,6位微地址。 (2)设计时钟信号源和时序控制电路 时钟信号源的组成:时基电路555,可触发单稳态多谐振荡器74ls237*2,输出频率为330-580Hz的方波信号。 时序控制电路:4D触发器74ls175*1组成移位寄存器电路。 (3)设计主存储器 主存电路的组成:6264存储器(8K*8位)*3,地址寄存器:74ls273*1,三态门:74ls245*1。 2、微控制设计 (1)实现存储器读操作; 拨动总清开关后,置控制开关SWC、SW A为“0 0”时,按要求连线后,连续按动“启动运行”开关,可对主存储器RAM连续手动读操作。 (2)实现存储器写操作; 拨动总清开关后,置控制开关SWC、SW A为“0 1”时,按要求连线后,再按动“启动运行”开关,可对主存储器RAM 连续手动写入。 (3)实现程序运行操作。 拨动总清开关后,置控制开关SWC、SW A为“1 1”时,按要求连线后,再按动“启动运行”开关,即可转入到第01号“取址”微指令,启动程序运行。

嵌入式的8位CISC模型机设计报告

韶关学院 课程设计说明书(论文) 课程设计题目:嵌入式的8位CISC模型机设计 学生姓名: 学号: 院系:计算机科学学院 专业班级: 指导教师姓名及职称: 起止时间:2011 年10 月——2011 年11 月 课程设计评分:

目录 一、实验目的 二、设计题目及要求 三、设计方案: 1.模型机的总体设计 2. 微程序控制器的组成原理框图 3. 模型机机器指令格式和指令系统 4. 时序产生器的设计原理及时序波形图 5. 微程序流程图 6. 微程序控制器单元 7. 汇编语言源程序 8. 机器语言的源程序 四、设计的过程与步骤 五.模型机系统顶层电路图 六.模型机的时序仿真波形图七.设计总结 八.参考文献

韶关学院课程设计任务书 学生姓名专业班级09科学与技术2班学号 指导教师姓名及职称设计地点信息418 设计题目嵌入式的8位CISC 本课程设计课题任务的内容和要求: 设计一台嵌入式的8位CISC模型计算机,并运行能完成一定功能的机器语言程序进行验证,程序功能可以是以下两个之一: ?求出1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长。 说明:N从开关输入,和从数码管输出,然后输出显示停止。 对本课程设计工作任务及工作量的要求: 课程设计完成工作任务内容如下: (1)完成系统的总体设计,画出模型机数据通路框图。 (2)设计微程序控制器(CISC模型计算机)的逻辑结构图。 (3)设计机器指令格式和指令系统。 (4)设计时序产生器电路。 (5)设计所有机器指令的微程序流程图(CISC模型计算机) (6)设计操作控制单元。 ●设计的是CISC模型计算机,设计微指令格式(建议采用全水平型微指令),并根据微程序流程图和微指令格 式设计微指令代码表。根据微程序控制器的逻辑结构框图、微指令格式和微指令代码设计微程序控制器,包 括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器。 (7)设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件——图形描述文件)对模型机中的各个部件进行编程,并使之成为一个的整体,即形成顶层电路或顶层文件。 (8)由给出的题目和设计的指令系统编写相应汇编语言源程序(验证程序)。 (9)根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机的ROM中。(10)使用EDA软件MAX+plusII进行功能仿真,要保证其结果满足题目的要求(其中要利用MAX+plusII提供的波形编辑器,选择合适的输入/输出信号及中间信号进行调试)。 (11)选用给定的FPGA芯片——EP1K30TQC144进行器件编程和时序仿真,并将顶层电路或顶层文件下载到专用的EDA实验平台——GW48 EDA教学实验系统后进行操作演示。 课程设计应完成的图纸: (1)顶层设计的电路原理图; (2)元件(模块)符号图; (3)仿真波形图。 进度安排: 时间为18学时,分散在9周进行,每周2学时。 1、第1--4周:EDA技术基础知识教学讲座; 2、第5—8周:MAX+PLUS基础实验,确定课程设计题目,进行资料收集和学习、设计方案确定、电路设计、 程序设计与计算机仿真; 3、第9周:编写课程设计实验报告。 主要参考文献: [1] ]陈智勇等编. 《计算机原理课程设计》. 西安电子科技大学. 2006年6月 [2] 潘松黄继业编. 《EDA技术实用教程》(第二版). 科学出版社 2005年2月 [3] 罗克露等编. 《计算机组成原理》. 电子工业出版社 2004年8月 [4] 江国强编. 《EDA技术习题与实验》. 电子工业出版社 2005年1月 [5] 彭玄璋编《基于EDA技术的组成原理课程设计实验指导书》(自编教材) 2010年3月

计算机硬件课程设计--简单模型机设计

计算机硬件课程设计--简单模型机设计

计算机硬件综合课程设计报告

简单模型机设计 一、设计要求 硬件:TDN-CM+计算机组成原理实验系统一台,PC机一台,排线若干,串口线一根。 软件:CMP软件 二、设计目的 1.通过对一个简单计算机的设计,对计算机的基 本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。 2.通过这次课程设计,建立整机的概念,对程序 进行编辑,校验,锻炼理论联系实际的能力。 3.通过本次课程设计熟悉和训练设计思路与实 现方法。 4.通过本次课程设计锻炼团队合作的能力和团 队问题的解决。

三、设计电路及连线 设计电路及连线实验图如下图1-1所示。 图1-1 简单模型机连线图 四、设计说明 本次课程设计将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器

来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 本次课程设计采用五条机器指令:IN (输入)、ADD (二进制加法)、STA (存数)、OUT (输出)、JMP (无条件转移),其指令格式如下(前4位为操作码): 助记符 机器指令码 说 明 微程序入口地址 IN 0000 0000 “INPUT DEVICE ”中 10 的开关状态→R0 0001 0000 ×××× ×××× R0+[addr]→R0 11 0010 0000 ×××× ×××× R0→[addr] 12 0011 0000 ×××× ×××× [addr]→BUS 13 0100 0000 ×××× ×××× addr →PC 14 ADD addr STA

计算机组成—复杂模型机方案

课程设计:计算机组成原理 题目名称:复杂模型机的设计 姓名: 学号:1108020184 1108020185 班级:网络工程1101班 完成时间:2018年1月6日1设计目的:建立清晰完善的整机概念; 学习设计与调试计算机的基本方法;培养严谨的科研作风和独立工作能力。 2设计任务: 综合运用所学的计算机原理知识,按给定的指令系统分和数据格式,在所提供的设备范围内,设计一台字长八位的由微程序控制器来控制的模拟计算机。设计并实现较为完整的八位模型计算机。 设计微程序控制器的逻辑原理电路图;

设计微地址转移的逻辑电路图; 设计微程序流程图; 设计说明书。 3设计指标: 字长八位; 时钟源MF=QB=1us 内存容量不得小于2 8; 指令系统不得小于十四条。要求算术逻辑指令七条、访问内存和控制指令四条、输入输出指令两条、其他指令一条。 4设计说明: 4.1数据格式 模型机规定采用定点补码表示法表示数据,且字长为8位,其格式如下: 其中,第7位为符号位,数值的表示范围是:-1乞X <1 模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。 [1]算术逻辑指令 设计九条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址, 其格式如下: 其中,OP-COD为操作码,Rs为源寄存器,Rd为目的寄存器,并规定: [2]访存指令及转移指令 模型机设计两条访问指令,即存数(STA>、取数(LDA>,两条转移指令, 即无条件转移(JMP>结果为零或有进位转移指令(BZC>。其格式如下:

D 其中,OP-CODE^操作码,Rd为目的寄存器,D为位移量(正负均可>, M为寻址方式,其定义如下: 本模型机规定变址寄存器RI指定为寄存器R2 [3]I/O 指令 输入v IN)和输出<OUT)指令采用单字节指令,其格式如下: 其中,addr=01时,表示选中“输入单元”中的开关组作为输入设备, addr=10时,表示选中“输出单元”中的数码管作为输出设备。 [4]停机指令 这类指令只有1条,即停机指令HALT用于实现停机操作,指令格式如 4. 2系统指令 本模型机共有1 4条基本指令。其中,算术逻辑指令6条,移位指令2条,访问内存指令和程序控制指令3条,输入输出指令2条,其他它指令1条。表1列出了各条指令的格式、汇编符号、指令功能。

模型机实验报告

哈尔滨工程大学 实验报告 实验名称:复杂模型机设计与实现 班级: 学号: 姓名: 实验时间: 成绩: 指导教师:程旭辉附小晶 实验室名称:计算机专业实验中心 一、实验名称:复杂模型机的设计与实现 二、实验目的:

1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。 2.设计指令系统。 3.编写简单程序,在所设计的复杂模型计算机上调试运行。 三、实验设备: GW-48CPP系列计算机组成原理实验系统。 四、实验原理: 1.数据格式 8位,其格式如下: 其中第7位为符号位,数值表示范围是:-1≤1。 2.指令格式 所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。 (1)算术逻辑指令 设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下: 其中, (2)访问指令及转移指令 访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC) 其中,OP-CODE指令)。D为位移量(正负均可),M为寻址模式,其定义如下: 在本模型机中规定变址寄存器RI为寄存器R2。 (3)I/O指令 输入(IN)和输出( 其中,addr=01时,选中“OUTPUT DEVICE”中的LCD

点阵液晶屏作为输出设备。 (4)停机指令 指令格式如下: 3.指令系统 共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其

本模型机的数据通路框图如图7-1。根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。 图7-2 微程序流程图 五、实验内容: 按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。 微代码定义如表7-1所示。

计算机组成原理课程设计基本模型机设计与实现

课程设计(大作业)报告 课程名称:计算机组成原理 设计题目:基本模型机设计与实现 院系:信息技术学院 班级:计算机科学与技术3班 设计者: 学号: 指导教师:________________________________ 设计时间: 昆明学院 信息技术学院 课程设计(大作业)任务书 姓名:院(系):信息技术学院 专业:计算机科学与技术学号:课程设计题目:基本模型机设计与设计课程设计要求: 本课程设计以ZYE1603E计算机组成原理及系统结构教学实验系统为平台,设计完成。 1. 按给定的数据格式和指令系统,设计一个微程序控制器。 2. 设计给定机器指令系统以及微程序流程图,按微指令格式写出微程序的为指令代码。 3. 连接逻辑电路完成启动、测试、编程、测试、效验和运行,并观测运行过程及结果。 4. 将微程序控制器模块与运算器模块,存储器模块联机,组成一台模型计算机。 5. 用微程序控制器控制模型机的数据通路。 6. 通过在模型机上运行由机器指令组成的简单程序,掌握机器指令与微指令的关系, 建立计算机整机的概念,掌握计算机的控制机制。 7. 按指定的应用项目进行汇编指令格式及功能设计,并设计相应的机器指令代码,按照模型机数据通路设计实现机器指令功能的微程序。在PC机上编辑机器指令和微程序, 装载代码到ZYE1603B实验系统并运行,实现应用要求。 工作计划及安排:

2017年6月19日上午:集中进行课程设计题目的讲解和分解,提出学生需要掌握的硬件和软件方面的知识和要求;以及在课程设计期间的安全和纪律要求,熟悉开发环境 (ZYE1603B (4401 机房)。 2017年6月19日下午:查阅资料、确定题目,了解各人(小组)设计安排,就设计过程进行集中讲解,解决设计过程存在的问题。 2017年6月20日~6月22日:在机房进行系统的设计。 2017年6月23日上午:分组讨论,进行交流,了解学生的掌握情况,对本周的学习情况进行总结,对后续的设计提出要求;对存在的问题进行分析和解决。(机房)。 2017年6月23日下午:答辩,成绩评定。 指导教师签字_________________ 2017年6月19日

基本模型机设计及实现

基本模型机设计及实现文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

课程设计任务书课程名称:计算机组成原理 设计题目:(共3个课题,最多3人一组,每组任选一题) 1.基本模型机设计与实现; 2.带移位运算的模型机的设计与实现; 3.复杂模型机的设计与实现。 已知技术参数和设计要求: 内容和技术参数: 利用所学过的理论知识,特别是微程序设计的思想,写出要设计的指令系统的微程序。设计环境为TDN-CM+计算机组成原理教学实验系统,微机,虚拟软件。将所设计的微程序在此环境中进行调试,并给出测试思路和具体程序段。最后撰写出符合要求的课程设计说明书、完成答辩。 1.基本模型机设计与实现 指令系统至少要包括六条不同类型指令:如一条输入指令,一条减法指令,一条加法指令,一条存数指令,一条输出指令和一条无条件转移指令。 2. 带移位运算的模型机的设计与实现 在基本模型机的基础上增加左、右循环和左、右带进位循环四条指令 3. 设计不少于10条指令的指令系统。其中,包含算术逻辑指令,访问内存指令,程序控制指令,输入输出指令,停机指令。重点是要包括直接、间接、变址和相对寻址等多种寻址方式。 以上数据字长为8位,采用定点补码表示。指令字长为8的整数倍。微指令字长为24位。

具体要求: 1、确定设计目标 确定所设计计算机的功能和用途。 2、确定指令系统 确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式。确定相对应指令所包含的微操作。 3、总体结构与数据通路 总体结构设计包括确定各部件设置以及它们之间的数据通路结构。在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。 综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。 4、设计指令执行流程 数据通路确定后,就可以设计指令系统中每条指令所需要的机器周期数。对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。 5、确定微程序地址 根据后续微地址的形成方法,确定每个微程序地址及分支转移地址。 6、微指令代码化 根据微指令格式,将微程序流程中的所有微指令代码化,转化成相应的二进制代码写入到控制存储器中的相应单元中。

计算机组成原理-简单模型机设计课设

目录 摘要 (2) 前言 (3) 正文 (4) 一、设计目的和设计原理 (4) 1.1设计目的 (4) 1.2设计原理 (4) 二、总体设计 (7) 三、详细设计 (8) 3.1运算器的物理结构 (8) 3.2存储器系统的组成与说明 (11) 3.3指令系统的设计与指令分析 (12) 3.4微程序控制器的逻辑结构及功能 (14) 3.5微程序的设计与实现 (18) 四、系统调试 (27) 总结 (29) 参考文献 (30) 致谢 (31)

摘要 根据设计任务书要求,本设计要实现完成一个简单计算机的设计,主要设计部分有运算器,存储器,控制器以及微指令的设计。 其中运算器由运算芯片和寄存器来完成,存储器由总线和寄存器构成,使用硬布线的方式实现控制器,从而完成设计要求。 : 关键词:基本模型机的设计;运算器;存储器;控制器;

前言 计算机组成原理是计算机科学技术学科的一门核心专业基础课程。从课程的地位来说,它在先导课程和后续课程之间起着承上启下的作用。 计算机组成原理讲授单处理机系统的组成和工作原理,课程教学具有知识面广,内容多,难度大,更新快等特点。此次课程设计目的就是为了加深对计算机的时间和空间概念的理解, 增强对计算机硬件和计算机指令系统的更进一步了解。 计算机组成原理课程设计目的是为加深对计算机工作原理的理解以及计算机软硬件之间的交互关系。不仅能加深对计算机的时间和空间的关系的理解,更能增加如何实现计算机软件对硬件操作,让计算机有条不紊的工作。

正文 一、设计目的和设计原理 1.1设计目的 融会贯通计算机组成原理课程中各章的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对硬连线控制器的认识,建立清晰的整机概念。对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。 在掌握部件单元电路实验的基础上,进一步将其组成系统地构造一台基本模型计算机。 1.2设计原理 (1)运算器 设计中所用的运算器数据通路,其中运算器由两片74LS181以并/串形成8位字长的ALU构成。运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,内部数据总线通过LZD0~LZD7显示灯显示;运算器的两个数据输入端分别由二个锁存器74LS273(U29、U30)锁存,两个锁存器的输入并联后连至插座ALUBUS,测试时通过8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,通过数据开关输入的数据由LD0~LD7显示。 算术逻辑运算功能发生器 74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M并行相连后连至SJ2插座,测试时通过6芯排线连至6位功能开关插座UJ2,以手动方式用二进制开关S3、S2、S1、S0、CN、M来模拟74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M;其它电平控制信号LDDR1、LDDR2、ALUB`、SWB`以手动方式用二进制开关LDDR1、LDDR2、ALUB、SWB来模拟,这几个信号有自动和手动两种方式产生,通过跳线器切换,其中ALUB`、SWB`为低电平有效,LDDR1、

计算机组成原理复杂模型机的组成与运行

内蒙古师范大学计算机与信息工程学院《计算机组成原理》课程设计报告 题目五:复杂模型机的组成与运行

目录 1[ 任务描述] (2) 1.1题目名称 (2) 1.2要求 (2) 1.3实验目的 (2) 2 [设计设备] (2) 3 [设计原理和方法] (2) 3.1设计原理 (2) 3.1.1数据格式 (2) 3.1.2指令设计 (2) 3.1.3指令格式 (3) 3.1.4指令系统 (4) 3.2设计依据 (5) 3.2.1详细设计 (5) 3.3.2实验操作 (7) 4 [代码清单] (8) 4.1微程序流图 (8) 4.2机器指令代码 (9) 4.3微程序代码 (10) 5 [设计运行结果分析] (12) 5.1实验结果: (12) 5.2出错情况: (12) 6 [设计小结] (12) 7[致谢] (13) 8[参考文献] (14) 附录一:数据通路框图 (15) 附录二:复杂模型机实验电路连线图 (16)

题目五复杂模型机的组成与程序运行 1[ 任务描述] 1.1 题目名称:复杂模型机的组成与程序运行 1.2 要求:基于TD-CMA计算机组成原理教学实验系统,设计一个复杂计算机整机系统—模型机,分析其工作原理。根据模型机的数据通路以及微程序控制器的工作原理,设计完成以下几条机器指令和相应的微程序,输入程序并运行。 IN R0,00H ;从端口00H读入计数初值到R0 LDI R2,50H ;读入数据始地址 LDI R1,00H ;累加和初值00H START: LAD 10,00H,R3 ;从MEM 读入数据送R3,变址寻址,偏移量为00H ADD R1,R3 ;累加求和 INC RI ;变址寄存加1,指向下一数据 LDI R3, 01H ;送立即数入R3 SUB R0, R3 ;R0-R3 ->R0,与上一条指令一起实现DEC R0 BZC RESULT ;为0 则跳转 JMP START ;跳转至START RESULT: OUT 40H,R1 ;和在OUT 单元显示 HLT ;停机 50H、51H、52H、53H、54H单元内容分别为02H、03H、04H、05H、06H。 1.3 实验目的:该实验通过从端口00H读入一个计数初值,以该计数初值为基准从MEM 的50H单元开始的连续的计数初值个数的累加和,最后将求得的累加和从端口40H输出显示。 2 [设计设备] 实验设备:西安唐都科教仪器公司生产的TD-CMA 实验系统一套,PC机一台,数据连接导线若干,电源。 3 [设计原理和方法] 通过已经学过的计算机组成原理知识,在TD-CMA实验系统上设计一个复杂模型机。 3.1 设计原理 3.1.1数据格式 模型机规定采用定点补码表示法表示数据,字长为8位,8 位全用来表示数据(最高位不表示符号),数值表示范围是: 0≤X≤28-1。 3.1.2指令设计 该复杂模型机设计包含运算类指令、控制类指令、数据传输类指令三大类指令。 运算类指令仅用到了算术运算,算术运算设计有3 条运算类指令,分别为:ADD(两寄存器值加法)、INC(寄存器值自加1)、SUB(两寄存器值减法)。所有运算类指令都为单

8位模型计算机的设计

石家庄经济学院 华信学院 计算机组成原理课程设计报告 题目 8位模型计算机的设计 姓名 学号 班号 4064170801 指导老师关文革尹立洁赵洋 成绩 2009年1月 目录 1. 课程设计目的 52 2. 开发工具选择 52 3. 方案选择 52 4.指令系统设计 52 5. 模型机框图设计 52 6. 指令流程图 52 7. 指令操作时间表(组合逻辑控制器)或者微指令格式(微程序控制器)设计 52 8. 微操作信号综合与优化(组合逻辑控制器)或者微程序(微程序控制器)设计 52 9. VHDL实现 52 10. 调试仿真 52 11. 课程设计回顾总结 52 参考文献 52 附录 52 一、课程设计目的 1、计算机组成原理课程设计的主要任务是让学生通过动脑和动手解决计算机设计中的实际问题。综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。

2、通过一台模型机的设计过程,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。 二、开发工具选择 以TEC-CA教学实验系统为平台,采用硬件描述语言 VHDL为设计工具,应用QUARTUSⅡ5.1环境进行大规模集成电路的功能设计仿真。 三、方案选择 应用微程序控制器来实现8位模型计算机的设计。 四、指令系统设计 所要设计的微程序控制器是由七条指令来完成的,即:load,sta,add,sub,and1,nop,jmp。实现功能分别如下:load指令是公操作,实现取数据的功能;sta指令实现存操作;add指令实现加法操作;sub指令实现减法操作;and指令实现与操作; nop指令实现空操作;jmp指令实现无条件跳转操作。 其中add,sub,and1,属于双操作数指令,其指令格式如下图: 目的 源 其中jmp属于转移指令,其指令格式如下图: 转移条件 转移地址 五、模型机框图设计 I/O 六、指令流程图 Addr_bus load_MAR CS R_NW 3 OP

实验七基本模型机的设计与实现

实验七 基本模型机的设计与实现 一、实验目的 ⒈在掌握部件单元电路实验的基础上,进一步将其组成系统地构造 一台基本模型计算机。 ⒉为其定义5条机器指令,并编写相应的微程序,上机调试掌握整机 概念。 二、实验设备 Dais-CMH+/CMH 计算器组成原理教学实验系统一台,实验用扁平 线、导线若干。 三、实验原理 部件实验过程中,各部件单元的控制信号是以人为模拟产生为主,而 本次实验将能在微程序控制下自动产生各部件单元的控制信号,实现特 定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完 成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全 部由微指令组成的序列来完成,即一条机器指令对应一个微程序。 本实验采用五条机器指令:IN(输入)、ADD(二进制加法)、 STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下 (前三位为操作码): ==========================================================助记符 机器指令码 说 明 -------------------------------------------------- ------------- IN R0,SW 0010 0000 数据开关状态 →R0 ADD R0,[addr] 0100 0000 XXXXXXXX R0+[addr]→R0 STA [addr],R0 0110 0000 XXXXXXXX R0→[addr] OUT [addr],LED 1000 0000 XXXXXXXX [addr]→LED JMP addr 1010 0000 XXXXXXXX addr→PC ==========================================================其中IN为单字节(8位),其余为双字节指令,XXXXXXXX为addr对 应的二进制地址码。 根据以上要求设计数据通路框图,如图7-10-1所示。系统涉及到的 微程序流程见图7-7-3,当拟定“取指”微指令时,该微指令的判别测试 字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公用微指 令,因此P(1)的测试结果出现多路分支。本机用指令寄存器的前3位 (IR7~IR5)作为测试条件,出现8路分支,占用8个固定微地址单元。 当全部微程序设计完毕后,应将每条微指令代码化,表7-10-1即为 将图7-10-2的微程序流程图按微指令格式转化而成的“二进制微代码

计算机组成原理 基本模型机实验

淮海工学院计算机工程学院实验报告书 课程名:《计算机组成原理》 题目:实验四基本模型机实验 班级: 学号: 姓名:

1、目的与要求 1)在“微程序控制器的组成与微程序设计实验”的基础上,将第一部分中的各单元组成系统,构造一台基本模型计算机。 2)本实验定义五条机器指令,编写相应的微程序,并上机调试运行,形成整机概念。2、实验设备 1) ZYE1601B计算机组成原理教学实验箱一台,排线若干。 2) PC机一台。 3、实验步骤与源程序 l) 根据该模型机的指令系统,编写一段程序。这里给出两个参考程序。 参考程序一: 本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。)。 设计机器指令程序如下(机器码为十六进制数据)。 地址内容助记符说明 00 00 IN ;输入开关数据→R0 01 20 STA [08H] ;R0→[08] 02 08 ;地址 03 30 OUT [08H] ;[08H]→BUS 04 08 ;地址 05 40 JMP [00H] ;00H→PC 06 00 ;跳转地址 参考程序二: 本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED 数码管)进行显示。本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。 设计机器指令程序如下(机器码为十六进制数据)。 地址内容助记符说明 00 00 IN ;输入开关数据→R0,采集数据 01 10 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加 02 0A ;地址 03 20 STA [0BH] ;R0→[0B] 04 0B ;地址 05 30 OUT [0BH] ;[0BH]→BUS,输出显示 06 0B ;地址 07 40 JMP [00H] ;00H→PC 08 00 ;跳转地址 0A 01 ;加数,可自定 0B ;求和结果保存在0B单元 2) 按图1连接实验线路。 3) 写程序: 对于本实验箱可以用两种方法来写入程序。 方法一:手动写入 (1)先将机器指令对应的微代码正确地写入2816中,由于在实验1.6微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2—2校验正确后就可使用。

计算机组成原理课程设计基本模型机设计与实现

课程设计(大作业)报告课程名称:计算机组成原理 设计题目:基本模型机设计与实现 院系:信息技术学院 班级:计算机科学与技术3班 设计者: 学号: 指导教师: 设计时间: 昆明学院 信息技术学院 课程设计(大作业)任务书

目录 课程设计(大作业)报告 一、课程设计的教学目的 1. 在“微程序控制器的组成与微程序设计实验”的基础上,进一步将其中各单元组成系统构造一台模型计算机。 2. 本实验定义五条机器指令,编写相应的微程序,并上机调试运行,形成整机概念。 课程设计内容设计一台基本模型机,并实现相关的指令。 二、课程设计任务和基本要求 本课程设计以TDN-CM++计算机组成原理教学实验系统为平台设计完成。 1.按给定的数据格式和指令系统,设计一个微程序控制器。 2.设计给定机器指令系统以及微程序流程图,按微指令格式写出微 程序的为指令代码。

3.连接逻辑电路完成启动,测试,编程,测试,效验和运行,并观测运 行过程及结果。 4.将微程序控制器模块与运算器模块,存储器模块联机,组成一台 模型计算机。 5.用微程序控制器控制模型机的数据通路。 6.通过在模型机上运行由机器指令组成的简单程序,掌握机器指令 与微指令的关系,建立计算机整机的概念,掌握计算机的控制机制。 7.按指定的应用项目进行汇编指令格式及功能设计,并设计相应的 机器指令代码,按照模型机数据通路设计实现机器指令功能的微程序.在 PC机上编辑机器指令和微程序,装载代码到TDN-CM++实验系统并运行,实现应用要求。 三、设计任务及分析 (1)设计任务: 从输入设备读取数据X并将其存入以A为间接地址的 内存单元,将X与R 0. 寄存器中的内容Y执行X ⊕,结果送到以B为直接地址的内存单元保存。 (2)分析: A:给R 寄存器直接置入01H. B:从数据开关给间接地址为0CH的内存单元置数,(03H). C:给R 0中的内容取反,结果存在R 中. D:将间接地址0CH中直接地址0EH中的内容(03H)放入DR1中, R 中的内容 放入DR2中,将DR1和DR2种的数进行异或运算,结果放在R 中. E:将R 中的内容存在直接地址为0DH的内存单元中. 四、设计原理 模型机在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。 本实验采用五条机器指令: IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下(前4位为操作码):

基本模型机设计与实现.

课程设计 课程名称:计算机组成原理 设计题目:基本模型机设计与实现 学院:信息工程与自动化 专业:计算机科学与技术 年级: 学生姓名: 指导教师:王海瑞 日期: 教务处制

课程设计任务书 信息工程与自动化学院计算机专业年级 学生姓名: 课程设计题目:基本模型机设计与实现 课程设计主要内容: 利用所学过的理论知识,特别是微程序设计的思想,写出要设计的指令系统的微 程序。将所设计的微程序在计算机组成原理教学实验系统环境中进行测试,并给出测试思路和具体程序段。最后撰写出符合要求的课程设计报告。 首先要确定所设计计算机的功能和用途,设计中根据功能和用途确定指令系统, 数据的表示格式,位数,指令的编码,类型,需要设计那些指令和寻址方式。确定相 对应指令所包含的微操作以及总体结构设计之间的数据通路结构,在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微指令。 设计指导教师(签字): 教学基层组织负责人(签字): 年月日

目录 一、基本模型机的设计,,,,,,,,,,,,,,,, 4 1、程序设计目的,,,,,,,,,,,,,,,, 4 2、程序设计任务和基本要求,,,,,,,,,,,, 4 3、实验原理,,,,,,,,,,,,,,,,,,,,,,, 5 二、实验内容及步骤,,,,,,,,,,,,,,,8 1.实验内容,,,,,,,,,,,,,,,,,,,8 2.实验步骤,,,,,,,,,,,,,,,,,10 3.实验情况及记录,,,,,,,,,,,,,,,14 三、总结体会,,,,,,,,,,,,,,,,,,15 四、参考文献,,,,,,,,,,,,,,,,,,16 一、基本模型机的设计 1、程序设计目的 (1)掌握计算机系统组成及内部工作机制、理解计算机各功能部件工作原理的基础上,深入掌握信息流和控制信息流的流动过程,

计算机组成原理模型机设计与实现

武汉华夏理工学院 课程设计 课程名称计算机组成原理 题目模型机设计与实现 专业 班级 姓名 成绩 指导教师田小华 2016 年12 月27 日

武汉华夏理工学院信息工程系 课程设计任务书 课程名称:计算机组成原理指导教师:田小华 班级名称:开课教研室:软件与信息安全 一、课程设计目的与任务 理解计算机系统各个功能部件的功能、结构和工作原理,正确理解各功能部件之间的相互关系及其在计算机系统中所起的作用;掌握计算机系统各个功能部件的设计和分析技术,包括数据与指令的编码、存储器、运算器、输入输出接口等。 在此基础上,使学生通过理论与实践的结合,利用基本模型计算机的构建与调试实验,完整地建立计算机硬件的整机模型,掌握中央处理器的基本结构和控制流程,掌握机器指令执行的基本过程,熟悉微程序控制器的基本结构和微程序设计技术的主要技巧,理解一条机器指令与一段微程序的关系,明确高级语言指令与微指令的对应关系,充分理解控制信息流利用数据通路完成对数据流的加工处理的过程。 通过课程设计,使学生将所学专业知识综合运用,在实践活动中积累经验,增长才干,训练学生独立工作能力,激发学生的学习热情,培养学生的自主创新精神,养成务实严谨的工作作风。 二、课程设计的内容与基本要求 1.按给定的数据格式、机器指令格式和微指令格式,利用基本的数字逻辑器件,设计—台微程序控制的模型计算机。 2.设计五条机器指令:IN,ADD,STA,OUT,JMP,并用微指令编写微程序,实现每条机器指令的功能。 3.在TD-CMA教学实验平台上实现基本模型机方案: ⑴建立数据通路,定义开关SWA及SWB的功能;⑵确定微程序控制流程,掌握控制台操作;⑶输入编写的五条机器指令的微程序序列;⑷输入实验机器指令程序序列;⑸设计基本模型的物理连线;⑹完成微程序的调试,实现实验机器指令程序的功能。 完成模型机调试任务后,整理课程设计资料,撰写课程设计报告。课程设计报告内容包括: ①模型机数据通路图;②微程序控制器逻辑模块图;③微程序控制流程图;④元件排列图; ⑤设计说明书;⑥调试小结。 三、课程设计步骤及时间进度和场地安排 《计算机组成原理》课程设计将安排在第17周, 地点在信息系实验楼523教室。具体安排如下:1.第17周周1(1节)(12月26日) :集中讲解课程设计原理与方法,3-203教室 2.第17周周1(2--4节):完成模型机的实验线路连接

计算机组成原理-简单模型机设计课设

兰州理工大学技术工程学院 计算机组成原理课程设计任务书(09级)题目:模型机设计—1 学生姓名:学号: 班级:计算机科学与技术(2)班指导老师: 一、计算机组成原理课程设计题目简介 该设计要求学成根据计算机组成原理课程所学知识,设计、开发一套简单的模型就算计。 通过对一个简单计算机的设计,以达到对计算机的基本组成、部件的功能与设计、微程序控制器的设计,微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。通过模型机的设计和调试,连贯运用计算机组成原理课程学到的知识,建立计算机整体概念,加深计算机时间与空间概念的理解。 二、计算机组成原理课程设计任务 1、查阅文献资料,一般在5篇以上; 2、以教学实验用模型机为背景,通过调研、分析现有的模型机,建立带有带8位自增、自减指令的整机模型; 3、完成系统编程与测试工作; 4、撰写设计说明书; 5、做好答辩工作。 三、计算机组成原理课设设计的主要内容、功能及指标 1、根据任务要求设计整体系统的方案。 2、存储系统:使用模型机的存储模块,说明存储器的输入输出时序,模块连接方式等。 3、运算器:使用模型机的器件,组成带有片间串行进位8位移位运算功能的运算器。 4、微程序控制器模块:使用教学机的系统,设计微程序控制器。 5、设计模型机指令系统:(含设计微指令格式,微程序流程图,每条指令所对

应的微程序等)。指令系统包括下列指令:IN、OUT、STA、LDA、JMP、BZC、CLR、MOV、 ADD、SUB、ADC、ADT、INC、DEC、SBT、SBC 6、了解并说明教学模型机的输入输出模块。 7、在自己设计的指令系统基础上,编制一个汇编语言小程序并进行调试通过。 8、整机设计分模块进行,说明模块中数据和控制信号的来源、去向、功能、时序、以及模块间数据和控制信号的来源、去向、功能、时序等。 四、完成课程设计报告 1、设计题目、设计任务、实验设备与器材; 2、整体设计方案,设计原理与内容; 3、画出模型机数据通路图; 4、画出设计的模型机微程序流程图和微程序; 5、说明指令系统的格式; 6、说明模块中数据和控制信号的来源、去向、功能、时序、以及模块间数据和控制信号的来源、去向、功能、时序等。 7、调试情况,调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等; [1]计算机组成原理课程设计提交的成果 1.设计说明书一份,内容包括: 1)中文摘要100字;关键词3-5个; 2)前言; 3) 设计的目的及设计原理; 4)模型机的逻辑结构及框架; 5) 运算器的物理结构; 6)存储器系统的组成与说明; 7)指令系统的设计与指令格式分析; 8) 微程序控制器的逻辑结构及功能; 9)微程序的设计与实现(含微指令格式、后续地址产生方法以及微程序入口地址的形式)

相关主题
文本预览
相关文档 最新文档