设计一台嵌入式CISC模型计算机.doc

上传人:聆听****声音 文档编号:2001596 上传时间:2023-05-02 格式:DOC 页数:37 大小:1.13MB
下载 相关 举报
设计一台嵌入式CISC模型计算机.doc_第1页
第1页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第2页
第2页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第3页
第3页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第4页
第4页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第5页
第5页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第6页
第6页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第7页
第7页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第8页
第8页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第9页
第9页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第10页
第10页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第11页
第11页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第12页
第12页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第13页
第13页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第14页
第14页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第15页
第15页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第16页
第16页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第17页
第17页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第18页
第18页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第19页
第19页 / 共37页
设计一台嵌入式CISC模型计算机.doc_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

设计一台嵌入式CISC模型计算机.doc

《设计一台嵌入式CISC模型计算机.doc》由会员分享,可在线阅读,更多相关《设计一台嵌入式CISC模型计算机.doc(37页珍藏版)》请在冰点文库上搜索。

设计一台嵌入式CISC模型计算机.doc

桂林电子科技大学课程设计论文报告纸

编号:

计算机组成原理课程设计说明书

题目:

设计一台嵌入式CISC模型计算机

系别:

专业:

学生姓名:

学号:

指导教师:

2013年4月09日

目录

1课程设计的题目及内容 1

1.1课程设计的题目 1

1.2课程设计完成的内容 1

2总体设计 2

2.1CISC模型机数据通路框图 2

2.2操作控制器的逻辑结构框图 2

2.3模型机的指令系统和所有指令的指令格式 3

2.4所有机器指令的微程序流程图 5

3汇编语言及机器语言源程序 8

3.1汇编语言源程序 8

3.2机器语言源程序 8

4机器语言源程序的功能仿真波形图及结果分析 9

5故障现象与故障分析 12

6体会 13

7软件清单 14

7.1算术逻辑运算单元ALU 14

7.2状态条件寄存器单元 16

7.3通用寄存器单元 16

7.41:

2分配器单元 17

7.53选1数据选择单元 18

7.5.13选1数据选择器MUX3_1 18

7.5.23选1数据选择器MUX3_2 18

7.64选1数据选择器单元 19

7.6.14选1数据选择器MUX4_1 19

7.6.14选1数据选择器MUX4_2 20

7.7程序计数器单元 21

7.8地址寄存器单元 22

7.9ROM存储器单元 23

7.10RAM存储器单元 24

7.11指令寄存器单元 25

7.12指令转换器单元 25

7.13时序产生器单元 26

7.14微程序控制器单元 27

1课程设计的题目及内容

1.1课程设计的题目

设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,机器语言源程序功能如下:

要求连续输入5个有符号整数(用8位二进制补码表示,十六进制数输入)求所有负数的平方和并输出显示。

说明:

①5个有符号数从外部输入;

②一定要使用符号位(比如说SF),并且要使用负的时候转移(JS)或不为负的时候转移(比如说JNS)指令。

③采用三数据总线结构的运算器,采用RAM,先将输入数据依次存放在RAM的某一连续的存储区域内,再依次读出判断是否为负数,若为负数再求其平方和。

1.2课程设计完成的内容

1.完成系统的总体设计,画出模型机数据通路框图;

2.设计微程序控制器(CISC模型计算机)的逻辑结构框图;

3.设计机器指令格式和指令系统;

4.设计时序产生器电路;

5.设计所有机器指令的微程序流程图;

6.设计操作控制器单元;

在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。

具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。

7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件;

8.由给出的题目和设计的指令系统编写相应的汇编语言源程序;

9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;

10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。

2总体设计

2.1CISC模型机数据通路框图

整个系统数据通路如下所示,但是在数据Cache处(RAM)将双向的数据总线改为单向的输出数据总线和输入数据总线,还有就是所有的输出总线不能直接连接,需增加多路选择器。

2.2操作控制器的逻辑结构框图

指令寄存器IR

操作码

微地址寄存器

地址译码

控制存储器

地址转移

逻辑

状态条件

微命令寄存器

P字段

操作控制字段

微命令信号

2.3模型机的指令系统和所有指令的指令格式

本指令系统共采用了12条不同功能的指令,指令字长度为双字节,寻址方式有三种,分别是寄存器寻址、直接寻址和立即寻址。

为了完成求负数和的平方和的功能,系统共设计了12条指令:

IN1(输入),OUT1(输出),MOV(将一个数送入寄存器),LAD(取数),STOI(存数),JNS(条件转移指令),JMP(无条件跳转指令),ADD(两数相加),MUL(两数相乘),INC(自增1),DEC(字减1),TEST(测试)。

下面分类介绍这些指令的指令格式。

(1)I/O指令

输入指令(IN1)格式:

15—12

1110

98

7—0

操作码

XX

Rd

XXXXXXXX

输出指令(OUT1)格式:

15—12

1110

98

7—0

操作码

Rs

XX

XXXXXXXX

(2)转移指令

条件转移指令(JNS)格式:

15—12

1110

98

7—0

操作码

XX

XX

addr

无条件跳转指令(JMP)格式:

15—12

1110

98

7—0

操作码

XX

XX

addr

(3)数据传输指令

传数指令(MOV)格式:

15—12

1110

98

7—0

操作码

XX

Rd

im

取数指令(LAD)格式:

15—12

1110

98

7—0

操作码

Rs

Rd

XXXXXXXX

存数指令(STOI)格式:

15—12

1110

98

7—0

操作码

Rs

Rd

XXXXXXXX

(4)运算指令

加法指令(ADD)格式:

15—12

1110

98

7—0

操作码

Rs

Rd

XXXXXXXX

乘法指令(MUL)格式:

15—12

1110

98

7—0

操作码

Rs

Rd

XXXXXXXX

自加1指令(INC)格式:

15—12

1110

98

7—0

操作码

XX

Rd

XXXXXXXX

自减1指令(DEC)格式:

15—12

1110

98

7—0

操作码

XX

Rd

XXXXXXXX

测试指令(TEST)格式:

15—12

1110

98

7—0

操作码

Rs

XX

XXXXXXXX

由此可见,本模型机中的指令系统共有12条基本指令。

表2.3给出了每条指令的助记符、指令格式和功能。

助记符号

指令格式

功能

15—12

1110

98

7—0

IN1Rd

0001

XX

Rd

XXXXXXXX

输入设备→Rd

MOVRd,im

0010

XX

Rd

im

立即数→Rd

LAD(Rs),Rd

0011

Rs

Rd

XXXXXXXX

((Rs))→Rd

ADDRs,Rd

0100

Rs

Rd

XXXXXXXX

(Rs)+(Rd)→Rd

INCRd

0101

XX

Rd

XXXXXXXX

(Rd)+1→Rd

DECRd

0110

XX

Rd

XXXXXXXX

(Rd)-1→Rd

JNSaddr

0111

XX

XX

addr

若为正数,addr→PC

STOIRs,(Rd)

1000

Rs

Rd

XXXXXXXX

(Rs)→(Rd)

JMPaddr

1001

XX

XX

addr

addr→PC

OUT1Rs

1010

Rs

XX

XXXXXXXX

(Rs)→输出设备

MULRs,Rd

1011

Rs

Rd

XXXXXXXX

(Rs)*(Rd)→Rd

TESTRs

1100

Rs

XX

XXXXXXXX

测试符号位

其中,对Rs和Rd的规定:

Rs或Rd

选定的寄存器

00

R0

01

R1

10

R2

11

R3

模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:

7

6543210

符号位

尾数

T1、T2、T3、T4与CLR、Q之间的关系图

Q

CLR

T1

T2

T3

T4

一个CPU周期

现在,我们开始微程序控制器的设计,它包括以下几部分工作:

(1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;

(2)设计微指令格式和微指令代码表;

(3)设计地址转移逻辑电路;

(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;

(5)设计微程序控制器的顶层电路。

2.4所有机器指令的微程序流程图

PC→ABUS(I)

RDROM

IBUS→IR

PC+1

P

(1)

00

STOI

TEST

MUL

OUT1

MOV

JMP

JNS

ADDD

IN1

LADD

DEC

INC

0C

03

04

01

0B

0A

09

08

07

06

05

02

Rs→X

锁存CF、SF

Rs→X

Rd→Y

X*Y→Rd

锁存CF、SF

Rs→LED

IR(A)→PC

Rd→AR

Rd→Y

Y-1→Rd

锁存CF、SF

Rd→Y

Y+1→Rd

锁存CF、SF

Rs→X

Rd→Y

X+Y→Rd

锁存CF、SF

Rs→AR

IR(A)→Rd

SW→Rd→

0E

0D

00

00

00

00

RDRAM

DBUS→Rd

RDRAM

DBUS→Rd

00

00

00

00

00

00

P

(2)

IR(A)→PC

00

00

SF=1

0F

00

SF=0

CISC模型机系统使用的微指令采用全水平型微指令,字长为26位,其中微命令字段为18位,P字段为2位,后继微地址为6位,其格式如下:

252423222120191817161514131211109876543210

LOADLDPCLDARLDIRLDRiLDPSWRS_BS2S1S0ALU_BSW_BLED_SRD_DCS_DRAM_BCS_IADDR_BP1P2后继微地址

由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:

LOAD、LDPC、LDAR、LDIR、LDRi、LDPSW、RD_B、RS_B、s2、S1、S0、ALU_B、SW_B、LED_S、RD_D、CS_D、RAM_B、CS_I、ADDR_B。

微地址

LOAD

LDPC

LDAR

LDIR

LDRi

LDPSW

RS_B

S2

S1

S0

ALU_B

SW_B

LED_S

RD_D

CS_D

RAM_B

CS_I

ADDR_B

P1

P2

后继微地址

000000

1

1

0

1

0

0

1

0

0

0

1

1

1

1

1

1

0

1

1

0

000000

000001

1

0

0

0

1

0

1

0

0

0

1

0

1

1

1

1

1

1

0

0

000000

000010

1

0

0

0

1

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

000011

1

0

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

001101

000100

1

0

0

0

1

1

1

0

0

0

0

1

1

1

1

1

1

1

0

0

000000

000101

1

0

0

0

1

1

1

0

1

0

0

1

1

1

1

1

1

1

0

0

000000

000110

1

0

0

0

1

1

1

0

1

1

0

1

1

1

1

1

1

1

0

0

000000

000111

1

0

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

1

0

0

000000

001000

1

0

1

0

0

0

1

1

1

0

0

1

1

1

1

1

1

1

0

0

001110

001001

0

1

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

001010

1

0

0

0

0

0

0

0

0

0

1

1

0

1

1

1

1

1

0

0

000000

001011

1

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

0

000000

001100

1

0

0

0

0

1

1

1

0

1

1

1

1

1

1

1

1

1

0

0

000000

001101

1

0

0

0

1

0

1

0

0

0

1

1

1

1

0

0

1

1

0

0

000000

001110

1

0

0

0

0

0

0

0

0

0

1

1

1

0

0

1

1

1

0

0

000000

010000

0

1

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

第三步:

设计好了微指令代码表之后,开始设计地址转移逻辑电路

地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。

由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA4~µA0对应的异步置“1”控制信号SE5~SE1的逻辑表达式为:

(µA5的异步置“1”端SE5实际未使用)

SE4=SF·P

(2)·T4

SE3=I15·P

(1)·T4

SE2=I14·P

(1)·T4

SE1=I13·P

(1)·T4

SE0=I12·P

(1)·T4

2.5嵌入式CISC模型计算机的顶层电路图

3汇编语言及机器语言源程序

3.1汇编语言源程序

地址(十六进制)

汇编语言源程序

00

MOVR1,00H

01

MOVR2,04H

02

L0:

IN1R0

03

STOIR0,(R1)

04

INCR1

05

DECR2

06

JNSL0

07

MOVR0,0

08

MOVR1,00H

09

MOVR2,04H

0A

L1:

LAD(R1),R3

0B

TESTR3

0C

JNSL2

0D

MULR3,R3

0E

ADDR3,R0

0F

L2:

INCR1

10

DECR2

11

JNSL1

12

END:

OUT1R0

13

JMPEND

3.2机器语言源程序

根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去:

地址(十六进制)

汇编语言源程序

机器语言源程序(二进制)

00

MOVR1,00H

0010000100000000

01

MOVR2,04H

0010001000000100

02

L0:

IN1R0

0001000000000000

03

STOIR0,(R1)

1000000100000000

04

INCR1

0101000100000000

05

DECR2

0110001000000000

06

JNSL0

0111000000000010

07

MOVR0,0

0010000000000000

08

MOVR1,00H

0010000100000000

09

MOVR2,04H

0010001000000100

0A

L1:

LAD(R1),R3

0011011100000000

0B

TESTR3

1100110000000000

0C

JNSL2

0111000000001111

0D

MULR3,R3

1011111100000000

0E

ADDR3,R0

0100110000000000

0F

L2:

INCR1

0101000100000000

10

DECR2

0110001000000000

11

JNSL1

0111000000001010

12

END:

OUT1R0

1010000000000000

13

JMPEND

1001000000010010

4机器语言源程序的功能仿真波形图及结果分析

上图所示是汇编程序中前2个MOV指令的仿真执行过程。

可以看到,R1寄存器的内容是00,R2寄存器的内容由00变为04了。

然后执行IN1指令,输入数据,输入了FE,由上图可以看到,IN1指令执行完后R0寄存器中内容变成了FE。

再执行STOI指令,将(R0)→(R1),可以看到,执行完该指令后,RAM的00H存储器的内容为FE。

然后执行INC指令,可以看到,R1的内容由00变为01,然后执行DEC指令,R2的内容由04变为03,然后执行JNS指令,判断的出R2的内容的符号位为0,跳转到L0。

然后再循环执行IN1,STOI,INC,DEC,JNS指令,直至R2的内容的符号位为1。

共执行了IN1,STOI,INC,DEC,JNS指令各五次,可以由上图看到,依次输入的五个数为FE,02,FE,FE,FE。

R0的内容依次为FE,02,FE,FE,FE。

R1的内容00→01→02→03→04→05,R2的内容04→03→02→01→00→FF。

已将输入的五个数据依次存放在RAM的00H—05H连续的五个存储区域,00H存储单元的内容为FE,01H存储单元的内容为02,02H存储单元的内容为FE,03H存储单元的内容为FE,03H存储单元的内容为FE,04H存储单元的内容为FE。

然后执行3个MOV指令,可以看到R0的内容由FE变为00,R1的内容由05变为00,R2的内容由FF变为04。

然后执行LAD指令,取数功能,将RAM的00存储器中的内容FE取出放入R3中,由上图可以看到,R3的内容由00变成了FE。

然后执行TEST指令,测试R3的内容,然后执行JNS指令,若R3中的内容的SF=0,则跳转到L2。

若R3中的内容的SF=1,则顺序执行程序。

因为R3中的内容为FE,其SF=1,故顺序执行程序。

然后执行MUL指令,由上图可以看到,FE求平方和之后结果是04,R3变成04,然后执行ADD操作,和放在R0中,R0变成04。

R1自增1变成01,R2自减1变成03。

程序顺序执行下条语句。

R2的符号位为0,跳转到L1执行。

此后取数次数还剩四次,取出02,结果判断,可以得出程序不会顺序执行乘法,而是跳转到L2执行INC,DEC,然后判断到非负数之后,继续跳转到L1执行。

此后取数次数还剩3次,取出三个FE,结果判断,可以得出程序会顺序执行乘法,加法。

经过五次取数后,最终结果如下所示:

可以看出,此时R0中存放的10就是结果,数据输出端OUTBUS输出的就是R0内的数据。

输入数据是:

FE02FEFEFE运算后结果是10。

这是正确的。

结果分析:

输入五个数:

00→FE,01→02,02→FE,03→FE,04→FE

输出:

10H

输入的五个数中负数都为:

FE,二进制原码分别为10000010,转化十进制为-2,则(-2)2+(-2)2+(-2)2+(-2)2=16,用十六进制为10H,所以结果正确。

5故障现象与故障分析

在做这次课设时遇到了挺多的问题,但最终通过查阅资料,还有请教老师,同学及自己的努力下,我终于完成了课设。

通过对问题的解决,增长了我解决问题的能力。

下面就把所遇到的问题来个简单的总结:

首先,在写汇编语言程序时,遇到的问题是无法实现将输入数据依次存放在RAM的某一连续的存储区域内,后来通过看老师给的PPT资料,以及请教老师和同学,终于完成了汇编语言程序,能将五个数据存入到存储区域内。

其次,碰到的一个比较头痛的问题是,画顶层电路图时候,明明画的图没错,可是编译时却一直报错。

一开始不知道,经过了无数次痛苦的挣扎后才发现,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2