华信学院组成原理课设16位模型机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
memtoreg<=’0’; regdst<=’0’; regwr<=’1’
8.调试仿真 1.寄存器组
图1 通用寄存器组的元件图符
代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
0000H。
T2时刻,clk下降沿,WriteEnable不为1,不执行写操
作,ReadOne读出的是RegOne 指定的0编号寄存器中的
内容2300H,ReadTwo读出的是 RegTwo指定的3编号寄
存器中的内容2303H。
2.运算器
图1 运算器的元件图符 代码:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_signed.all; use ieee.std_logic_unsigned.all; ENTITY alu_16 IS
clk : IN STD_LOGIC;
ReadOne, ReadTwo : OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END ENTITY regFile;
ARCHITECTURE behav OF regFile IS
BEGIN
reg : PROCESS (clk,regOne,regTwo) IS
end mux2; architecture archmux of mux2 is begin
process (a,b,s) begin
if s = '0' then x <= a;
else x <= b;
end if; end process ; end archmux;
仿真结果:
4.ram
图4 初始化数据窗口
TYPE regArray IS ARRAY (INTEGER RANGE 0 TO 7) OF
STD_LOGIC_VECTOR(15 downto 0);
VARIABLE register_file : regArray;
BEGIN
IF(clk'event and clk='0') THEN
IF (WriteEnable = '1') THEN
T1时刻,clk下降沿,WriteEnable为1,执行写操作,将
WriteData上的信息2300H写入由WriteReg指定的0编号
的寄存器中。
(2)时间段内,读口为组合逻辑口,ReadOne读出的
是RegOne
指定的0编号寄存器中的内容2300H,
ReadTwo读出的是 RegTwo指定的3编号寄存器中的内容
存放在ROM中的汇编指令,完成M[2]←M[0] and M[1] or immd LW R1,0(R0);R1 ←M[R[0]+0],由于R(0)内容为0,即R1 ←M[0] LW R2,1(R0);R1 ←M[R[0]+1],由于R(0)内容为0,即R1 ←M[1] AND R3,R1,R2 ; R3 ←R1 and R2 orimmd R4,imm(R3); R4 ←R3 orimmd immd SW R4,3(R0) ; M[R[0]+3] ←R4
2.开发工具选择 (1) 硬件描述语言 CPU的设计采用了功能强大的VHDL语言,它具有很
强的行为能力描述,设计方法灵活,可以支持库和模块 设计方法。
(2) QuartusII软件开发工具 本设计采用的软件开发工具是美国的Altera公司的
QuartusII,它支持多种设计输入方法,包括原理图输 入、文本输入。
5:memfetch 3:rrfinish
pcwr<-=’1’; irwr<=’1’; A<-R[rs] B<-R[rs]
IR? aluselb<=’0’;
alufunc<= aluwr<=’1’; memtoreg<=’0’; regdst<=’1’; regwr<=’1’;
0:ifetch 1:idecode 2:rrexect 4:memaddr 8:orimmd 9:ifinish 7:swfinish 6:lwfinish
END ARCHITECTURE alu_behav;
仿真结果:
3.二选一选择器
图3 mux2的元件图符 代码:
library ieee; use ieee.std_logic_1164.all; entity mux2 is
port( a, b: in std_logic_vector(15 downto 0); s: in std_logic; x: out std_logic_vector(15 downto 0));
0
LW
0001 000 001 000000
R1,0(R0)
1
LW
0001 000 010 000001
R2,1(R0)
2
AND R3,R1,R2 0000 001 010 011 011
3
orimmd
0100 011 100 001000
R4,imm(R3)
4
SW R4,3(R0) 0010 000 100 000011
ENTITY regFile IS
port(RegOne, RegTwo,WriteReg : IN STD_LOGIC_VECTOR(2
DOWNTO 0);
WriteData : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
WriteEnable : IN STD_LOGIC;
PROCESS(a, b, func) IS BEGIN CASE func IS WHEN "0000" => c <= a and b; --AND_WORD WHEN "0001" => c <= a or b; --OR WHEN "0010" => c <= a xor b; --XOR WHEN "0011" => c <= not a; --NOT
register_file(CONV_INTEGER(UNSIGNED(WriteReg)))
:=
WriteData;
END IF;
END IF; ReadOne <= register_file(CONV_INTEGER(UNSIGNED(RegOne))); ReadTwo <=
register_file(CONV_INTEGER(UNSIGNED(RegTwo)));
RR LW/SW
R[rt]ALUO
IRMIP[PC] NPCPC+1
IR? AR[rs] BR[rs] ALUOALUFUNC ALUOR[rd]or immd
] ALUOA+符号拓展
R[rd]ALUO
LW? SW?
M[ALUO]B LWDM[ALUO]
O] RtLMD PCNPC LW SW
7.状态转换图设计
SW OR
操作码OP
所属的指 令格式
Fun
备注
0000
R
001
R[rd]← R[rs]+R[rt] 无符号加法
0001
I
R[rt] ←M[R[rs]+Imm] 主存中内容写入寄存

0010
I
M[R[rs]+Imm] ←R[rt]
寄存器中内容回写到 主存
0010
I
R[rt]← R[rs]or[Imm] 与立即数相或
代码:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ram is port(clock:in std_logic;
wren:in std_logic; address:in std_logic_vector(5 downto 0); data:in std_logic_vector(15 downto 0); q:out std_logic_vector(15 downto 0)); end ram; architecture a of ram is type datamem is array(63 downto 0)of std_logic_vector(15 downto 0); signal ram1:datamem; attribute ram_init_file:string; attribute ram_init_file of ram1: signal is "../ram1.mif";
(3) EDA实验开发系统 本设计采用的EDA实验开发系统,主要用于提供可编程 逻辑器件的下载电路及EDA实验开发的外围资源,供硬件验证 用。
3.模型机的功能 内存单元addr1、 addr2、result
完成以下操作:[result]←[addr1]and [addr2]or immd
4.指令系统设计 RAM 中存放程序中的数据; ROM中存放程序中的指令,依据指令的格式将相应的指令 写成二进制的机器指令存储在ROM中。实验中,指令的格 式如下所示。
WHEN "0100" => c <= a + b;--ADD WHEN "0101" => c <= a - b; --SUB WHEN "0110" => if unsigned(a)<unsigned(b)Then
c <= x"0001"; else
c <= x"0000"; end if;
WHEN others => c <= a; END CASE; END PROCESS ;
石家庄经济学院 华信学院
计算机组成原理课程设计报告
题 目 16位模型计算机的设计 姓名 学号 班号 指导老师 成绩
2015年1月


1. 课程设计目的 2 2. 开发工具选择 3 3. 模型机的功能 3 4.指令系统设计 3 5. 数据通路设计 5 6. 指令流程图设计 6 7. 状态转换图设计 7 8. 调试仿真 8 9. 课程设计回顾总结 15 参 考 文 献 15
Segnext<=’1’; aluselb<=’1’; alufunc<=”0100”; aluoutregwr<=’1’;
LW? SW? lmdwr<=’1’; memwr<=’0’; memtoreg<=’0’; regdst<=’1’; regwr<=’1’;
memwr<=’1’; Segnext<=’0’; aluselb<=’1’; alufunc<=”0001”; aluoutregwr<=’1’;
5.数据通路设计
rs 寄存器组
mux rt
数据存储器
ALU output
扩展 A B
Mu x
PC
J加1
Leabharlann Baidurd ALU
指令寄存器
NPC IR
LMD MUX
6.指令流程图设计
7:SWfinish 9:finish 8:immddr 4:memaddr 5:memfetch 6:LWfinish 2:rexed 3:rfinish 0:ifeteh 1:idecode
1.课程设计目的
(1)融会贯通计算机组成原理课程各章教学内容,通过知识 综合运用,加深对CPU各模块工作原理及相互联系的认识。 (2)掌握组合逻辑控制器、微程序控制器的设计。 (3)理解计算机如何取出指令、如何执行指令、如何在一条 指令执行结束后自动取出下一条指令并执行,牢固建立计算机 整机概念。
END PROCESS reg; END ARCHITECTURE behav;
仿真结果:
说明:
(1)写操作中,依次将编号为0――7寄存器中写入
2300H――2307H.
时间段内,读口为组合逻辑口,ReadOne读出的是
RegOne 指定的0编号寄存器中的内容0000H,ReadTwo
读出的是 RegTwo指定的3编号寄存器中的内容0000H。
PORT(a, b : IN STD_LOGIC_VECTOR(15 DOWNTO 0); func : IN STD_LOGIC_VECTOR(3 DOWNTO 0); c : OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END ENTITY alu_16; ARCHITECTURE alu_behav OF alu_16 IS BEGIN
注:操作码4位,寄存器字段rs,rt,rd各三位,Fun功能字段3 位,Imm立即值字段6位;一共8个寄存器,R0只读不可写,恒 为0。
实验中所用指令的种类:
R类型的指令 ADD Rd,Rs,Rt I类型的指令 LW Rt, Rs,immd
SW Rt, Rs,immd OR RS,RT,immd
指令 ADD LW
相关文档
最新文档