体系结构实验手册体系结构实验手册.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
体系结构实验手册体系结构实验手册

实验2 简单CPU设计 一.实验目的 设计实现简单CPU,熟悉并掌握指令结构,利用verilog编写各个子模块。 二.实验原理 1.CPU设计 CPU概念设计如图1所示: 图1 2.指令集 (1)本实验设计一个可以运行4条指令的简单CPU (2)指令格式:opcode(2 bit)+ addr(6 bit) (3)具体4条指令如表1: 表1 指令结构 Inst Op Addr Operation ADD 00 XXXXXX 加 法: AC-AC+M[Addr] AND 01 XXXXXX 逻辑与: AC-AC^M[Addr] INC 10 XXXXXX 加 1: AC-AC+1 JMP 11 XXXXXX 跳 转: PC-Addr 3.寄存器组织 (1)累加器(AC) a.提供ADD,AND操作的一个操作数 b.存放ADD,AND操作的结果 (2)用户不可见寄存器 a.地址寄存器(AR):6bit,提供访问存储器单元地址 b.程序计数器(PC):6bit,存放下一条指令在存储器单元中的地址 c.数据寄存器(DR):8bit,存放从访问存储器单元的内容 d.指令寄存器(IR):2bit,存放当前取出的指令的操作码部分 4.指令的执行 指令的执行过程如图2: 图2 (1)取指 FETCH1: AR- PC FETCH2: DR- M,PC- PC+1 FECTH3: IR- DR[7..6],AR- DR[5..0] (2)执行 ADD1: DR- M ADD2: AC- AC + DR AND1: DR- M AND2: AC- AC ^ DR INC1: AC- AC + 1 JMP1: PC- DR[5..0] (3)寄存器操作 AR: AR-PC; AR-DR[5..0] PC: PC-PC+1; PC-DR[5..0] DR: DR-M IR: IR-DR [7..6] AC: AC-AC+DR; AC-AC^ DR; AC -AC+1 5.CPU数据通路 CPU数据通路设计如图3所示: 图3 图3是已经过简化的数据通路,它反映了CPU内部各单元的功能特点: (1)AR只向存储器提供数据 (2)IR不向其他单元提供数据 (3)AC不向其他单元提供数据 (4)AC需保存ALU运算结果 (5)8bit BUS 6.控制器 (1)控制器功能 控制器是负责产生CPU内的各种信号,控制程序的执行: 1、取指令(fetch) 2、分析指令(decode) 3、执行指令(Execute) 4、其他功能:控制程序数据的输入输出、异常处理、中断等 (2)控制信号 控制器中有9条信号线,分别是: PCLOAD :允许PC置值 PCINC :允许PC自加1 DRLOAD :允许DR置值 ACLOAD :允许AC置值 ACINC :允许AC自加1 IRLOAD :允许IR置值 MEMBUS :控制存储器是否输出 PCBUS :控制PC是否输出 READ :读存储器 (3)信号生成逻辑 1.控制信号的线性表达: PCLOAD = JMP1 PCINC = FETCH2 DRLOAD = FETCH1 v ADD1 v AND1 ACLOAD = ADD2 v AND2 ACINC = INC1 IRLOAD = FETCH3 MEMBUS = FETCH2 v ADD1 v AND1 PCBUS = FETCH1 READ = FETCH2 v ADD1 v AND1 2.控制信号的生成逻辑,如图4: 图4 三.实验环境 软件:QuartusII 6,ModelSim 硬件平台:GW48-SOPC/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):(ab); 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) begin if(load) dout = din; end endmodule (3)DR模块 module dr(clk,load,din,dout); input clk,load; input [7:0] din; output [7:0] dout;

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档