北工大数字逻辑期末大作业

个人所写 有参照(最后一个综合题有错)勿骂(yysy数字逻辑和数逻实验真的太难了

一.

1.在Logisim中打开给定的project.circ 。

2.然后,点击“大作业逻辑图”,查看电路图(此时你可能不理解电路结构),将Shared Label内容修改为与你的学号相关。

3.然后,点击“应用测试”,看到基于逻辑符号(应有你的学号信息)的电路设计,并截图。

4.对该电路进行测试,填写下表

 

Sel=00

Sel=01

Sel=10

Sel=11

输入

输出

输出

输出

输出

输出

ABCD

Out3-0

Out3-0

Out3-0

Out3-0

FLAG

0000

0011

0000

0000

0000

0

0001

0100

0001

0001

0000

0

0010

0101

0010

0011

0000

0

0011

0110

0011

0010

0000

0

0100

0111

0100

0110

0000

0

0101

1000

1011

0111

0000

0

0110

1001

1100

0101

0000

0

0111

1010

1101

0100

0000

0

1000

1011

1110

1100

0000

0

1001

1100

1111

1000

0000

0

1010

0000

0000

0000

0000

1

1011

0000

0000

0000

0000

1

1100

0000

0000

0000

0000

1

1101

0000

0000

0000

0000

1

1110

0000

0000

0000

0000

1

1111

0000

0000

0000

0000

1

分析电路实现的逻辑功能,对电路结构的理解:

Logisim 是电子元件模拟软件的简化版本,近似于电子元件。

提供了我们在计算机组成原理所需要的基本所有元器件的逻辑结构,是非常有效的快速自行实验验证学习结果的工具。

二.

 1.利用Logisim中的基本门元件(与门/或门/非门/异或门),搭建1位全加器电路,并封装电路,编辑逻辑符号(学号+add1);利用自己封装的1位全加器,搭建32位全加器电路(提示:可以先用1位全加器搭建4位全加器,继而封装成16位全加器,以此类推),并封装电路,编辑逻辑符号(学号+add32)。

2. 利用上面封装过的32位全加器以及Logisim中的基本门元件搭建32位全减器,并封装电路,编辑逻辑符号(学号+sub32)。

3.利用上面封装过的32位全加器、全减器以及Logisim中的与门、或门以及选择器,构造能完成四种运算的ALU,功能表如下:

4.添加运算结果为零的标志信号zero。

5.算术运算(补码)测试:若(A)10 = -8,(B)10 = 8,填表并截取正确结果电路图。

6.逻辑运算测试:若(A)16=55550000,(B)16=0000AAAA,填表截取正确结果电路图

7.编辑逻辑符号(ALU-学号),截图备用。

8.截取以上要求图例(包含所有搭建和封装过程用图)并完成word报告。

 

 

 

 

 

 

 

ALU_sel

ALU_out

(ALU_out)10

zero

00

0

1

01

8

0

 

 

 

ALU_sel

ALU_out

10

11

 

 

 module  alu_20074407(A,B,ALU_sel,ALU_out,zero);

 

          input [31:0] A,B;

          input [1:0] ALU_sel;

          output [31:0] ALU_out;

          output  zero;

          reg ALU_out;

            assign  zero=is(ALU_out==32b0)?1:0;

            always @(A or B or ALU_sel)

             case (ALU_sel)

                0: ALU_out = A+B            ;

                1: ALU_out = A-B             ;

                2: ALU_out = A&B             ;

                3: ALU_out = A|B            ;

               default: ALU_out = 32b0           ;

             endcase

        endmodule

三.

立即数扩展电路的设计与验证

1.按照要求将输入的16位数扩展成32位输出。

2.功能表

信号名 

位宽 

方向 

说明 

Imm16 

16 

输入 

来自指令寄存器的16位立即数 

Extsel 

2 

输入 

00:无符号扩展,将16位立即数进行0扩展至32位立即数; 

01:符号扩展,将16位补码立即数扩展成32位补码立即数; 

10:低位0扩展,将16位立即数移至32位立即数的高16位,低16位补0 

ExtImm32 

32 

输出 

扩展后的32位立即数 

3.利用Logisim中的“分线器”和“选择器”,构造立即数扩展电路。

4.模拟验证,填表下表,并截取正确结果电路图。

Imm16

Extsel

ExtImm32

1111000011110000

00

0000000000001111

01

1000111111110111

01

0000111100001111

10

 

 

四.

1.7条指令说明见相关ppt,根据7条MIPS指令的特征码“opcode”和“funct”,设计指令译码器。

2.指令译码器功能表

输入

输出

加法

减法

或立即数

立即数置高位

取字

存字

相等跳转

opcode

funct

addu

subu

ori    

lui   

lw  

sw   

beq   

000000

100001

1

0

0

0

0

0

0

000000

100011

0

1

0

0

0

0

0

001101

X

0

0

1

0

0

0

0

001111

X

0

0

0

1

0

0

0

100011

X

0

0

0

0

1

0

0

101011

X

0

0

0

0

0

1

0

000100

X

0

0

0

0

0

0

1

3.在Logisim中设计实现指令译码器,进行验证,并截取正确结果电路图

4.编辑逻辑符号(Mdec-学号),备用。

5.截取以上要求用图并完成word报告。

 

 

 

 

 

 

 

 

五.

1.当指令被译码后,为完成指令功能,应对数据通路中的选择信号进行编码。例如:addu和subu指令完成A、B两个数的运算;ori指令完成A与立即数的“按位或”逻辑运算;lui指令完成高位“置”有符号立即数;lw和sw指令要通过A+有符号立即数获得数据存放地址;beq指令通过判断A-B的结果是否为零,建立PCsel信号。见图1。

2.编码器功能表(对照图1,理解编码含义)

3.在Logisim中设计实现编码器,进行验证,并截取正确结果电路图

4.编辑逻辑符号(Mcod-学号),备用。

5.截取以上要求用图并完成word报告。

 

 

 

 

 

 

 

 

 

六.

综合验证

1.在Logisim中,按照图1进行电路(逻辑符号)连接。

当A=32、B= -30、Imm16=-6时,完成addu测试,截取测试结果并说明;

 

 

当A=10、B=10、Imm16=-2时,完成subu测试,截取测试结果并说明;

 

当A=10、B=10,Imm16=-1时,完成ori测试,截取测试结果并说明;

 

当A=0、B=10,Imm16=15时,完成lui测试,截取测试结果并说明;

 

 

当A=33、B=33,Imm16=32时,完成beq测试,截取测试结果并说明;

 

当A=2、B=10,Imm16=32时,完成beq测试,截取测试结果并说明;

 

   当A=10、B=8,Imm16=-5时,完成lw测试,截取测试结果并说明;

 

七.

小结

学习了ALU,立即数拓展,MIPS等内容,为数据结构打下了基础。在了解他们的同时,可以通过实操实现加减法,相等,立即数等相关功能。通过看教材等方式,了解了其他的元器件使用功能等,了解了数字逻辑LogiSim这个平台的使用方法以及CPU中央处理器的知识等。

  • 23
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值