选题: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个,由波形图输出结果可以看到验证正确。


仿真结果注意事项:输入数据需要覆盖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条指令以及相关的微程序流程图、机器指令格式等都是根据题目需求量身设计的,相关表格以及图片也是参考过实验教材和亲自实验无误后才绘制的,希望能给您带来一定的帮助。

2020计算机组成原理课程设计(桂电)相关推荐

  1. 北航计算机组成原理课程设计-2020秋 【系列完结】Verilog或ISE高级特性与自动化测试

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog或ISE高级特性与自动化测试 本系列所有博客,知识讲解.习题以及答案均由北航 ...

  2. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog工程的设计开发调试

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog工程的设计开发调试 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院 ...

  3. 北航计算机组成原理课程设计-2020秋 PreProject-入门测试

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-入门测试 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删 ...

  4. 北航计算机组成原理课程设计-2020秋 PreProject-数制

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-数制 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除. ...

  5. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog语法

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog语法 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理 ...

  6. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-前言

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE - 前言 本节内容完全转载自北航计算机学院计算机组成原理课程组,原文链接:Verilog ...

  7. 北航计算机组成原理课程设计-2020秋 PreProject-Logisim-2^n mod 5问题

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-2^n mod 5问题 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析 ...

  8. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog题目实例与分析

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog题目实例与分析 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算 ...

  9. 计算机组成原理课设总线,计算机组成原理课程设计(全).doc

    文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...

  10. 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告

    <计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...

最新文章

  1. ecshop transport.js/run() error:undefined
  2. pandas使用isna函数和any函数计算返回dataframe中包含缺失值的数据行(rows with missing values in dataframe)
  3. 大型互联网应用中的日志系统
  4. excel设置单元格为文本
  5. html中多边形图形怎么制作,CSS制作图形速查表
  6. mkdir 创建多级目录_linux中的目录功能和文件文件管理
  7. CSS--布局模型,颜色值,长度值
  8. Python成长之路_装饰器
  9. Linux上构建一个RADIUS服务器详解
  10. LinQ To Object 基本用法
  11. 为什么面试总喜欢考算法题?
  12. Android编程之DialogFragment源码详解(二)
  13. 记一次虚拟机共享文件夹的采坑之旅
  14. 随笔记---python ctrl + 移动光标到所用库报错:无法找到要转到的声明
  15. 计算机打印机共享失败,局域网共享打印机连接失败怎么办
  16. matlab符号运算ppt,第5 章Matlab符号运算.ppt
  17. 夏普电视服务器维修,夏普液晶电视机通病维修方法
  18. eaxyx验证布丰投针试验,求解圆周率
  19. 史上最最最没用程序——自写平衡化学方程式
  20. java的jsf是什么_什么是 JSF(Java Server Faces)

热门文章

  1. UE4 粒子特效基础学习 (01-将粒子效果挂载到角色身上)
  2. Java面试题--搜索(solrelasticsearch)
  3. 自然语言处理(NLP)-第三方库(工具包):AllenNLP【用于构建各种NLP模型的库;基于PyTorch】
  4. Mac系统下 安装并使用DOSBox编写汇编语言
  5. 红外避障小车的代码编写
  6. 斐讯k3怎么设置虚拟服务器,斐讯K3路由器功能介绍及使用教程
  7. 【OSATE学习笔记】失效模式与影响分析,FMEA(failure mode and effects analysis)
  8. NC文件按时序维度拆分
  9. LCD1602的四线驱动
  10. Matlab聚类分析相关函数