计算机设计与实践MIPS基本指令.docx

上传人:b****7 文档编号:16758421 上传时间:2023-07-17 格式:DOCX 页数:10 大小:151.23KB
下载 相关 举报
计算机设计与实践MIPS基本指令.docx_第1页
第1页 / 共10页
计算机设计与实践MIPS基本指令.docx_第2页
第2页 / 共10页
计算机设计与实践MIPS基本指令.docx_第3页
第3页 / 共10页
计算机设计与实践MIPS基本指令.docx_第4页
第4页 / 共10页
计算机设计与实践MIPS基本指令.docx_第5页
第5页 / 共10页
计算机设计与实践MIPS基本指令.docx_第6页
第6页 / 共10页
计算机设计与实践MIPS基本指令.docx_第7页
第7页 / 共10页
计算机设计与实践MIPS基本指令.docx_第8页
第8页 / 共10页
计算机设计与实践MIPS基本指令.docx_第9页
第9页 / 共10页
计算机设计与实践MIPS基本指令.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机设计与实践MIPS基本指令.docx

《计算机设计与实践MIPS基本指令.docx》由会员分享,可在线阅读,更多相关《计算机设计与实践MIPS基本指令.docx(10页珍藏版)》请在冰点文库上搜索。

计算机设计与实践MIPS基本指令.docx

计算机设计与实践MIPS基本指令

MIPS基本指令和寻址方式:

MIPS是典型的RISC处理器,采用32位定长指令字,操作码字段也是固定长度,没有专门的寻址方式字段,由指令格式确定各操作数的寻址方式。

MIPS指令格式一般有三种格式:

R-型指令格式

I-型指令格式

J-型指令格式

 

OP:

操作码

rs:

第一个源操作数寄存器

rt:

第二个源操作数寄存器(单目原数据)

rd:

结果寄存器

shamt:

移位指令的位移量

func:

指令的具体操作类型

特点:

R-型指令是RR型指令,其操作码OP字段是特定的“000000”,具体操作类型由func字段给定。

例如:

func=“100000”时,表示“加法”运算。

R[rd]←R[rs]+R[rt]

 

特点:

I-型指令是立即数型指令

双目运算:

R[rt]R[rs](OP)SignExt(imm16)

Load指令:

Addr←R[rs]+SignExt(imm16)计算数据地址(立即数要进行符号扩展)

R[rt]←M[Addr]从存储器中取出数据,装入到寄存器中

Store指令:

Addr←R[rs]+SignExt(imm16)

M[Addr]←R[rt]

 

特点:

J-型指令主要是无条件跳转指令,将当前PC的高4位拼上26位立即数,后补两个“0”,作为跳转目标地址。

 

R型指令:

定点运算:

add/addu,sub/subu,sra,mult/multu,div/divu

逻辑运算:

and/or/nor,sll/srl

比较分支:

beq/bne/slt/sltu

跳转指令:

jr

I型指令:

定点运算:

addi/addiu

逻辑运算:

andi/ori

比较分支:

slti/sltiu

数据传送:

lw/sw/lhu/sh/lbu/sb/lui

J型指令:

j/jal

 

设计模块划分,教学安排

1、MIPS格式指令系统设计

2、指令存储器设计

3、寄存器堆设计

4、ALU设计——基本算术、逻辑单元的设计

32位超前进位加法器的设计

32位桶式移位寄存器的设计

5、取指令部件的设计

6、立即数处理单元设计

7、单周期处理器设计——R型指令的数据通路设计

I型指令的数据通路设计

Load/Store指令的数据通路设计

分支指令/转移指令的数据通路设计

综合12条指令的完整数据通路设计

8、ALU控制单元设计

9、主控制单元的设计

10、单周期处理器总体验证

11、异常和中断处理及其电路实现

12、带有异常和中断处理功能的处理器的设计

设计示例1:

指令存储器设计

1、指令存储器模块定义:

指令存储器用于存放CPU运算的程序指令和数据等,采用单端口存储器设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。

下图为指令存储器的模块框图。

图1模块框图

表1:

存储器接口信号说明表

序号

接口信号名称

方向(I/O)

说明

备注

1

ExtMem_CLK

I

存储器工作时钟,频率为50Mhz

2

ExtMem_CSn

I

存储器片选信号,低有效

3

ExtMem_Adr[5:

0]

I

存储器地址线

最大64个单元

4

ExtMem_WRn

I

存储器写信号,低有效

5

ExtMem_RDn

I

存储器读信号,低有效

6

ExtMem_Din[31:

0]

I

存储器输入数据线

7

ExtMem_Dout[31:

0]

O

存储器输出数据线

8

Vcc

电源

9

Gnd

地线

图2存储器接口读时序框图

图3存储器接口写时序框图

图4存储器接口读写时序框图

2、设计电路源代码

ModuleExtMem(inputExtMem_CLK,

inputExtMem_CS,

input[5:

0]ExtMem_Adr,

inputExtMem_WR,

inputExtMem_RD,

input[31:

0]ExtMem_Din,

output[31:

0]ExtMem_Dout);

reg[31:

0]Memory[0:

63];

//---存储器写操作

always@(posedgeExtMem)

begin

if(~ExtMem_CS&~ExtMem_WR)Memory[ExtMem_Adr]<=ExtMem_Din;

end

//---存储器读操作方式1

always@(posedgeExtMem)

begin

if(~ExtMem_CS&~ExtMem_RD)ExtMem_Dout<=Memory[ExtMem_Adr];

end

//---存储器读操作方式2

always@(*)

begin

if(~ExtMem_CS&~ExtMem_RD)ExtMem_Dout<=Memory[ExtMem_Adr];

end

endmodule

 

问题讨论:

//------方式1与方式2的区别?

//------altera公司的FPGA芯片,使用其内部存储器IP必须采用方式1设计

//------xilinx公司的FPGA芯片,使用其内部存储器IP可以采用方式1或方式2设计

 

3、指令存储器初始化值设计

在仿真环境下,在设计电路中添加如下初始化存储器值电路:

initial

begin

#0Memory[6'h0]<=32'h10;Memory[1]=32'h11;Memory[2]=32'h12;

Memory[63]=32'h63;

end

问题讨论:

在硬件设计实现方式下,如何给存储器付初值?

4、设计电路仿真

所设计的指令存储器模块电路,采用Active-HDL8.1ver仿真器工具进行了设计仿真验证,验证结果表明存储器功能以及接口时序完全正确,如下是仿真验证的波形图。

附件1是仿真激励源代码。

图5存储器电路读写仿真波形图

5、存在问题及解决方式方法,设计讨论等

XXXXXXXXX

YYYY

ZZZZZZZZZZZ

 

附件1:

//----------------------------------------------------------//

//Desc:

//----------------------------------------------------------//

//

`timescale10ps/10ps

moduleExtMem_testbench();

//---测试信号定义

regfpga_clk,mem_cs,mem_wr,men_rd;

reg[5:

0]mem_addr;

reg[31:

0]mem_din;

wire[31:

0]mem_dout;

//---存储器模块实例化调用

ExtMemmem_inst(.ExtMem_CLK(fpga_clk),

.ExtMem_CS(mem_cs),

.ExtMem_Adr(mem_addr),

.ExtMem_WR(mem_wr),

.ExtMem_RD(men_rd),

.ExtMem_Din(mem_din),

.ExtMem_Dout(mem_dout));

//-------------------------------

always#50fpga_clk<=~fpga_clk;

initial

begin

#0fpga_clk=1'h0;mem_cs=1'h1;mem_wr=1'h1;men_rd=1'h1;

mem_addr=6'h00;mem_din=32'h00;

end

initial

begin

#510mem_cs=1'h0;mem_wr=1'h0;mem_addr=6'h01;mem_din=32'h01;

#100mem_addr=6'h02;mem_din=32'h02;

#100mem_cs=1'h1;mem_wr=1'h1;

#100mem_addr=6'h03;mem_din=32'h03;

#100mem_cs=1'h0;mem_wr=1'h0;

#100mem_cs=1'h1;mem_wr=1'h1;mem_addr=6'h04;mem_din=32'h04;

#200mem_cs=1'h0;men_rd=1'h0;mem_addr=6'h02;mem_din=32'hzz;

#100mem_addr=6'h03;

#100mem_cs=1'h1;men_rd=1'h1;

#200mem_cs=1'h0;men_rd=1'h0;mem_addr=6'h01;

#200mem_cs=1'h1;men_rd=1'h1;

#100mem_addr=6'hzz;

end

//----------------------------------------------------//

endmodule

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

当前位置:首页 > 人文社科 > 法律资料

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

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