📄 memory_unit.vhd
字号:
--存储器部分memory_unit
library ieee;
use ieee.std_logic_1164.all;
entity memory_unit is
port(
reset: in std_logic;
clk,t3: in std_logic;
Mem_addr: in std_logic_vector(15 downto 0);
Mem_Write: in std_logic;
sel_memdata:in std_logic; --为1时,存储器的读出数据作为写入DR的数据
SR_data: in std_logic_vector(15 downto 0); --写入存储器的数据
result: in std_logic_vector(15 downto 0); --运算结果
rw: out std_logic; -----读写信号(wr )
ob: inout std_logic_vector(15 downto 0);
ar: out std_logic_vector(15 downto 0);
data_read: buffer std_logic_vector(15 downto 0); --从存储器读出的指令
--或者数据
DR_data_out:out std_logic_vector(15 downto 0) --写入DR的数据
);
end memory_unit;
architecture behav of memory_unit is
begin
ar <= Mem_addr;
R_W_Memory_proc: process(reset,ob,SR_data,clk,t3,Mem_Write) --读写存储器处理
begin
if reset = '0' then
rw <= '1';
ob <= "ZZZZZZZZZZZZZZZZ"; --将存储器数据总线置为高阻,即读存储器。
else
if Mem_Write = '1' and t3 = '1' then
ob <= SR_DATA; --写存储器,来自源R
rw <= clk;
else
ob <= "ZZZZZZZZZZZZZZZZ"; --将存储器数据总线置为高阻,读存储器
rw <= '1';
data_read <= ob; --从存储器读出的指令或者数据由
end if;
end if;
end process;
sele_DR_proc: process(sel_memdata,data_read,result)
begin
if sel_memdata = '1' then
DR_data_out <= data_read; --存储器数据作为写DR的数据
else
DR_data_out <= result; --运算结果作为写DR的数据
end if;
end process;
end behav;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -