计算机组成原理课程设计
1.概述
本次课程设计,我们小组设计的是一个采用定长cpu周期、三数据总线结构运算器的嵌入式CISC模型机,该模型机可以实现以下功能:输入包含10个整数(有符号数)的数组M,可以将其按从小到大的顺序输出。
2.整体设计实现
微处理器由运算器和控制器两部分组成,运算器由ALU、通用寄存器状态字寄存器PSW、三态缓冲器和多路选择器组成。控制器由程序计数器PC、指令寄存器IR、指令译码器、操作控制器和时序产生器组成。程序计数器用来给出指令的地址,指令寄存器用来保存正在执行的指令,操作控制器的主要功能,就是根据指令的操作码和时序信号,产生各种具有时间标志的操作控制信号,时序产生器根据时钟脉冲信号源的时钟输入产生节拍脉冲信号。
微处理器在运行程序时,根据程序计数器的值自动地从主存储器中取出一条指令,然后对指令进行分析,即对指令的操作码进行译码或者测试,以识别指令的功能,并根据不同的操作码、状态反馈信息和时序产生器产生的时序信号,生成具有时间标志的操作控制信号,送到相应的执行部件,定时启动所要求的操作,以控制数据在微处理器、主存储器和输入/输出设备之间流动,指挥运算器操作,完成对数据的加工处理。与此同时,它还修改程序计数器的值,给出后继指令在主存储器中的位置,自动地、逐条地取指令、分析指令和执行指令,直到指令序列终止、全部执行完毕为止。
2.1嵌入式CISI模型机系统总体设计
2.2 嵌入式CISC系统控制器的逻辑结构框图
由于微地址寄存器中的触发器异步置“1”端低电平有效,因此与ua5-ua0对应的异步置“1”控制信号SE5~SE0(ua5的异步置“1”端SE5实际未涉及)的逻辑表达式为:
2.3部件的功能表
ALU功能表:
程序计数器PC:
时序产生器:
3.模块实现
3.1汇编语言
MOV R0,00H ;从ram的00H位置开始存放数据
MOV R1,0AH ;设置循环次数
L1 :IN1 R2 ;从外部输入数据到R2寄存器
STO R2,(R0) ;将R2中的数据送到ram中
INC R0 ;地址自加一
DEC R1 ;循环次数自减一
TEST R1 ;测试R1是否为正
JNS L1 ;正数则跳转
;送数结束
MOV R3,09H ;冒泡排序
ALOP: MOV R0,09H
ALOP1: LAD (R0),R1
DEC R0
LAD (R0),R2
CMP R1,R2 ;比较的实质是相减
JNS NEXT ;若为正则跳转
INC R0 ;交换两个相邻地址的内容
STO R2,(R0)
DEC R0
STO R1,(R0)
NEXT:TEST R0 ;判断是否为正
JNS ALOP1
DEC R3
TEST R3
JNS ALOP
MOV R0,00H ;输出排序后的数据
MOV R1,09H
LOP:LAD (R0),R2
OUT R2
INC R0
DEC R1
TEST R1
JNS LOP
;结束
流程图:
3.2 设计指令格式
3.3 将汇编语言翻译成机器语言
3.4 微程序流程图
3.5 微指令列表
3.6 顶层电路图
crom
aa
4.运行测试与分析
从上图我们可以看出,此次用于测试的数据分别为33H,30H,10H,A0H,11H,13H,50H,60H,19H,34H,其中A0H为负数。
上面的波形图列举了第一、二次排序的过程,其中R1、R2存的是将要排序的数据,R3存的是排序的次数。这是从高地址往低地址排序,R1中存放的是高地址的数据,R2中存放的是低地址的数据,一旦R1中的数比R2中的数小,则将高地址的数和低地址的数进行交换
从上图看出,排序的结果为,A0H,10H,11H,13H,19H,30H,33H,34,50H,正确。
5.总结
这次课设我们花费了挺久的时间才完成的,有些地方,比如说汇编语言的设计,还有微指令的设计,都让我们卡了好半天。不过,当看到最终结果出来时,我们还是挺高兴的。