⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory_unit.vhd

📁 CPU代码-VHDL语言
💻 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 + -