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

这篇具有很好参考价值的文章主要介绍了计算机组成原理实验(logisim)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 文章来源地址https://www.toymoban.com/news/detail-435097.html

文章目录

目录

文章目录

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

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

实验结果图:

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

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

计算机组成原理实验(logisim)实验结果图:

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

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

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

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

 实验结果图:

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

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

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

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

实验结果图:

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

 

实验二:数据的表示

1.汉字的编码实验:

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

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

(2)汉字GB2312编码实验

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

实验结果图:

国标转区位码:

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

 偶校验编码:

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

偶校验检错:

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

实验三:运算器组成实验

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

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

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

实验结果图:

(1)八位串行加法器

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

(2)8位可控加减法器

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

2.快速加法器的设计

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

实验结果图:

(1)4位先行进位电路

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

(2)4位快速加法器

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

(3)16位的快速加法器

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

 

(4)32位的快速加法器

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

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

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

实验结果图:

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

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

4.阵列乘法器设计

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

实验结果图:

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

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

 

4.阵列除法器设计

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

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

实验结果图:

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

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

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

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

 

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

1.存储扩展实验

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

实验结果图:

(1)字库电路:

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

(2)字库测试:

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

2.MIPS RAM 设计

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

实验结果图:

(1)MIPS RAM

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

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

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

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

(2)MIPS RAM测试

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

3.Cache设计实验

实验结果图:

直接相联

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

 

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

 

实验五: MISP程序设计实验

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

代码:

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

实验结果图:

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

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

2.算术运算实验

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

//AddSub.c

int  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,var0
	lw $t1,var1
	lw $t2,var2
	lw $t3,var3
	lw $t4,var4
	lw $t5,var5
	lw $t6,var6
	add $t0,$t1,$t2
	sub $t2,$t3,$t4
	add $t4,$t5,$t6
	sub $t5,$t1,$t3
	add $t6,$t0,$t2
	add $t3,$t6,$t4
	sub $t0,$t3,$t5
	sw $t0,var0
	lw $t0,var0
	li $v0,1
	move $a0,$t0
	syscall

实验结果图:

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

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

 

3.分支结构实验

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

C语言代码如下:

//Branch.c

int  main( )

{

if(A>B || C<5)

 Z=1;

else if(A==B)

 Z=2;

else

 Z=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,A
	lw $t3,B
	lw $t4,C
	li $t5,5
	bgt $t2,$t3,s1
	bgt $t5,$t4,s1
	beq $t2,$t3,s2
	j s3 
	s1: 
	   li $t1,1
	   sw $t1,Z
	   li $v0,1
	   j ju
	s2:
	   li $t1,2
	   sw $t1,Z
	   li $v0,1
	   j ju
	s3:
	   li $t1,3
	   sw $t1,Z
	   li $v0,1
	   j ju
	ju:
	   li $t2,1
	   li $t3,2
	   lw $t4,Z
	   beq $t2,$t4,z1
	   beq $t3,$t4,z2
	   j z3
	   z1:
	      li $t1,-1
	      sw $t1,Z
	      li $v0,1
	      j re
	   z2:
	      li $t1,-2
	      sw $t1,Z
	      li $v0,1
	      j re
	   z3:
	      li $t1,0
	      sw $t1,Z
	      li $v0,1
	      j re
	re:	
		li $v0,1
		lw $a0,Z
		syscall
       		li $v0, 10  #10号系统调用,程序退出
       		syscall

实验结果图:

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

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

 

4.循环结构实验

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

C语言代码如下:

//Branch.c

int  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,Z
	lw $t1,i
	loop:
	   add $t0,$t0,1
	   blt $t0,100,loop
	loop2:
	   bgtz $t1,tt
	   j print
	   tt:
	      sub $t0,$t0,1
	      sub $t1,$t1,1
	      j loop2
	print:
	   sw $t0,Z
	   sw $t1,i
	   li $v0,1
	   lw $a0,Z
	   syscall
	   li $v0, 4  #4号系统调用,打印字符串
           la $a0, c
           syscall
           li $v0,1
	   lw $a0,i
	   syscall
           li $v0, 10  #10号系统调用,程序退出
           syscall

 

实验结果图:

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

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

 

5.数组实验

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

//array.c

int  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,0
	loop:
	   lw $t1,B($t0)
	   add $t2,$t1,10
	   sw $t2,A($t0)
	   add $t0,$t0,4
	   blt $t0,24,loop
	   li $t0,0
	loop2 :
	   li $v0,1
	   lw $a0,A($t0)
	   syscall
	   li $v0, 4  #4号系统调用,打印字符串
           la $a0, c
           syscall
           add $t0,$t0,4
	   blt $t0,24,loop2
           li $v0, 10  #10号系统调用,程序退出
           syscall

实验结果图:

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

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

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,0
	lw $t2,n
	loop1:
		add $t1,$t0,4
		blt $t0,36,loop2
		li $t0,0
		j print
	loop2:
		blt $t1,40,swap
		add $t0,$t0,4
		j loop1
	swap:
		lw $t3,a($t0)
		lw $t4,a($t1)
		ble $t3,$t4,ju
		sw $t4,a($t0)
		sw $t3,a($t1)
		add $t2,$t2,1
	ju:	
		add $t1,$t1,4
		j loop2
	print:	
	  	sw $t2,n
	  	li $v0,1
	   	lw $a0,n
	   	syscall
          	li $v0, 10  #10号系统调用,程序退出
          	syscall

实验结果图:

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

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

 

 

 

到了这里,关于计算机组成原理实验(logisim)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成原理--基于Logisim的海明校验码编码电路实验的应用(超详细/设计/实验/作业/练习)

    掌握海明码设计原理,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编码电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验编码电路。输

    2024年02月08日
    浏览(107)
  • 计算机组成原理--基于Logisim的4位并行加法器实验的应用(超详细/设计/实验/作业/练习)

    掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 利用已设计好的四位先行进位电路构造四位快速加法器,其引脚定

    2024年02月02日
    浏览(94)
  • 计算机组成原理--基于Logisim的8位可控加减法器实验的应用(超详细/设计/实验/作业/练习)

    掌握一位全加器的实现逻辑,掌握多位可控加减法电路的实现逻辑,熟悉 Logisim 平台基本功能,能在 logisim 中实现多位可控加减法电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 Logisim 模拟器中打开 alu.circ 文件,在对应子电路中利用已经封装好的全加器设计8

    2024年02月04日
    浏览(108)
  • 计算机组成原理3个实验-logisim实现“七段数码管”、“有限状态机控制的8*8位乘法器”、“单周期MIPS CPU设计”。

    目录 标题1.首先是七段数码管   标题二:有限状态机控制的8*8位乘法器 标题三:单周期MIPS CPU设计 1看一下实验要求:    2.接下来就是详细设计: 1. 组合逻辑设计        由于7段数码管由7个发光的数码管构成,因为我们想用二进制将0-9这几个数字表示出来。所以他需要

    2024年01月17日
    浏览(32)
  • 计算机组成原理实验

    上学期刚结束了计算机组成原理课程,在这里把上学期做过的实验都记录一下。这里一共有4个:海明码的编码和解码、ALU、字库、RAM。我们是使用的谭志虎:自己动手画CPU。 中间参考了很多大佬,我在gitee上fork一下原来的代码,再把我自己的上传到仓库中。这里贴一下我的

    2024年02月04日
    浏览(48)
  • 计算机组成原理实验——一、ALU实验

    1.掌握ALU模块的组成和接口,理解ALU的功 能。 2.通过编程调用ALU模块计算斐波那契数。 3.掌握Verilog中多模块编程方法和实现。 用 Verilog 设计一个算术运算单元 ALU,采 用纯组合逻辑设计,32bit 宽。 利用该 ALU 完成斐波那契数 f(n),其中 2n16。 可选 –改成3段式实现(已实现)

    2023年04月22日
    浏览(32)
  • Hust计算机组成原理实验

    点击 资源栏-Gates 选项中的门电路,即可在右边画布添加 添加成功后如下: 引脚可在菜单栏中找到 也可在 资源栏-Wiring 中找到 添加入画板后,可在属性表中修改面向方向 最后得到如下图 注:方形为输出,圆形为输入。 使用 光标 连接两个结点即可 灰色:线的位宽未知。发

    2024年02月04日
    浏览(30)
  • 计算机组成原理实验——三、存储器实验

    1.掌握存储器的工作原理和接口。 2.掌握存储器的实现方法和初始化方法。 3.掌握RISC-V中存储器的存取方式。 1.利用vivado IP核创建64 32的ROM,并在 系数文件中设置数据为123489ab; 2.利用vivado IP核创建64 32的RAM,并在 其上封装一个模块,使得其能完成risc-v 的load/store指令功能。

    2024年02月04日
    浏览(39)
  • 计算机组成原理实验——二、寄存器实验

    1.掌握寄存器堆的工作原理和接口。 2.掌握寄存器堆的实现方法。 3.掌握寄存器堆在微处理器中承担的功能。 设计一32*32bit 的寄存器文件,即32 个 32 位的寄存器文件(寄存器组) –具备两组读端口及一组写端口; –通过读端口可从0~31 号的任意地址读取 数据; –通过写端口可

    2024年02月06日
    浏览(35)
  • 计算机组成原理实验 实验一 存储器实验

    目录 实验1  存储器实验 一、实验目的 二、实验原理 三、实验电路 四、实验步骤 五、实验数据分析 六、思考题 1.熟悉DVCC计算机组成原理实验机的结构,掌握其主要操作。 2.掌握静态随机存储器RAM工作特性。 3.掌握静态随机存储器RAM的数据读写方法。 4.能够运用静态随机存

    2023年04月18日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包