哈工大计算机组成大作业完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈工大计算机组成大作业
哈工大计算机组成原理自主实验
计算机组成原理自主实验报告
第四章‐实验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;