计算机组成原理第三次实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入的数据,三态,上一次计数时的输出数据。 8位数据寄存器仿真设计:
数据寄存器的仿真设计的要点在于验证: 1、 能否从q、d端口分别读入数据,能否在三态门打开时正确输出寄 存器中的数据。 2、 三态门是否有效。
仿真数据: 1、 在clk上升是从d端口置入数据11111111,同时l同步置数端loadd 打开,loadq=0,zd=0,zq=0. 2、 下一个时钟上升沿:loadq=0,loadd=0,zd=0,zq=1. 3、 下一个时钟上升沿:loadq=0,loadd=0,zd=1,zq=0 4、 下一个时钟上升沿,从q端口置入数据11110000,通知同步置数端 loadq打开,loadd=0,zd=0,zq=0 5、 下一个时钟上升沿:loadd=0,loadq=0,zd=1,zq=1. 6、 下一个时钟上升沿:loadq=1,loadd=0,zd=1,z1=0(用于验证一端 输入一端输出发生的情况) 7、 下一个时钟上升沿:zd=1,z1=1,loadd=0,loadq=0
et,clk,z,ld,r :in std_logic; c : out std_logic; d : in unsigned(7 downto 0); q : out unsigned(7 downto 0) ); end eight_count; architecture behave of eight_count is signal iq : unsigned(7 downto 0); begin process (clk,et,z,ld,r) begin
8位指令寄存器: library ieee; use ieee.std_logic_1164.all;
entity instruction_register is port (
clk ,load : in std_logic; d : in std_logic_vector(7 downto 0)来自百度文库 q : out std_logic_vector(7 downto 0) ); end instruction_register;
8位地址寄存器系统框图 Q5 Q3 Q2 Q1
Load
clk clk
D2 D1 D3 D7 D6 D5 D4 D0
端口说明: clk:时钟信号 load:同步置数端口 z:控制三态输出 d:输入端口 q:输入端口
4、指令寄存器的设计: 8位指令寄存器系统框图
Q7 Q6 Q5 Q3 Q4 Q2 Q1 Q0
process(clk,z,load) begin
if rising_edge(clk) and load = '1' then iq<=d;
end if;
if z='1' then q<=(others=>'Z');
else q<=iq;
end if ; end process; end behave;
8位地址寄存器的仿真设计:
地址寄存器的仿真设计要点在于验证: 1、 同步置数功能是否有效 2、 三态输出是否有效。
仿真数据: 1、 时钟上升沿d=11111111,load=1,z=0 2、 下一个时钟上升沿:load=0,d=00000001,z=0 3、 下一个时钟上升沿:load=1,d=00000010,z=0 4、 下一个时钟上升沿:load=1,d=00000011,z=1
D7 D6 D5 D2 D4 D3 D1 D0 Load clk
指令译码器 8位指令寄存器
端口说明: clk:时钟信号 load:同步置数端口 d:输入端口 q:输入端口
5、指令译码器的设计: 指令译码器系统框图
Y0 Y1 Y2 Y4 Y7
Y6 Y5 Y3 A2 A1 A0
端口说明: A:指令码输入端,高电平有效 Y:指令码译码后的输出端。低电平有效。
end if; if loadq = '1' and zq = '0' then
iq<=q; q<=(others=>'Z'); end if; end if; if zd = '0' then --三态门关闭
d<=(others=>'Z'); else d<=iq; end if; if zq = '0' then--三态门关闭
if rising_edge(clk) then if r = '0' then--同步清零 iq<=(others=>'0'); elsif ld = '0' then iq<=d;--预制数 elsif et = '1' then iq<=iq+1;--计数 end if;
end if; if iq = 255 then c <='1';--计数到255,产生进位 else c<='0'; end if; q<=iq; if z = '1' then --三态们关闭
四、仿真设计:
8位程序计数器仿真设计: 程序计数器的仿真设计的要点在于验证:
1、 程序在加1控制端有效的时候是否具有自动加1的功能。 2、 r同步置数端口的有效性。 3、 ld预置数端口的有效性。 4、 z三态端口的有效性。 5、 控制加1端口et的有效性。
令数据从00000000开始计数,观察数据是否是相邻数据相差1位,同时 在加1的过程中间插入r=0,ld=0,z=1,et=0信号,已验证其功能是否实 现,如果这些功能实现了,则相应的输出端,分别会显示出0000000,置
c<='Z'; q<=(others=>'Z'); end if; end process; end behave;
8位数据寄存器: --data register
library ieee; use ieee.std_logic_1164.all;
entity data_register is port ( --clk时钟信号 --zq控制q端口的三态 --zd控制d端口的三态 --load1,load2同步并行置数.loadd控制d,loadq控制q --d输入输出双向端口 --q输入输出端口
process(clk,zd,zq,loadd,loadq) begin
if rising_edge(clk) then if loadd = '1' and zd = '0' then--因为d是双向端口,当d作为输入端
口时, --d作为输出端口时应该是高阻态,否则会产生
线与 iq <=d; d<=(others=>'Z');
architecture behave of instruction_register is signal save : std_logic_vector(7 downto 0); begin
process(clk , load) begin if rising_edge(clk) and load='1' then
clk,zd,zq,loadd,loadq : in std_logic; d : inout std_logic_vector(7 downto 0); q : inout std_logic_vector(7 downto 0) ); end data_register;
architecture behave of data_register is signal iq : std_logic_vector(7 downto 0); begin
青岛理工大学
实验报告
实验课程: 计算机组成原理I
实验日期: 2013 年 11月3日, 交报告日期:2013 年11月22 日,成绩: 实验地点:现代教育技术中心101(计算机实验室) 计算机工程 学院,计算机科学与技术 专业, 班级:计算112
实验指导教师: 刘淑霞
批阅教师:
同组 姓 学生 名
学 号
load ,z ,clk : in std_logic; d : in std_logic_vector(7 downto 0); q : out std_logic_vector(7 downto 0) ); end address_register;
architecture behave of address_register is signal iq : std_logic_vector(7 downto 0); begin
architecture de_behave of decode is signal s: std_logic; begin
process(A) begin
case A is when "000"=> Y<="11111110"; when "001"=> Y<="11111101"; when "010"=> Y<="11111011"; when "011"=> Y<="11110111"; when "100"=> Y<="11101111"; when "101"=> Y<="11011111"; when "110"=> Y<="10111111"; when "111"=> Y<="01111111"; end case; end process; end de_behave;
周伟鑫 201107071
张华建 201107070
一、实验课题:
(1)主要元件设计 1.程序计数器
功能要求:8位二进制计数器,同步并行置数,同步复位(清零), 三态输出。
提示:注意程序计数器的“自动加一”功能。 2.数据寄存器 功能要求:8位,同步并行置数,双向三态输出。 3.地址寄存器 功能要求:8位,同步并行置数,三态输出。 4.指令寄存器 功能要求:8位,同步并行置数。 5.指令译码器 功能要求:3-8译码器。 (2)仿真 设计仿真波形数据,要考虑到所有可能的情况。在实验报告中必须清 楚说明仿真波形数据是怎样设计的。
三、VHDL程序 8位程序计数器:
--eight_count library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity eight_count is port ( --et控制自动加1的端口
--clk时钟信号 --c进位输出 --z三态们 z=1 --ld预制数控制端 ld=0 --r同步清零端 r=0有效
二、逻辑设计:
1、程序计数器的设计 8位程序计数器系统框图
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 c
Z
r ld et clk D7 D6 D5 D3 D2 D1 D4 D0
8位程序计数器
端口说明: et:控制程序计数器自动加一的控制端 ld:预置数控制端 r:同步清零端 clk:时钟信号 z:三态控制端口 c:进位输出端口 q:输出端口 d:预置数端口。
2、数据寄存器的设计: 8位数据寄存器系统框图
z Q7 Q6 Q4 Q0
loadd loadq zq zd Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 D1
8位地址寄存器
D7 D6 D5 D4 D3 D2 D0
8位数据寄存器
端口说明: clk:时钟信号 zd,zq:三态控制端口,其中zd控制d端的三态输出,zq控制q端的三态输 出 loadd,loadq:同步置数端口,loadd控制d端的同步输入,loadq控制q端 的同步输入 d,q:双向三态输入输出 3、地址寄存器设计:
save<=d; end if; q<=save; end process; end behave; 指令译码器(3-8译码器): --Decode library ieee; use ieee.std_logic_1164.all; entity decode is
port (
A : in std_logic_vector(2 downto 0);--输入 Y : out std_logic_vector(7 downto 0)--输出 ); end decode;
q<=(others=>'Z'); else q<=iq; end if; end process; end behave ;
8位地址寄存器 --address_register
library ieee; use ieee.std_logic_1164.all;
entity address_register is port ( --load同步并行置数 --z三态输出 z=1 is valide signal --d输入 --q输出