嵌入式CISC模型机设计.docx

上传人:b****6 文档编号:13818566 上传时间:2023-06-17 格式:DOCX 页数:41 大小:279.94KB
下载 相关 举报
嵌入式CISC模型机设计.docx_第1页
第1页 / 共41页
嵌入式CISC模型机设计.docx_第2页
第2页 / 共41页
嵌入式CISC模型机设计.docx_第3页
第3页 / 共41页
嵌入式CISC模型机设计.docx_第4页
第4页 / 共41页
嵌入式CISC模型机设计.docx_第5页
第5页 / 共41页
嵌入式CISC模型机设计.docx_第6页
第6页 / 共41页
嵌入式CISC模型机设计.docx_第7页
第7页 / 共41页
嵌入式CISC模型机设计.docx_第8页
第8页 / 共41页
嵌入式CISC模型机设计.docx_第9页
第9页 / 共41页
嵌入式CISC模型机设计.docx_第10页
第10页 / 共41页
嵌入式CISC模型机设计.docx_第11页
第11页 / 共41页
嵌入式CISC模型机设计.docx_第12页
第12页 / 共41页
嵌入式CISC模型机设计.docx_第13页
第13页 / 共41页
嵌入式CISC模型机设计.docx_第14页
第14页 / 共41页
嵌入式CISC模型机设计.docx_第15页
第15页 / 共41页
嵌入式CISC模型机设计.docx_第16页
第16页 / 共41页
嵌入式CISC模型机设计.docx_第17页
第17页 / 共41页
嵌入式CISC模型机设计.docx_第18页
第18页 / 共41页
嵌入式CISC模型机设计.docx_第19页
第19页 / 共41页
嵌入式CISC模型机设计.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

嵌入式CISC模型机设计.docx

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

嵌入式CISC模型机设计.docx

嵌入式CISC模型机设计

1:

课程设计题目

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

采用定长CPU周期、联合控制方法,并完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:

输入5个有符号整数(8位二进制补码表示),求所有正数的平方和并输出显示。

2:

嵌入式CISC模型机数据通路框图

模型机由CISC微处理器、地址寄存器AR、ROM存储器组成。

微处理器有算数逻辑单元ALU、状态条件寄存器、累加器AC、数据暂存器R、通用寄存器R0~R3、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。

模型机数据通路如图2-1所示:

图2-1模型机数据通路框图

说明:

外部时钟信号上边沿有效。

3:

操作控制器的逻辑框图

微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。

微程序控制器在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。

微程序控制器组成原理框图如下图3-1所示。

图3-1微程序控制器组成原理框图

4:

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

为了完成求和功能,系统设计了9条指令:

IN(输入指令),MOV(将一个数送入寄存器),CMP(完成比较功能),JB(小于等于跳转),ADD(两数相加),DEC(自减1),JMP(无条件跳转),MUL(两数相乘),OUT(输出)。

助记符号

指令格式

功能

INRd

1000

××

Rd

将数据存到Rd寄存器

OUTRs

1111

Rs

××

(Rs)→LED

ADDRs,Rd

1100

××

Rd

(Rs)+(Rd)→Rd

CMPRs,Rd

1010

Rs

Rd

(Rs)-(Rd),锁存CY和ZI

DECRd

1101

××

Rd

(Rd)+1→Rd

MOVRd,data

1001

××

Rd

data

data→Rd

JMPaddr

1110

××××

addr

addr→PC

JBaddr

1011

××××

addr

若小于,则addr→PC

MULRs,Rd

0001

Rs

Rd

(Rs)*(Rd)→Rd

说明:

①对Rs和Rd的规定:

Rs或Rd

选定的寄存器

00

R0

01

R1

10

R2

11

R3

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

7

6543210

符号位

尾数

5:

所有机器指令的微程序流程图或CPU操作流程图

微程序控制器的设计过程如下:

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

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

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

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

(5)设计微程序控制器的顶层电路(由多个模块组成)。

DEC

JMP

ADD

JB

CMP

MOV

IN

MUL

FS=1

FS=0

30

20

07

13

12

06

0F

05

04

03

16

15

0E

0D

0C

0B

0A

09

08

02

00

01

PC→AR

PC+1

READM

BUS→IR

P

(1)

Rs→LED

PC→AR

PC+1

Rd→BUS

BUS→AC

RS→BUS

BUS→AC

PC→AR

PC+1

Rs→BUS

BUS→AC

PC→AR

PC+1

SW→BUS

BUS→Rd

RS→BUS

BUS→AC

ROM→BUS

BUS→PC

AC-1→BUS

BUS→Rd

Rd→BUS

BUS→DR

Rd→BUS

BUS→DR

ROM→BUS

BUS→Rd

Rd→BUS

BUS→DR

P

(2)

ROM→BUS

BUS→PC

AC+DR→Rd

AC→DR

锁存FC、FZ

AC*DR→Rd

00

00

00

00

00

00

00

00

00

00

OUT

6:

操作控制器单元

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

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

2423222120191817161514131211109876543210

LOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWRCSSW_BLED_BLDFRP1P2后继微地址

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

LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。

微地址

微命令字段

P1

P1

后继位地址

LOAD

LDPC

LDAR

LDIR

LDRi

RD_B

RS_B

S1

S0

ALU_B

LDAC

LDDR

WR

CS

SW_B

LED_B

LDFR

000000

1

1

1

0

0

1

1

0

0

1

0

0

1

1

1

1

0

0

0

000010

000001

1

0

0

0

0

1

0

0

0

1

1

0

1

1

1

1

0

0

0

010101

000010

1

0

0

1

0

1

1

0

0

1

0

0

1

0

1

1

0

1

0

001000

000011

1

0

0

0

1

1

1

0

0

1

0

0

1

0

1

1

0

0

0

000000

000100

1

0

0

0

0

0

1

0

0

1

0

1

1

1

1

1

0

0

0

000101

000101

1

0

0

0

0

1

1

0

1

1

0

0

1

1

1

1

1

0

0

000000

000110

1

0

0

0

0

0

1

0

0

1

0

1

1

1

1

1

0

0

0

000111

000111

1

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

000000

001000

1

0

0

0

1

1

1

0

0

1

0

0

1

1

0

1

0

0

0

000000

001001

1

1

1

0

0

1

1

0

0

1

0

0

1

1

1

1

0

0

0

000011

001010

1

0

0

0

0

1

0

0

0

1

1

0

1

1

1

1

0

0

0

000100

001011

1

1

1

0

0

1

1

0

0

1

0

0

1

1

1

1

0

0

1

100000

001100

1

0

0

0

0

1

0

0

0

1

1

0

1

1

1

1

0

0

0

000110

001101

1

0

0

0

0

0

1

0

0

1

1

0

1

1

1

1

0

0

0

010010

001110

1

1

1

0

0

1

1

0

0

1

0

0

1

1

1

1

0

0

0

010012

001111

1

0

0

0

0

1

0

0

0

1

0

0

0

1

1

0

0

0

0

000000

010010

1

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

000000

010011

0

1

0

0

0

1

1

0

0

1

0

0

1

0

1

1

0

0

0

000000

010101

1

0

0

0

0

0

1

0

0

1

0

1

1

1

1

1

0

0

0

010110

010110

1

0

0

0

1

1

1

1

1

0

0

0

1

1

1

1

0

0

0

000000

100000

0

1

0

0

0

1

1

0

0

1

0

0

1

0

1

1

0

0

0

000000

110000

1

0

0

0

0

1

1

0

0

1

0

0

1

1

1

1

0

0

0

000000

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

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

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

SE5=(FC+FZ)•P

(2)•T4

SE4=I7•P

(1)•T4

SE3=I6•P

(1)•T4

SE2=I5•P

(1)•T4

SE1=I4•P

(1)•T4

7:

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

在MAX+plusⅡ下设计的CISC模型机的顶层电路图如下图7-1所示。

图7-1嵌入式CISC模型计算机的顶层电路图

8:

汇编语言源程序

MOVR10--R1置为0,保存累加结果

MOVR20--R2置为0,判输入数据正负性,计输入数据的次数

MOVR35--R3置为5,计输入次数

L1:

INR0--外部输入数据存到R0

DECR3--R3减1

CMPR2,R0--比较R2和R0的大小

JBL2--若R2小于R0则跳转L2

CMPR2,R3--判断次数,若不到5次返回L1

JBL1--跳转到L1

JMPL3--若次数达到5次,跳转到L3,输出结果,程序结束

L2:

MULR0,R0--R0大于0,做平方运算,存到R0中

ADDR0,R1--R1用来存累加结果的,故将R0中的平方和R1的值相加

CMPR2,R3--判断次数,若不到5次返回L1

JBL1--跳转到L1

L3:

OUTR1--将正数的平方和输出

9:

机器语言源程序

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

与汇编语言源程序对应的机器语言源程序如下:

助记符地址(十六进制)机器代码功能

MOV1R0,0001001000100H→R0

0100000000

MOV1R1,0021001001000H→R1

0300000000

MOV1R2,5041001001105H→R2

0500000101

L1:

INR00610000000(SW)→R0

DECR30711010011(R0)-1→R3

CMPR2,R00810101000(R2)-(R0)

JBL20910110000若小于,L2→PC

0A00010000

CMPR2,R30B10101011(R2)-(R3)

JBL10C10110000L1→PC

OD00000110

JMPL30E11100000L3→PC

0F00010101

L2:

MULR0,R01000010000(R0)*(R0)→R0

ADDR0,R11111000001(R0)+(R1)→R1

CMPR2,R31210101011(R2)-(R3)

JBL11310110000L1→PC

1400000110

L3:

OUTR11511110100(R1)→LED

10:

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

结果分析:

输入的整数依次为01H,FFH,01H,02H,FFH。

结果输出:

06H。

计算结果与事实相符,程序正确执行

11:

进行时序仿真是芯片的引脚分配

在进行仿真时主要的引脚分配为:

PC

AR

IR

CROM

R0

R1

R2

R3

MUX1

MUX2

ALU

PSW

ROM

26

23

22

5

15

16

17

18

28

30

2

3

1

12:

故障现象和故障分析

1.CMP指令一开始设为CMPR0,R2导致结果出错。

原来JB指令是小于等于的时候跳转,所以导致结果取反。

之后将CMP指令改为CMPR2,R0,结果程序正确。

2.微程序控制器中采用全水平微指令,在设计AC*DR→Rd指令时忘记设计S0,S1为1,1,即控制为乘法时,变成了加法,导致结果出错。

在仿真时发现结果不对,算的是加法,然后通过修改为乘法,结果正确。

13:

软件清单,含各个部件的VHDL源程序(.VHD)或图形描述文件(.gfd)

13.1:

ALU单元

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_SIGNED.ALL;--有符号型

ENTITYALUIS

PORT(

A:

INSTD_LOGIC_VECTOR(7DOWNTO0);

B:

INSTD_LOGIC_VECTOR(7DOWNTO0);

S1,S0:

INSTD_LOGIC;

BCDOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

CY,ZI:

OUTSTD_LOGIC

);

ENDALU;

ARCHITECTUREAOFALUIS

SIGNALAA,BB,TEMP:

STD_LOGIC_VECTOR(8DOWNTO0);

BEGIN

PROCESS(S1,S0)

BEGIN

IF(S1='0'ANDS0='0')THEN--加法

AA<='0'&A;

BB<='0'&B;

TEMP<=AA+BB;

BCDOUT<=TEMP(7DOWNTO0);

CY<=TEMP(8);

IF(TEMP="100000000"ORTEMP="000000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSIF(S1='0'ANDS0='1')THEN--减法

BCDOUT<=A-B;

IF(A

CY<='1';

ZI<='0';

ELSIF(A=B)THEN

Y<='0';

ZI<='1';

ELSE

CY<='0';

ZI<='0';

ENDIF;

ELSIF(S1='1'ANDS0='1')THEN--乘法

AA<='0'&A;

BB<='0'&B;

TEMP<=AA*BB;

BCDOUT<=TEMP(7DOWNTO0);

CY<=TEMP(8);

IF(TEMP="100000000"ORTEMP="000000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSIF(S1='1'ANDS0='0')THEN--自减1

AA<='0'&A;

TEMP<=AA-1;

BCDOUT<=TEMP(7DOWNTO0);

CY<=TEMP(8);

IF(TEMP="100000000"ORTEMP="000000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSE

BCDOUT<="00000000";

CY<='0';

ZI<='0';

ENDIF;

ENDPROCESS;

ENDA;

13.2:

状态条件寄存器单元

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYLS74IS

PORT(

LDFR:

INSTD_LOGIC;

CY,ZI:

INSTD_LOGIC;

FC,FZ:

OUTSTD_LOGIC

);

ENDLS74;--状态寄存器

ARCHITECTUREAOFLS74IS

BEGIN

PROCESS(LDFR)

BEGIN

IF(LDFR'EVENTANDLDFR='1')THEN

FC<=CY;

FZ<=ZI;

ENDIF;

ENDPROCESS;

ENDA;

13.3:

暂存寄存器单元

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYLS273IS

PORT(

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

CLK:

INSTD_LOGIC;

O:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDLS273;--通用寄存器

ARCHITECTUREAOFLS273IS

BEGIN

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

O<=D;

ENDIF;

ENDPROCESS;

ENDA;

13.4:

3选1数据选择器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX3IS

PORT(

ID:

INSTD_LOGIC_VECTOR(7DOWNTO0);

SW_B,CS:

INSTD_LOGIC;

N1,N2:

INSTD_LOGIC_VECTOR(7DOWNTO0);

EW:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDMUX3;--3选1数据选择器单元

ARCHITECTUREAOFMUX3IS

BEGIN

PROCESS(SW_B,CS)

BEGIN

IF(SW_B='0')THEN

EW<=ID;--从输入设备输入数据

ELSIF(CS='0')THEN

EW<=N2;--将ROM中读出的指令代码送入内部数据通路

ELSE

EW<=N1;--将5选1多路选择器的输出送入内部数据通路

ENDIF;

ENDPROCESS;

ENDA;

13.5:

5选1数据选择器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX5IS

PORT(

C,D,E,F,G:

INSTD_LOGIC;

X1,X2,X3,X4,x5:

INSTD_LOGIC_VECTOR(7DOWNTO0);

W:

outSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDMUX5;--5选1数据选择器单元

ARCHITECTUREAOFMUX5IS

SIGNALSEL:

STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

SEL<=G&F&E&D&C;

PROCESS(SEL)

BEGIN

IF(SEL="11110")THEN--输出R0的内容

W<=X1;

ELSIF(SEL="11101")THEN--输出R1的内容

W<=X2;

ELSIF(SEL="11011")THEN--输出R2的内容

W<=X3;

ELSIF(SEL="10111")THEN--输出R3的内容

W<=X4;

ELSIF(SEL="01111")THEN--输出ALU的内容

W<=X5;

ELSE

null;

ENDIF;

ENDPROCESS;

ENDA;

13.6:

程序计数器单元

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYPCIS

PORT(

LOAD,LDPC,CLR:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

O:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDPC;--程序计数器

ARCHITECTUREAOFPCIS

SIGNALQOUT:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(LDPC,CLR,LOAD)

BEGIN

IF(CLR='0')THEN

QOUT<="00000000";--将pc清0

ELSIF(LDPC'EVENTANDLDPC='1')THEN

IF(LOAD='0')THEN

QOUT<=D;--将数据总线的内容送入pc

ELSE

QOUT<=QOUT+1;--PC+1

ENDIF;

ENDIF;

ENDPROCESS;

O<=QOUT;

ENDA;

13.7:

地址寄存器单元

13.8:

主存储器单元

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.

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

当前位置:首页 > 总结汇报 > 学习总结

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

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