计算机组成原理实验(logisim)

article/2025/9/16 8:34:47

 

文章目录

目录

文章目录

实验一: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译码器电路图的绘制,并分别用自动仿真、和单步仿真验证其逻辑功能。

59a65052e60045c9ba90f4d57ff9b0c0.png

实验结果图:

2dbae1e713a348a0b6884012980fb7db.png

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

36e54d41ec954eb5b3d90efec0a47989.png实验结果图:

9f14cd37d5704809b8c3dd4a0f01899e.png 7f4a19b32ed042d08278736c60cb3ee9.png

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

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

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

 实验结果图:

e6d65b0d74aa442bb33ef3a89e6d0845.png

 6304a1d10fea4484b0d0d924edc48743.png

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

ebd3e2e0ed2546d5a688235f6b624058.png

实验结果图:

a438057b4c6e4b43a66aac29cb0f82de.png

 

实验二:数据的表示

1.汉字的编码实验:

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

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

(2)汉字GB2312编码实验

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

实验结果图:

国标转区位码:

7c3c5689692045bf9a9b82b08e3f726f.png

 偶校验编码:

95bbf21c51fa48e99792e0294d96daf7.png

偶校验检错:

b3cc2fd012e34d9fb3258b4cf2ad337b.png

实验三:运算器组成实验

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

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

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

实验结果图:

(1)八位串行加法器

f2e056212a524b588ec922e784b822a5.png

(2)8位可控加减法器

698a0892cc4f49d59edf984b5bda7347.png

2.快速加法器的设计

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

实验结果图:

(1)4位先行进位电路

d5940d995ce940779541742b303a77b9.png

(2)4位快速加法器

7218fa1ef1f349d48996be8840d7c3fa.png

(3)16位的快速加法器

eb1c531c7f7141318e067a171f6453f8.png

 

(4)32位的快速加法器

c60fc19ce44a4e17916466d8dbfe1711.png

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

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

实验结果图:

56b52ee7dd8c4244a97e48cdfd8fed0e.png

 72309ceae8b846aba1b27064ebc08dd2.png

4.阵列乘法器设计

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

实验结果图:

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

da0197c44df24693a5716f2fd963cc56.png

 

4.阵列除法器设计

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

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

实验结果图:

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

906c5ee10495489ab652b9cc00129d35.png

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

ff8cca9ec17449f8baa71d370da78212.png

 

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

1.存储扩展实验

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

实验结果图:

(1)字库电路:

17c4e93b5cbe42baa6d096fefe0622c6.png

(2)字库测试:

9f91aab33e40458aaaf12b1cc6bd1621.png

2.MIPS RAM 设计

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

实验结果图:

(1)MIPS RAM

3c34ab1b3f494895a82b78928c29fd10.png

c5113dc7dad04c7ba73464a15ea76abb.png

032173939a4b43e18d4ef98729f848cc.png

67ddbf246eee4d468076ac54ff850695.png

(2)MIPS RAM测试

996e93ba701346b080261aea96213afe.png

3.Cache设计实验

实验结果图:

直接相联

16fe24c2059343aea5bdc017b04d83ca.png

 

ea6dd7d511d24189b869e84313c06ff7.png

 

实验五: 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

实验结果图:

20d8e81fc1df4c5a845f456332ae3571.png

d886d6cc63b243fd8f6da00efae9e65a.png

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

实验结果图:

d2f6b0c2f995433bb8ea9eb8377f9a26.png92ffc9eb9be94537ba37023af11c355b.png

186c70ccb6cc462f8a8c4228430304e6.png

 

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

实验结果图:

e525631e06734c54b589b7824d3dd941.pngda8d04209d9e47a3bdf43d942866cf96.pngbee15c3b337741b3a75f550bda0126f0.png2cb779ad114743289cdac4d43c8a0328.png

 85608a4f0e654831b3367b46cca714c2.png

 

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

 

实验结果图:

2f3f13b1778a4bad8cbee8ac3b302aba.png47f3b19975a143e89f5b8cd17b823f0e.png

9d17b79fb92b4c4484986a42209bd87b.png

 

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

实验结果图:

e7631df276df4ee1bae8401faa4aa0e0.png56d553ad0cd14746b2dde784adb435bd.png

1de3e8e251e3456089ec820854b5e3f9.png

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

实验结果图:

1026e18876f042feacdee83025846344.pnga3d0a32d91924fccaca9dc80da70f1fa.png

8c89ebe7ed9c4312b6f0f57b944411cf.png

 

 

 


http://chatgpt.dhexx.cn/article/FZugFXWA.shtml

相关文章

多思计算机组成原理实验八:简单模型机实验

目录 1.实验讲义&#xff1a; 2.实验电路&#xff1a; 3.实验结果以及相关文件分享&#xff1a; 4.实验视频&#xff1a; 1.实验讲义&#xff1a; 2.实验电路&#xff1a; 3.实验结果以及相关文件分享&#xff1a; 下面链接是实验电路文件以及手抄讲义的分享。其中&#x…

计算机组成原理实验二 存储器实验

一、实验目的 1、了解静态随机存储器RAM和只读存储器ROM的工作特性 2、掌握存储器与总线的连接及存储器地址空间映射的原理 3、设计一个8位字长的存储器通路&#xff0c;包括ROM和RAM两个地址相互独立的存储器&#xff0c;实现对ROM和RAM存储器的数据读写操作及数据成批导入…

计算机组成原理实验二:运算器实验

实验基于多思计算机组成原理网络虚拟实验系统 实验室地址&#xff1a;http://www.dsvlab.cn/ 实验目的&#xff1a; 通过门电路实现运算器 1&#xff09;掌握算术逻辑运算单元的工作原理。 2&#xff09; 熟悉简单运算器的电路组成。 3&#xff09; …

计算机组成原理实验一报告——运算器

一&#xff0e;实验目的 了解和掌握Am2901运算器的组成结构和工作原理&#xff1b;认识和掌握TEC-2机运算器的组成和工作原理&#xff1b;认识和掌握TEC-2机运算器相关控制信号的含义和使用方法&#xff1b; 二&#xff0e;实验原理 Am2901运算器 1&#xff0e;Am2901 芯片内…

计算机组成原理实验:基本运算器实验

学生实验报告 实验课名称&#xff1a;计算机组成原理 实验项目名称&#xff1a;基本运算器实验 一、实验名称&#xff1a; 基本运算器实验 二、实验目的&#xff1a; &#xff08;1&#xff09;了解运算器的组成原理 &#xff08;2&#xff09;掌握运算器的工作原理 三、…

计算机组成原理学习-实验一 运算器实验(详细、系统)

如果你对计算机组成原理感兴趣&#xff0c;可以考虑阅读我的专栏 计算机组成原理【专栏】 须知 本文仅作学习笔记使用&#xff0c;仅在CSDN网站发布&#xff0c;如果在其他网站发现&#xff0c;均为侵权行为&#xff0c;请举报。作者&#xff1a;小王在努力。 运算器实验 须知实…

计算机组成原理实验——存储器

计算机组成原理实验——存储器 实验题目&#xff1a;存储器 预习内容&#xff1a; 1.多层次的存储器 ⑴存储器概述 ①存储器的分类 ②存储器的分级 ③主存储器的技术指标 ⑵SRAM存储器 ①基本的静态存储元阵列 ②基本的SRAM逻辑结构 ③读/写周期波形图 ⑶DRAM存储器 ①DRAM存…

计算机组成原理实验——实验1 运算器实验

实验目的 &#xff08;1&#xff09;掌握算术逻辑运算单元的工作原理。 &#xff08;2&#xff09;熟悉简单运算器的电路组成。 &#xff08;3&#xff09;熟悉4位运算功能发生器&#xff08;74LS181&#xff09;的算术、逻辑运算功能。 实验要求 &#xff08;1&#xff0…

计算机组成原理实验

计算机组成原理实验 1. 4位先行进位电路&#xff1a;就是741822.四位快速加法器&#xff1a; 1. 4位先行进位电路&#xff1a;就是74182 4位先行进位电路图怎么连的&#xff1f; 通过公式来连的&#xff1a;谁与谁或&#xff0c;谁与谁异或 公式&#xff1a; CiXiYi(Xi异或Yi)…

计算机组成原理——运算器实验

计算机组成原理实验—运算器 预习内容&#xff1a; 1.逻辑运算 ⑴逻辑非运算&#xff1a;按位求它的反&#xff0c;常用变量上加一横表示 ⑵逻辑加运算&#xff1a;按位求它们的“或”&#xff0c;常用“”来表示 ⑶逻辑乘运算&#xff1a;按位求它们的“与”&#xff0c;常用…

计算机组成原理 存储器实验

存储器实验 实验环境 计算机组成原理实验环境 实验目的 掌握静态随机存储器 RAM 的工作特性。掌握静态随机存储器 RAM 的读写方法。 实验要求 做好实验预习&#xff0c;熟悉 MEMORY6116 芯片各引脚的元器件的功能和连接方式&#xff0c;熟悉其他实验元器件的功能特性和使…

计算机组成原理 运算器实验

运算器实验 实验环境 计算机组成原理实验环境 实验目的 掌握算术逻辑运算单元的工作原理。熟悉简单运算器的电路组成。熟悉 4 位运算功能发生器&#xff08;74LS181&#xff09;的算术、逻辑运算功能。 实验要求 做好实验预习&#xff0c;看懂电路图&#xff0c;熟悉实验…

【计算机组成原理】实验1:运算器

文章目录 一、实验目的二、预习要求三、实验设备四、电路组成五、工作原理六、实验内容七、实验步骤八、实验报告要求1.连线2.算术运算 总结 一、实验目的 掌握运算器的组成及工作原理&#xff1b;了解4位函数发生器74LS181的组合功能&#xff0c;熟悉运算器执行算术操作和逻辑…

计算机组成原理实验一:运算器组成实验

文章目录 一、实验目的二、实验内容三、实验环境四、实验步骤与实验结果 一、实验目的 1、熟悉逻辑测试笔的使用方法。 2、熟悉TEC-8模型计算机的节拍脉冲T1、T2、T3&#xff1b; 3、熟悉双端口通用寄存器组的读写操作&#xff1b; 4、熟悉运算器的数据传送通路&#xff1b; 5…

计算机组成原理实验五:CPU组成与机器指令执行实验

本篇博文主要是讲述一下计算机组成原理实验中CPU组成与机器指令执行实验&#xff0c;因为很多同学在刚学习计算机组成原理实验的时候对于调试的一些步骤还是有些懵懵懂懂&#xff0c;每个步骤之间的连接做的不是很连贯&#xff0c;故有了写此篇博文的初衷&#xff0c;笔者会在近…

计算机组成原理5个常用实验报告(仅供参考)

如果想要完整的文档请到这里下载&#xff1a;计算机组成原理实验报告&#xff08;5个常用实验报告&#xff09;_多思计算机组成原理实验报告-专业指导文档类资源-CSDN下载 实验一 算术逻辑运算实验 一、实验目的 掌握十六位机字与字节运算的数据传输格式&#xff0c;验证运算…

zabbix监控mysql的原理_zabbix监控mysql主从

说明&#xff1a; 部署了个mysql从数据库&#xff0c;需要时时监控这个从数据库的主从状态。原理的话&#xff0c;是通过从mysql上的zabbix执行show slave status获取 Slave_IO_Running|Slave_SQL_Running状态是否都为Yes来判断主从是否正常。 具体&#xff1a; 1. 从mysql上允…

Zabbix监控结合Grafana绘图

Zabbix简介 Zabbix 由 Alexei Vladishev 创建&#xff0c;目前由其成立的公司 Zabbix SIA 积极的持续开发更新维护&#xff0c; 并为用户提供技术支持服务 Zabbix 是一个企业级分布式开源监控解决方案 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵…

Zabbix监控系统详解及配置

前言 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。利用一个优秀的监控软件&#xff0c;我们可以&#xff1a; 通过一个友好的界面进行浏览整个网站所有的服务…

zabbix监控服务器性能,使用zabbix监控apache性能

文章目录 [隐藏] 原理 开启apache status 创建zabbix模板 原理 监控原理跟之前写的监控nginx差不多&#xff0c;都是利用web服务器自身提供的状态信息页获取运行状态信息。apache的监控状态信息如下&#xff1a; Total Accesses: 252523 Total kBytes: 2154830 CPULoad: 2.7200…