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

📄 data_fetch.vhd

📁 It is the code for implementing the project titled "The Reconfigurable Instruction Cell Array(IEEE 2
💻 VHD
字号:
LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.numeric_std.ALL;-- use packageUSE work.procmem_definitions.ALL;ENTITY data_fetch ISPORT (-- inputsclk : IN STD_ULOGIC;rst_n : IN STD_ULOGIC;pc_in : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);alu_out : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);mem_data : IN std_ulogic_vector(width-1 DOWNTO 0);-- control signalsPC_en : IN STD_ULOGIC;IorD : IN STD_ULOGIC;IRWrite : IN STD_ULOGIC;-- outputsreg_memdata : OUT STD_ULOGIC_VECTOR(width-1 DOWNTO 0);instr_31_26 : OUT STD_ULOGIC_VECTOR(5 DOWNTO 0);instr_25_21 : OUT STD_ULOGIC_VECTOR(4 DOWNTO 0);instr_20_16 : OUT STD_ULOGIC_VECTOR(4 DOWNTO 0);instr_15_0 : OUT STD_ULOGIC_VECTOR(15 DOWNTO 0);mem_address : OUT std_ulogic_vector(width-1 DOWNTO 0);pc_out : OUT std_ulogic_vector(width-1 DOWNTO 0));END data_fetch;ARCHITECTURE behave OF data_fetch ISCOMPONENT instreg ISPORT (clk : IN STD_ULOGIC;rst_n : IN STD_ULOGIC;memdata : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);IRWrite : IN STD_ULOGIC;instr_31_26 : OUT STD_ULOGIC_VECTOR(5 DOWNTO 0);instr_25_21 : OUT STD_ULOGIC_VECTOR(4 DOWNTO 0);instr_20_16 : OUT STD_ULOGIC_VECTOR(4 DOWNTO 0);instr_15_0 : OUT STD_ULOGIC_VECTOR(15 DOWNTO 0) );END COMPONENT;COMPONENT tempreg ISPORT (clk : IN STD_ULOGIC;rst_n : IN STD_ULOGIC;reg_in : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);reg_out : OUT STD_ULOGIC_VECTOR(width-1 DOWNTO 0) );END COMPONENT;COMPONENT pc ISPORT (clk : IN STD_ULOGIC;rst_n : IN STD_ULOGIC;pc_in : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);PC_en : IN STD_ULOGIC;pc_out : OUT STD_ULOGIC_VECTOR(width-1 DOWNTO 0) );END COMPONENT;-- signals for componentsSIGNAL pc_out_intern : STD_ULOGIC_VECTOR(width-1 DOWNTO 0);BEGIN-- instances of componentsproc_cnt: pcPORT MAP (clk => clk,rst_n => rst_n,pc_in => pc_in,PC_en => PC_en,pc_out => pc_out_intern);instr_reg : instregPORT MAP (clk => clk,rst_n => rst_n,memdata => mem_data,IRWrite => IRWrite,instr_31_26 => instr_31_26,instr_25_21 => instr_25_21,instr_20_16 => instr_20_16,instr_15_0 => instr_15_0 );mem_data_reg : tempregPORT MAP (clk => clk,rst_n => rst_n,reg_in => mem_data,reg_out => reg_memdata );-- multiplexeraddr_mux : PROCESS(IorD, pc_out_intern, alu_out)VARIABLE mem_address_temp : STD_ULOGIC_VECTOR(width-1 DOWNTO 0);BEGINIF IorD = '0' THENmem_address_temp := pc_out_intern;ELSIF IorD = '1' THENmem_address_temp := alu_out;ELSEmem_address_temp := (OTHERS => 'X');END IF;mem_address <= mem_address_temp;END PROCESS;pc_out <= pc_out_intern;END behave;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -