2020计算机组成原理课程设计(桂电)

选题:A7-输入5个整数(有符号数),输出它们的平均值,以及小于平均值的数的个数 (2020年)

  • 作者:GUET_diadestiny
  • 声明:未经允许,严禁转载抄袭,本人计组课设仅供参考学习用途 (源工程文件在本文末尾),基于maxplus2软件实现cisc模型机。

一.课程设计题目

本程序功能要求输入5个整数(有符号数),输出它们的平均值,以及小于平均值的数的个数。完成本题需要关注的子问题分别是:
(1)画出模型机数据通路框图,设计CISI模型机,根据题意设计汇编指令,将汇编代码转化成机器代码存于ROM区域中,并画出微程序流程图,为相关微指令设置对应的微命令。
(2)编写VHDL源程序,生成PC、AR、IR、ALU等部件框图和生成顶层top.gdf框图。
(3)利用运算器实现加法、减法、除法、与等运算,求出输入数的平均值以及统计小于平均值的个数。
(4)需要将输入数据存于RAM区域中,以便后续依次取出数据和平均值比较。
(5)根据p测试字段的个数设计逻辑电路的逻辑表达式。
(6)分析仿真波形图,将实验结果与预期结果进行对比分析。

二.整体设计与实现

2.1 CISC模拟机数据通路框图

系统采用三总线数据通路模型机,如图1所示。模型机由微处理器、地址寄存器AR、ROM存储器、RAM存储器等组成。微处理器由指令寄存器IR、通用寄存器R0-R3、程序计数器PC、算术逻辑运算单元ALU、程序状态字PWS、微控制器等组成。

在这里插入图片描述

2.2 操作控制器的逻辑框图(略,实验书上有)

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

为了完成本题功能,指令系统设计了14条不同功能的指令,指令长度为双字节,有立即寻址、直接寻址、寄存器寻址三种不同的寻址方式。
14条指令助记符分别是IN(输入数据)、MOV(将数据移入寄存器)、STO(将数据存入RAM)、LAD(从RAM取出数据)、CMP(比较两个数大小)、TEST(测试与运算)、INC(自增一个单位)、DEC(自减一个单位)、JMP(无条件跳转)、JZ(为0则跳转)、JB(小于则跳转)、ADD(加法)、DIV(除法)、OUT(输出)。
指令具体格式设计如表1所示:
在这里插入图片描述
补充: 对于Rs或者Rd寄存器,00表示选中R0, 01表示选中R1, 10表示选中R2, 11表示选中R3。

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

在这里插入图片描述

CISC模型及系统使用的微指令采用全水平型微指令,字长设计为27位,其中微命令字段18位,P字段为3位,后续微地址为6位,其格式如下:
在这里插入图片描述
结合上面的微指令表和流程图,则可以设计完整的地址转移逻辑电路,再结合微地址寄存器的异步置“1”端,实现为地址的多路转移。微地址寄存器的触发器异步置“1”端低电平有效,和UA5-UA0对应的异步置“1”控制信号SE5-SE0的逻辑表达式为:
在这里插入图片描述
SE5-SE0会与后续微地址共同作用实现指令的跳转,其中的SE4、SE5和微指令JZ、JB的后续跳转地址密切相关,决定是否跳转。

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

编译好PC、AR、IR、ALU等部件框图后,连线生成top.gdf顶层图。
在这里插入图片描述

三、汇编语言及机器语言

算法设计思想及流程如下:
1.R3寄存器初始化为0,累计输入数值的和;R1寄存器初始化为5,作为计数器;R0寄存器作为RAM地址移动指针,通过TEST R1判断计数器是否为0控制循环输入5个数,R2保存输入的数值,写入到RAM区域中,并添加到R3累加器中。
2.输入完5个有符号数后,R1保存作除法后的平均值,并输出平均值。
3.R2保存小于平均值个数,依次从RAM读出5个数存入暂存寄存器R0中,与R1平均值比较,如果小于平均值则使R2自增1,依次比较5个数,最后将R2(保存小于平均值个数)输出。
在这里插入图片描述
在这里插入图片描述

四、功能仿真波形图及结果分析

根据模型机的设计,通过功能仿真波形图进行结果验证。系统设计end time为400.0us,CLR = 1,CLK = 200.0ns,并插入R0-R3、CF、ZF、RAM、IR等寄存器节点,进行观测调试,系统输入5个有符号整数进行仿真验证。
(1) 测试数据组1:2、4、1、10、3(十进制含整数)
这5个数的平均值是4,小于平均值的个数为3个,由波形图输出结果可以看到验证正确。
在这里插入图片描述
(2) 测试数据组2:-2、10、6、5、-4 (十进制含负数)
这5个数的平均值是3,小于平均值的个数为2个,由波形图输出结果可以看到验证正确。

图6 仿真结果图2
仿真结果注意事项:输入数据需要覆盖IR的输入指令(本系统为1200H)的前端以及末端的一小段,保证数据的有效输入。在调试的过程中,根据IR的指令地址可以看到执行到哪一步,进行逐步调试,并时刻观察R0-R3寄存器和标记位以及RAM区域的数据是否更新正确。

五、故障现象和故障分析

在完成整个系统程序的过程中,由于前期对maxplus2软件不熟悉以及对模型机框架图运转流程不太清楚,所以遇到了以下一些问题:

  1. 题目需要求出平均值,需要利用除法,而VHDL语言没有现成的除法运算符号。
    原因以及解决方案:起初无法实现除法是因为对VHDL语法不太熟悉,不懂怎么间接转化逻辑。通过咨询老师以及查阅资料,最后利用VHDL语言在ALU元件通过二进制循环减法间接实现除法运算,这也是A7题目的一个难点。
  2. 设定好输入数据后,仿真结果不正确或者没有输出数据。
    原因以及解决方案:机器指令编写有问题或者数据输入位置有问题。在确保顶层图以及各个元件图连线无误后(特别是rom、controm、addr三个元件),通过在仿真器中根据IR显示的指令地址逐步分析出错位置,定位问题所在位置后改正该处的机器指令,以及确保正确输入数据位置,直至预期结果和仿真结果相一致。

六.基于maxplus2的工程源代码文件

  1. 2020计算机组成原理课程设计工程文件(桂电)
  2. 点赞评论留下您的邮箱,我这边看到会发送给您,仅供参考学习使用~~

参考链接:
1.https://blog.csdn.net/qq_38413498/article/details/104856687
某位学长的计组课设博客(含详细的maxplus2操作步骤流程)

ps:本人课设选题为A7,以上14条指令以及相关的微程序流程图、机器指令格式等都是根据题目需求量身设计的,相关表格以及图片也是参考过实验教材和亲自实验无误后才绘制的,希望能给您带来一定的帮助。

  • 11
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值