北工大Logisim完成单周期处理器开发.docx

上传人:b****6 文档编号:8834020 上传时间:2023-05-15 格式:DOCX 页数:21 大小:1,017.75KB
下载 相关 举报
北工大Logisim完成单周期处理器开发.docx_第1页
第1页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第2页
第2页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第3页
第3页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第4页
第4页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第5页
第5页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第6页
第6页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第7页
第7页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第8页
第8页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第9页
第9页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第10页
第10页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第11页
第11页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第12页
第12页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第13页
第13页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第14页
第14页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第15页
第15页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第16页
第16页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第17页
第17页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第18页
第18页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第19页
第19页 / 共21页
北工大Logisim完成单周期处理器开发.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北工大Logisim完成单周期处理器开发.docx

《北工大Logisim完成单周期处理器开发.docx》由会员分享,可在线阅读,更多相关《北工大Logisim完成单周期处理器开发.docx(21页珍藏版)》请在冰点文库上搜索。

北工大Logisim完成单周期处理器开发.docx

北工大Logisim完成单周期处理器开发

Logisim完成单周期处理器开发

实验报告

 

学号__________********__________

姓名___________王禹心___________

指导教师___________朱文军___________

提交日期__________2019.5.28_________

 

成绩评价表

报告内容

报告结构

报告最终成绩

□丰富正确

□基本正确

□有一些问题

□问题很大

□完全符合要求

□基本符合要求

□有比较多的缺陷

□完全不符合要求

报告与Project功能一致性

报告图表

总体评价

□完全一致

□基本一致

□基本不一致

□符合规范

□基本符合规范

□有一些错误

□完全不正确

教师签字:

________________________

 

一、总体数据通路结构设计图

二、数据通路中的模块设计图

1、IFU

2、GPR

3、ALU

4、EXT

5、DM

6、Controller

三、控制器设计

四、机器指令描述

五、测试程序

六、运行结果

七、问答

八、收获体会

附:

Logisim模块目录

一、总体数据通路结构设计图

二、数据通路中的模块设计图

1、IFU

模块接口

信号名

方向

描述

Zero

I

ALU计算结果

1:

计算结果为0

0:

计算结果非0

Clk

I

时钟信号

Reset

I

复位信号

1:

复位

0:

无效

Insout[31:

0]

O

32位MIPS指令

功能定义

序号

功能名称

描述

1

复位

当复位信号有效时,PC被设置为0x00000000

2

取指令

根据PC从IM中取出指令

3

计算下一条指令地址

若不是beq指令,则PC<-PC+1,若是beq指令,且zero为1,则PC<-PC+sign_ext

2、GPR

信号名

方向

描述

Wd[31:

0]

I

写入数据的输入

Regwrite

I

读写控制信号

1:

写操作

0:

读操作

Clk

I

时钟信号

Reset

I

复位信号

1:

复位

0:

无效

A1[4:

0]

I

读存取器地址1

A2[4:

0]

I

读存取器地址2

A3[4:

0]

I

写寄存器地址

Rd1[31:

0]

O

32位数据输出1

Rd2[31:

0]

O

32位数据输出2

3、ALU

模块接口

信号名

方向

描述

A[31:

0]

I

32位输入数据1

B[31:

0]

I

32位输入数据2

2F[1:

0]

I

控制信号

01:

或运算

10:

减法

11加法

C[31:

0]

O

32位数据输出

功能定义

序号

功能名称

描述

1

A|B

2

A-B

3

A+B

4、EXT

模块接口

信号名

方向

描述

Imm16[15:

0]

I

16位数据输入

Extop[1:

0]

I

控制信号

00:

高位补0

01:

低位补0

10:

符号扩展

Ext32

O

32位数据输出

功能定义

序号

功能名称

描述

1

高位补0

高16位补0

2

低位补0

低16位补0

3

符号扩展

符号位扩展

5、DM

模块接口

信号名

方向

描述

D[31:

0]

I

写入数据的输入

Memwrite

I

读写控制信号

1:

写操作

Clk

I

时钟信号

Reset

I

复位信号

1:

复位

0:

无效

A[4:

0]

I

操作寄存器地址

Out[31:

0]

0

32位数据输出

功能定义

序号

功能名称

描述

1

复位

当复位信号有效时,所有数据被设置为0

2

根据输入的寄存器地址读出数据

3

根据输入的地址把输入的数据写入

6、Controller

模块接口

信号名

方向

描述

Op[5:

0]

I

六位op

Func[5:

0]

I

六位function

Regdst

0

写地址控制

Alusrc

0

cpu第二操作数选择控制

Mentoreg

0

Dm读控制

Regwrite

0

GPR读写控制

Memwrite

0

DM写控制,写入GPR数据选择

Npc_sel

0

Beq指令标志

Extop

0

控制ext扩展方式

Aluop[1:

0]

0

控制cpu进行相应运算

三、控制器设计

单周期真值表

Func

100000

100010

N/A

Op

000000

000000

001101

100011

000100

001111

add

sub

ori

lw

sw

beq

lui

RegDst

1

1

0

0

X

X

0

ALUSrc

0

0

1

1

1

0

1

MentoReg

0

0

0

1

X

X

X

RegWrite

1

1

1

1

0

0

2

MemWrite

0

0

0

0

1

0

0

Npc_sel

0

0

0

0

0

1

0

Extop

X

X

0

0

0

X

1

ALUctr

Add

subtract

or

add

add

subtract

X

四、机器指令描述

助记符

opcode

function

功能

addu

000000

100001

rd<-rs+rt

subu

000000

100011

rd<-rs-rt

ori

001101

 rt<-rs|(zero-extend)immediate

lw

100011

rt<-memory[rs+(sign-extend)immediate] 

sw

101011

memory[rs+(sign-extend)immediate]<-rt

beq

000100

 if(rs==rt)PC<-PC+4+(sign-extend)immediate<<2 

lui

001111

rt<-immediate*65536 

j

000010

PC<-(PC+4)[31..28],address,0,0 

五、测试程序

lui$t0,0x0004#lui测试程序要实现:

立即数0x0004加载至t0寄存器的高位lui$t1,0x0008#lui测试程序要实现:

立即数0x0008加载至t1寄存器的高位ori$t3,$zero,0x00002000#ori测试程序要实现:

zero寄存器中的内容与立即数0x00002000进行或运算,储存在t3寄存器中

sw$t0,4($t3)#sw测试程序要实现:

把t0寄存器中值(1Word),存储到t3的值再加上偏移量4,所指向的RAM中

sw$t0,8($t3)#sw测试程序要实现:

把t0寄存器中值(1Word),存储到t3的值再加上偏移量8,所指向的RAM中

loop:

add$t2,$t2,$t1#add测试程序要实现:

t1寄存器中的值加上t2寄存器中的值后存到t2寄存器中

lw$t4,4($t3)#lw测试程序要实现:

把t3寄存器的值+4当作地址读取存储器中的值存入t4

lui$t5,0x0004#lui测试程序要实现:

立即数0x0004加载至t5寄存器的高位sub$t7,$t6,$t5#sub测试程序要实现:

t6寄存器中的值减去t5寄存器中的值后存到t7寄存器中

add$t0,$t0,$t5#sub测试程序要实现:

t0寄存器中的值减去t5寄存器中的值后存到t0寄存器中

add$t6,$t6,$t0#add测试程序要实现:

t6寄存器中的值加上t0后存到t6寄存器中beq$t0,$t1,loop#beq测试程序要实现:

判断t0的值和t1的值是否相等,相等转loopadd$t0,$t0,$t5#add测试程序要实现:

t0寄存器中的值加上t5后存到t0寄存器中lui$v0,0x0001#lui测试程序要实现:

立即数0x0001加载至v0寄存器的高位lui$v1,0x0002#lui测试程序要实现:

立即数0x0002加载至v1寄存器的高位add$v0,$v0,$v1#add测试程序要实现:

v0寄存器中的值加上v1后存到v0寄存器中add$v1,$v0,$v1#add测试程序要实现:

v0寄存器中的值加上v1后存到v1寄存器中ori$a0,$v0,0xffff#ori测试程序要实现:

v0寄存器中的内容与立即数0xffff进行或运算,储存在a0寄存器中

sub$a1,$a0,0x0000ffff#sub测试程序要实现:

a0寄存器中的值减去立即数0x0000ffff后存到a1寄存器中

loop2:

sub$a2,$v1,$v0#sub测试程序要实现:

v1寄存器中的值减去v0中的值后存到a2寄存器中

add$a1,$a2,$a1#add测试程序要实现:

a2寄存器中的值加上a1后存到a1寄存器中beq$a1,$v1,loop2#beq测试程序要实现:

判断a1的值和v1的值是否相等,相等转loop2

机器码:

3c0800043c090008340b2000ad680004014950208d6c00043c0d000401cd7822010d402001c870201109fff9010d40203c0200013c03000200431020004318203444ffff3c0100003421ffff008128220062302200c5282010a3fffd

MARS:

六、运行结果

GPR

DM

七、问答

1.请充分利用Figure3中的X可以将控制信号化简为最简单的表达式。

RegDst=add+sub

ALUSrc=ori+lw+sw

MemtoReg=lw

RegWrite=add+sub+ori+lw

MemWrite=sw

Npc_sel=beq

Extop=lw+sw

ALUctr[0]=~(subu+beq)

ALUctr[1]=~ori+lui

ALUctr[2]=0

2.对于Figure5、Figure6中的与或阵列来说,1个3输入与门最终转化为2个2输入与门,1个4输入与门最终转化为3个2输入与门,依次类推。

或阵列也类似计算。

那么

a)请给出采用Figure5、Figure6中的方法设计的每个控制信号所对应的2输入与门、2输入或门、非门的数量。

2输入与门

2输入或门

非门

RegDst

17

1

10

RegWrite

32

4

10

ALUsrc

20

3

5

PCsrc

5

0

5

Memwrite

5

0

2

MemRead

5

0

3

MentoReg

5

0

3

Extop

15

2

4

ALUctr[1]

10

1

3

ALUctr[2]

21

2

9

b)请与第17项对比,你更喜欢哪种设计方法。

为什么

第一种的每个控制信号都需要对其分配单独的与门、或门,因为它是直接对op、func的12位或6位信号的逻辑表达式,所以没有针对性并且浪费元件。

而第二种是先把op、func变成相应的指令信号,再由指令信号生成控制信号。

当一种指令对应多种控制信号为1时,不必再对每个信号再单独为这个指令分配与门,而可以共用这个指令的信号,再添加或门就可以了。

八、收获体会

第一次课设主要重新熟悉了Logisim软件,并且使用较为简单的方式做出了较为基础的几个指令。

通过本次课设我更好的理解了每条指令的用途,调用指令完成一些存储功能。

在连线中我遇到最大的困难是IFU的设计,其中指令的跳转对于我比较难编写,在逻辑上出现一些问题导致存储器的数据存储的不太对。

经过修改后我更加理解了每个模块的运行过程,为下次课设打好基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2