文章目录

目录

文章目录

实验一:Logisim软件的使用

实验二:数据的表示

1.汉字的编码实验:

实验三:运算器组成实验

1.多位串行加法器和多位可控加减电路的设计

2.快速加法器的设计

3.多位算术逻辑单元ALU设计

4.阵列乘法器设计

4.阵列除法器设计

实验四:存储系统综合实验

1.存储扩展实验

2.MIPS RAM 设计

3.Cache设计实验

实验五: MISP程序设计实验

1.创建并运行一个MIPS汇编程序在MARS环境下创建HelloWorld.asm文件,然后汇编运行该汇编程序。

2.算术运算实验

3.分支结构实验

4.循环结构实验

5.数组实验

6.数组排序实验


实验一:Logisim软件的使用

任务1:在logisim的管理窗口创建名为“2-4 Decode”的子电路完成2-4译码器电路图的绘制,并分别用自动仿真、和单步仿真验证其逻辑功能。

实验结果图:

任务2:在logisim的管理窗口创建名为“2:1MUX”的二路选择器的子电路,应用该子电路创建完成一名为“4:1MUX”的四路选择器的子电路。

实验结果图:

 

任务3:在logisim的管理窗口创建名为“SUM”的子电路,利用logisim“project”中的“Analyze Circuit ”实现自动生成下列表达式的逻辑电路图。并查看其对应的真值表。逻辑表达式如下:

S= a xor b +b xor c +a  xor  c

carry=a & b +b & c +c & a

实验结果图:

任务4:在logisim的管理窗口创建名为“Write-RAM”的子电路,完成下图的绘制,利用logisim“Simulate”中的“Ticks Enabled”在RAM中的所有单元写入数据。

实验结果图:

实验二:数据的表示

1.汉字的编码实验:

(1)设计GB2312码转区位码电路

在logisim中打开“数据表示实验2.circ”文件,在对应电路中完成GB2312码转区位码的子电路的设计。

(2)汉字GB2312编码实验

完成GB2312编码转换子电路的设计后,在汉字显示电路中进行测试。

实验结果图:

国标转区位码:

偶校验编码:

偶校验检错:

实验三:运算器组成实验

1.多位串行加法器和多位可控加减电路的设计

(1)在logisim中打开“运算器实验3.circ”文件,在对应电路中完成8位串行加法器电路的设计。 并仿真验证设计的正确性。

(2)在打开的“运算器实验3.circ”文件中找到“☆8位可控加减法器”子电路,完成8位可控加减法器的设计。并仿真验证设计的正确性。、

实验结果图:

(1)八位串行加法器

(2)8位可控加减法器

2.快速加法器的设计

  1. 利用相关知识设计4位先行进位电路。
  2. 利用设计的4位先行电路构造4位快速加法器。
  3. 利用4位快速加法器构造16位的快速加法器。
  4. 再利用16位的快速加法器构造32位的快速加法器。

实验结果图:

(1)4位先行进位电路

(2)4位快速加法器

(3)16位的快速加法器

(4)32位的快速加法器

3.多位算术逻辑单元ALU设计

  1. 利用自己设计的32位快速加法器和Logisim中的组件设计完成指定规格的32位ALU单元。
  2. 利用“ALU自动测试”电路测试ALU各种运算功能的正确性。

实验结果图:

4.阵列乘法器设计

  1. 利用已经设计完成的“5位乘法与门阵列电路”,设计完成不带符号的5位阵列乘法器。并仿真验证设计的正确性。

实验结果图:

不带符号的五位阵列乘法器:

4.阵列除法器设计

1.完成一位可控加减单元的电路设计。

2.利用一位可控加减单元完成不恢复余数的4位阵列除法器。并仿真验证设计的正确性。

实验结果图:

一位可控加减单元的电路设计:

不恢复余数的4位阵列除法器:

实验四:存储系统综合实验

1.存储扩展实验

  1. 设计完成字库电路:在打开的“存储器实验4.circ”文件中找到“☆字库电路”子电路,利用给定的4 个 4K*32 位 ROM,7 个 16K*32 位 ROM,请构建 GB2312 16*16 点阵字库存储器电路, 电路输入为汉字区号和位号。本实验的主要目的是进行存储器字扩展(容量扩展, 地址总线扩展),实验工程文件中已经提供了一个参考实现“参考字库”子电路, 完成实验所需的点阵信息均可以通过该子电路直接导出后载入, 也可直接复制拷贝。
  2. 对完成的字库电路进行功能测试:利用“存储器实验4.circ”文件中“★字库测试”子电路对完成的字库电路进行功能测试。 通过对比上下两个显示区显示内容是否一致即可验证字库功能正确性。

实验结果图:

(1)字库电路:

(2)字库测试:

2.MIPS RAM 设计

  1. 设计完成MIPS RAM
  2. 对设计完成的 MIPS RAM 电路进行功能测试

实验结果图:

(1)MIPS RAM

(2)MIPS RAM测试

3.Cache设计实验

实验结果图:

直接相联

实验五: MISP程序设计实验

1.创建并运行一个MIPS汇编程序在MARS环境下创建HelloWorld.asm文件,然后汇编运行该汇编程序。

代码:

#HelloWorld.asm
.data #数据段开始
OutString: .asciiz   "Hello world!\n"
.text  #代码段开始
main:li $v0, 4  #4号系统调用,打印字符串la $a0, OutStringsyscallli $v0, 10  #10号系统调用,程序退出syscall

实验结果图:

2.算术运算实验

编写MIPS汇编程序AddSub.asm,完成如下C语言代码相同的功能。要求变量A-F存储在暂存寄存器中,结果Z存储在内存中并输出。

//AddSub.cint  main(){int A=15;int B=10;int C=7;int D=2;int E=18;int F=-3;int Z=0;Z=(A+B)+(C-D)+(E+F)-(A-C);Printf(“%d”,Z);}

代码:

.data
var0: .word  0
var1 :  .word 15
var2:  .word 10
var3:  .word 7
var4:  .word 2
var5:  .word 18
var6: .word -3
.text
main:lw $t0,var0lw $t1,var1lw $t2,var2lw $t3,var3lw $t4,var4lw $t5,var5lw $t6,var6add $t0,$t1,$t2sub $t2,$t3,$t4add $t4,$t5,$t6sub $t5,$t1,$t3add $t6,$t0,$t2add $t3,$t6,$t4sub $t0,$t3,$t5sw $t0,var0lw $t0,var0li $v0,1move $a0,$t0syscall

实验结果图:

3.分支结构实验

编写MIPS汇编程序Branch.arm,完成如下C语言代码相同的功能,要求A、B、C和Z必须是内存中的整型变量,程序运行过程中可以加载到寄存器,每次运行之前可以修改A、B、C的初始值,可以使用MIPS中与分支相关的伪指令使得比较和分支代码更简单。

C语言代码如下:

//Branch.cint  main( ){if(A>B || C<5)Z=1;else if(A==B)Z=2;elseZ=3;switch(Z){case 1:Z=-1;break;case 2:Z=-2;break;default:Z=0;break;}}

代码:

.data
A: .word 1
B: .word 2
C: .word 3
Z: .word
.text
main:lw $t2,Alw $t3,Blw $t4,Cli $t5,5bgt $t2,$t3,s1bgt $t5,$t4,s1beq $t2,$t3,s2j s3 s1: li $t1,1sw $t1,Zli $v0,1j jus2:li $t1,2sw $t1,Zli $v0,1j jus3:li $t1,3sw $t1,Zli $v0,1j juju:li $t2,1li $t3,2lw $t4,Zbeq $t2,$t4,z1beq $t3,$t4,z2j z3z1:li $t1,-1sw $t1,Zli $v0,1j rez2:li $t1,-2sw $t1,Zli $v0,1j rez3:li $t1,0sw $t1,Zli $v0,1j rere: li $v0,1lw $a0,Zsyscallli $v0, 10  #10号系统调用,程序退出syscall

实验结果图:

4.循环结构实验

编写MIPS汇编程序Loop.arm,完成如下C语言代码相同的功能,要求i和Z必须是内存中的整型变量,程序运行过程中可以加载到寄存器,每次运行之前可以修改i和Z的初始值,可以使用MIPS中与分支相关的伪指令使得比较和分支代码更简单。

C语言代码如下:

//Branch.cint  main( ){int Z=2;int i=40;Do{Z++;}while(Z<100);while(i>0){Z--;-;}
Printf(“%d,%d”,Z,i);}

代码:

.data
i: .word 40
Z: .word 2
c: .asciiz ","
.text
main:lw $t0,Zlw $t1,iloop:add $t0,$t0,1blt $t0,100,looploop2:bgtz $t1,ttj printtt:sub $t0,$t0,1sub $t1,$t1,1j loop2print:sw $t0,Zsw $t1,ili $v0,1lw $a0,Zsyscallli $v0, 4  #4号系统调用,打印字符串la $a0, csyscallli $v0,1lw $a0,isyscallli $v0, 10  #10号系统调用,程序退出syscall

实验结果图:

5.数组实验

编写MIPS汇编程序array.arm,完成如下C语言代码相同的功能,要求A和B必须是内存中的整型数组,C是内存整型变量,i可以是寄存器。

//array.cint  main( ){int A[6];int B[6]={1,2,3,4,5,6};int  C=10;int i;for(i=0;i<6;,i++){ A[i]=B[i]+C;}}

代码:

.data
A: .space 24
B: .word 1,2,3,4,5,6
C: .word 10
i: .word
c: .asciiz ","
.text
main:li $t0,0loop:lw $t1,B($t0)add $t2,$t1,10sw $t2,A($t0)add $t0,$t0,4blt $t0,24,loopli $t0,0loop2 :li $v0,1lw $a0,A($t0)syscallli $v0, 4  #4号系统调用,打印字符串la $a0, csyscalladd $t0,$t0,4blt $t0,24,loop2li $v0, 10  #10号系统调用,程序退出syscall

实验结果图:

6.数组排序实验

编写MIPS汇编程序ArraySort.arm,完成如下C语言代码相同的功能,要求a必须是内存中的整型数组,必须使用MIPS过程调用机制实现对应C函数,建议用十进制显示数据和寄存器的值,以便观察结果。

int swap(int *x, int *y){ if(*x>*y){int t=*x;*x=*y;*y=t;return 1;}return 0;}int main(){  int a[10]={10,20,50,-2,8,-8,34,-35,80,-19};int i,j,n=0;for(i=0;i<9;i++){for(j=i+1;j<10;j++)n+=swap(&a[i],&a[j]);}printf(“%d”,n);}

代码:

.data
a: .word 10,20,50,-2,8,-8,34,-35,80,-19
i: .word
j: .word
n: .word 0
.text
main:li $t0,0lw $t2,nloop1:add $t1,$t0,4blt $t0,36,loop2li $t0,0j printloop2:blt $t1,40,swapadd $t0,$t0,4j loop1swap:lw $t3,a($t0)lw $t4,a($t1)ble $t3,$t4,jusw $t4,a($t0)sw $t3,a($t1)add $t2,$t2,1ju: add $t1,$t1,4j loop2print:  sw $t2,nli $v0,1lw $a0,nsyscallli $v0, 10  #10号系统调用,程序退出syscall

实验结果图:

计算机组成原理实验(logisim)相关推荐

  1. 计算机组成原理实验-logisim实现自动售糖机

    一.作业内容;  二.设计分析: 首先我们先确定输入和输出,根据题目的提示很明显可以看出因为每次可以投入10元或者5元硬币,当总钱数达到15元或者超过15元的时候,自动出糖,并且机器不找零,所以可以看 ...

  2. 计算机组成原理实验logisim(三)之偶校验编码与检错

    实验三的前两个实验: 国标码转区位码 汉字GB2312编码 在很多地方都找得到,我就不多说. 附上我使用过的连接:https://blog.csdn.net/gemingshun/article/de ...

  3. 计算机组成原理实验 单总线CPU设计(定长指令周期3级时序)(HUST)思路总结

    计算机组成原理实验 单总线CPU设计(定长指令周期3级时序)(HUST)总结 全部任务共六关.主要涉及定长指令周期三级时序系统的设计,设计过程中比较重要的是数电知识.Logisim的组合逻辑电路分析功 ...

  4. 计算机组成原理实验一 运算器实验(1)

    一.实验目的 1.掌握开源数字电路模拟软件Logisim的使用: 2.掌握有符号数加减运算溢出检测的基本方法: 3.掌握运算器的组成及其工作原理: 4.验证4位函数发生器74181的组合功能. 二.实 ...

  5. 计算机组成原理实验pc,计算机组成原理实验报告5- PC实验

    计算机组成原理实验报告5- PC实验 2.5 PC实验 姓名:孙坚 学号:134173733 班级:13计算机 日期:2015.5.15 一.实验要求:利用CPTH 实验仪上的K16..K23 开关做 ...

  6. 计算机组成原理判零实验,计算机组成原理实验报告 进位位控制、通用寄存器判零实验...

    <计算机组成原理实验报告 进位位控制.通用寄存器判零实验>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告 进位位控制.通用寄存器判零实验(17页珍藏版)>请在人人文库 ...

  7. 计算机原理的进位输入是什么,进位控制实验计算机组成原理实验报告

    进位控制实验计算机组成原理实验报告 上海应用技术学院 计算机科学与信息工程系·2006 年编制 <计算机组成与结构>课程实验报告 实验名称 进位控制实验 实验序号 2 实验日期 2013. ...

  8. 计算机组成原理数据冒险的解决nop,计算机组成原理实验讲义(103页)-原创力文档...

    计算机组成原理 实验讲义 南京大学计算机科学与技术系 张泽生 2009 年 6 月 计算机组成原理实验教程 目录 第一章 集成电路发展与 CPU 设计 1 1.1 集成电路的发展 1 1.1.1 标准 ...

  9. 计算机组成流水系统可以,计算机组成原理实验十三建立指令流水系统实验

    计算机组成原理实验十三建立指令流水系统实验 评阅计算机组成原理实验报告十三姓名 学号 时间 四7-9 地点 行健楼 606机房 一 建立指令流水系统实验 1. 实验内容及要求(1)实验内容:1. 分析 ...

  10. 合肥学院计算机原理,合肥学院计算机组成原理实验三-20210415130709.docx-原创力文档...

    精品文档 精品文档 PAGE 精品文档 合肥学院计算机组成原理实验三 --------------------------------作者:------------------------------ ...

最新文章

  1. 2022-2028年中国氟膜行业市场全景评估及发展策略分析报告
  2. vue+element 后台管理系统(三)树形图
  3. FAT文件系统原理(转)
  4. 史上最详细Docker安装Mysql 带每一步详图及解释 并教你Docker 打印容器日志!!!相信值得你的阅读!!!
  5. Android人脸识别Demo竖屏YUV方向调整和图片保存
  6. GDKOI2018发烧记
  7. amd显卡风扇调节_为什么NVIDIA和AMD公版显卡纷纷摒弃涡轮散热器而采用多风扇散热设计?...
  8. 【Vue2.0】—过渡与动画(二十一)
  9. 接口开发规范 restful接口开发规范
  10. 转)TNS协议--翻译自《The Oracle Hackers Handbook》
  11. 【学习笔记】【OC语言】继承
  12. Python实现Windows电脑定时关机
  13. Mac下载及安装Tomcat
  14. 如何彻底删掉360安全卫士,删除顽固的DLL文件
  15. JAVA 对 海康SDK二次开发
  16. 做VR需要UI设计师具备哪些能力?
  17. Linux运行权限1009无标题,Linux权限管理练习
  18. win10自动更新后打开系统应用提示文件系统错误(-2147219196)
  19. HTML+CSS一篇文章搞定
  20. 操作指南丨利用IPFS相关技术/工具托管网站

热门文章

  1. 【最详细】数据结构(C语言版 第2版)课后习题答案全集 严蔚敏 等 编著
  2. 分分钟搞定LabVIEW读取与写入Excel【三易电子工作室】
  3. 串口调试助手fx2n_串口调试助手发送控制台达PLC命令
  4. 如何自动生成SpringBoot项目代码
  5. 白盒测试用例设计方法
  6. Android通讯录程序设计报告,Android个人通讯录课程设计报告.doc
  7. java学习是网上java学习视频好,还是报班比较好
  8. R语言:使用openxlsx读取和写入数据
  9. Java学习资料汇总
  10. FlightGear编译