哈工大计算机组成大作业
哈工大计算机组成原理自主实验
计算机组成原理自主实验报告
第四章‐实验1
一个2114 存储芯片的实现
要求:外特性与2114 芯片一致(P77,图4.12),可以设计成为64*64 个存储单元的堆。
A0-A9:地址线
I/O:数据输入输出线
CS:片选信号
R/W:读写信号
VHDL代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity shiyan41 is
PORT(clk, we, cs,reset: in STD_LOGIC;
data: inout STD_LOGIC_VECTOR(3 downto 0);
adr: in STD_LOGIC_VECTOR(9 downto 0));
end shiyan41;
architecture Behavioral of shiyan41 is
typemem is array (63 downto 0) of STD_LOGIC_VECTOR(63 downto 0); signal data_in: STD_LOGIC_VECTOR(3 downto 0);
signaldata_out: STD_LOGIC_VECTOR(3 downto 0);
signalsram : mem;
signalcs_s : std_logic;
signalwe_s : std_logic;
signaladdr_in_row: std_logic_vector(5 downto 0);
signaladdr_in_col: std_logic_vector(3 downto 0);
begin
cs_s
we_s
addr_in_row
addr_in_col
process(clk)
begin
ifclk'event and clk='1' then
if(cs_s='0' and we_s='0') then
sram(conv_integer(addr_in_row))(conv_integer(addr_in_col)) sram(conv_integer(addr_in_row))(conv_integer(addr_in_col) 16) end if;
end process;
process(clk,reset)
begin
if reset = '1' then
data_out '0');
elsifclk'event and clk='1' then
ifcs='0' and we='1' then
data_out
sram(conv_integer(addr_in_row))(conv_integer(addr_in_col) 48) &sram(conv_integer(addr_in_row))(conv_integer(addr_in_col) 32) &sram(conv_integer(addr_in_row))(conv_integer(addr_in_col) 16) &sram(conv_integer(addr_in_row))(conv_integer(addr_in_col)); end if;
end if;
end process;
data_in
data 'Z');
end Behavioral;
仿真结果:
写操作:
读操作:
仿真分析:
在进行写操作时,片选信号低电平有效,we为0,在地址000001000存入0001;在进行读操作时,片选信号低电平有效,we为1,读出地址000001000中存入的数0001.
实际框图:
第五章‐实验(5%)
简单程序中断方式接口电路的实现
要求:按照P198,图5.41 实现一个简单的程序中断方式接口电路。
VHDL代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity shiyan5 is
Port ( start : in STD_LOGIC;
stop : in STD_LOGIC;
mask : in STD_LOGIC_VECTOR (3 downto 0);
B :inout STD_LOGIC;
D :inout STD_LOGIC;
address : out STD_LOGIC_VECTOR (3 downto 0); INTA : in STD_LOGIC;
INTR :inout STD_LOGIC_VECTOR (3 downto 0); INTP :inout STD_LOGIC_VECTOR (3 downto 0)); end shiyan5;
architecture Behavioral of shiyan5 is
begin
process(start,stop,mask)
begin
if(start='1') then
B
D
end if;
if(start='0' and stop='1') then B
D
end if;
if(D='1') then
if(mask(3)='0') then
INTR(3)
else
INTR(3)
end if;
if(mask(2)='0') then
INTR(2)
else
INTR(2)
end if;
if(mask(1)='0') then INTR(1)
else
INTR(1)
end if;
if(mask(0)='0') then INTR(0)
else
INTR(0)
end if;
end if;
if(start='1') then B
D
INTR
end if;
end process;
process(INTR,INTA) begin
if(INTR(3)='1') then INTP(3)
else
INTP(3)
if(INTR(2)='1') then INTP(2)
else
INTP(2)
if(INTR(1)='1') then INTP(1)
else
INTP(1)
if(INTR(0)='1') then INTP(0)
else
INTP(0)
end if;
end if;
end if;
end if;
if(INTA='1') then address
else
address
end if;
end process;
end Behavioral;
仿真结果:
实验5分析:
分为两个部分,第一部分实现的是当CPU发出start命令时,b置为0,d置为1,在start为1时,表示未启动,b为1,d为0。
中断源的中断请求INTR根据mask 改变(mask为1表示屏蔽,屏蔽intr则为0);第二部分实现的是在第一部分的d为1时实现的链式排队器,优先选择优先级高的中断源INTR,得出排队器输出INTP,当cpu发出中断响应INTA后,由设备编码器,可得出向量地址address 的值。
文档下载网是专业的免费文档搜索与下载网站,提供行业资料,考试资料,教学课件,学术论文,技术资料,研究报告,工作范文,资格
考试,word文档,专业文献,应用文书,行业论文等文档搜索与文档下载,是您文档写作和查找参考资料的必备网站。