体系结构实验手册

上传人:re****.1 文档编号:543495982 上传时间:2022-11-03 格式:DOCX 页数:19 大小:229.92KB
返回 下载 相关 举报
体系结构实验手册_第1页
第1页 / 共19页
体系结构实验手册_第2页
第2页 / 共19页
体系结构实验手册_第3页
第3页 / 共19页
体系结构实验手册_第4页
第4页 / 共19页
体系结构实验手册_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《体系结构实验手册》由会员分享,可在线阅读,更多相关《体系结构实验手册(19页珍藏版)》请在金锄头文库上搜索。

1、实验1简单CPU设计一实验目的设计实现简单CPU,熟悉并掌握指令结构,利用verilog编写各个子模块。 二实验原理1 .CPU设计CPU 概念设计如图1 所示:2.指令集(1)本实验设计一个可以运行4条指令的简单CPU(2)指令格式:opcode(2 bit) + addr (6 bit)(3)具体 4 条指令如表 1:表 1 指令结构In stOpAddrOperatio nADD00XXXXXX力口 法:ACv-AC+MAddrAND01XXXXXX逻辑与:AC-ACAMAddrINC10XXXXXX力口 1: ACv-AC+1JMP11XXXXXX跳转:PCv-Addr3.寄存器组织(

2、1)累加器(AC)a. 提供ADD, AND操作的一个操作数b. 存放ADD, AND操作的结果2)用户不可见寄存器a.地址寄存器(AR): 6bit,提供访问存储器单元地址b. 程序计数器(PC): 6bit,存放下一条指令在存储器单元中的地址c. 数据寄存器(DR): 8bit,存放从访问存储器单元的内容d. 指令寄存器(IR): 2bit,存放当前取出的指令的操作码部分4.指令的执行指令的执行过程如图2:图21)取指FETCH1: AR- PCFETCH2: DR- M, PC- PC1FECTH3: IR- DR7.6, AR- DR5.02)执行ADD1: DR- MADD2: AC

3、- AC DRAND1: DR- MAND2: AC- AC 人 DRINC1: AC- AC + 1JMP1: PC- DR5.03)寄存器操作AR: AR-PC; AR-DR5.0PC: PC-PC+1; PC-DR5.0DR: DR-MIR: IR-DR 7.6AC: ACv-AC+DR; AC-ACA DR; AC v-AC+15.CPU 数据通路CPU 数据通路设计如图 3 所示:IRLOAD 图 3严图3是已经过简化的数据通路,它反映了CPU内部各单元的功8/8ARLDAARLOADPCLDINCaPCLOADPCINCALUACLDINCAACLOAD ACINC能特点:I (1

4、) AR只向存储器提供数据;(2)IR不向其他单元提供数据以I(3) AC不向其他单兀提供数据(4)AC需保存ALU运算结果( 5 ) 8bit BUS6.控制器(1)控制器功能控制器是负责产生CPU内的各种信号,控制程序的执行:1、取指令(fetch)2、分析指令( decode)3、执行指令( Execute)4、其他功能:控制程序数据的输入输出、异常处理、中断等 2)控制信号控制器中有9 条信号线,分别是:PCLOAD:允许 PC 置值PCINC:允许 PC 自加 1DRLOAD:允许 DR 置值ACLOAD:允许 AC 置值ACINC:允许 AC 自加 1IRLOAD:允许 IR 置值

5、MEMBUS:控制存储器是否输出PCBUS:控制 PC 是否输出READ:读存储器3)信号生成逻辑1. 控制信号的线性表达:PCLOAD = JMP1PCINC = FETCH2DRLOAD = FETCH1 v ADD1 v AND1ACLOAD = ADD2 v AND2ACINC = INC1IRLOAD = FETCH3MEMBUS = FETCH2 v ADD1 v AND1PCBUS = FETCH1READ = FETCH2 v ADD1 v AND12. 控制信号的生成逻辑,如图 4:图4 三实验环境软件:QuartusII 6, ModelSim硬件平台: GW48-SOPC

6、/DSP EP1C6Q240 四实验步骤1.各个子模块的 Verilog 实现 (1)ALU 模块module alu(op,a,b,c);input op;input 7:0 a,b;output 7:0 c;assign c = (op=0)?(a+b):(a&b);endmodule(2)IR 模块module ir(clk,load,din,dout); input clk,load;input 1:0 din;output 1:0 dout;reg 1:0 dout;always (posedge clk)beginif(load)dout = din;endendmodule(3)

7、DR 模块module dr(clk,load,din,dout); input clk,load;input 7:0 din;output 7:0 dout;reg 7:0 dout;always (posedge clk)beginif(load)dout = din;end endmodule 4)PC 模块module pc(clk,rst,load,inc,din,dout); input clk,rst,load,inc;input 5:0 din; output 5:0 dout; reg 5:0 dout;always (posedge clk) begin if(rst)do

8、ut = 0; else if(inc) dout = dout + 1;else if(load) dout = din;end endmodule 5)AR 模块module ar(clk,load,din,dout); input clk,load;input 5:0 din; output 5:0 dout; reg 5:0 dout;always (posedge clk) begin if(load) dout = din;end endmodule 6)AC 模块module ac(clk,rst,load,inc,din,dout); input clk,rst,load,in

9、c;input 7:0 din; output 7:0 dout; reg 7:0 dout;always (posedge clk) begin if(rst)dout = 0; else if(inc)dout = dout + 1;else if(load) dout = din;end endmodule 7)Control 模块module control(clk,rst,ir, read,membus, arload, pcload,pcinc,pcbus, drload,drbus, alusel, acload,acinc, irload);parameter FETCH1 =

10、 0; parameter FETCH2 = 1; parameter FETCH3 = 2; parameter ADD1 = 3; parameter ADD2 = 4; parameter AND1 = 5; parameter AND2 = 6; parameter INC1 = 7; parameter JMP1 = 8; input clk,rst;input 1:0 ir;output read,membus, arload, pcload,pcinc,pcbus, drload,drbus, alusel, acload,acinc, irload;reg 3:0 state,

11、nextstate; always (posedge clk) beginif(rst)state = FETCH1; elsestate = nextstate; endalways (state or ir) begincase(state)FETCH1:nextstate = FETCH2;FETCH2:nextstate = FETCH3;FETCH3:beginif(ir=0)nextstate = ADD1;else if(ir = 1)nextstate = AND1;else if(ir = 2)nextstate = INC1;elsenextstate = JMP1;end

12、ADD1:nextstate = ADD2;ADD2:nextstate = FETCH1;AND1:nextstate = AND2;AND2:nextstate = FETCH1;JMP1:nextstate = FETCH1;INC1:nextstate = FETCH1;default:nextstate = FETCH1;endcaseendassign arload = (state = FETCH1 | state= FETCH3)?1:0;assign pcload = (state = JMP1)?1:0;assign pcinc = (state = FETCH2)?1:0

13、;assign drload = (state = FETCH2 | state= ADD1 | state=AND1)?1:0;assign acload = (state = ADD2 | state= AND2)?1:0;assign acinc = (state = INC1 )?1:0;assign irload = (state = FETCH3)?1:0;assign alusel = (state = AND2)?1:0;assign membus = (state = FETCH2 | state= ADD1 | state=AND1)?1:0;assign pcbus =

14、(state = FETCH1)?1:0;assign drbus = (state = FETCH3 | state= ADD2 | state= AND2 | state = JMP1)?1:0;assign read = (state = FETCH2 | state = ADD1 | state =AND1)?1:0;endmodule(8)三态门(6 bit)模块module tri6(en,din,dout);input en;input 5:0 din;output 5:0 dout;assign dout = (en)?din:6bzzz_zzz;endmodule(9)三态门(8 bit)模块module tri8(en,din,dout);input en;input 7:0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号