📄 reg_file.vhd.bak
字号:
---------------------------------------- entity = register file ---- version = 1.0 ---- last update = 20/06/05 ---- author = Jose Nunez ------------------------------------------ register file stores 5 numberslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity register_file isport( clk : in std_logic; data_in : in std_logic_vector(3 downto 0); srd : in std_logic_vector(2 downto 0); enwr : in std_logic; swr : in std_logic_vector(2 downto 0); clear : in std_logic; -- general asyncronous reset reset : in std_logic; --general syncronous reset new_sort : in std_logic; -- start sorting new numbers data_middle : out std_logic_vector(3 downto 0); data_out : out std_logic_vector(3 downto 0));end register_file;architecture struct of register_file is-- one 4-bit registercomponent register4port( clk : in std_logic; data_in : in std_logic_vector(3 downto 0); enwr : in std_logic; reset : in std_logic; new_sort : in std_logic; clear : in std_logic; data_out : out std_logic_vector(3 downto 0));end component;type type_reg_file is array(4 downto 0) of std_logic_vector(3 downto 0);signal data_out_reg : type_reg_file;signal enwr_reg : std_logic_vector(4 downto 0);begindata_middle <= data_out_reg(2); -- middle value-- generate the registersreg_array : for i in 0 to 4 generate regs : register4 port map ( clk => clk, data_in => data_in, enwr => enwr_reg(i), reset => reset, clear => clear, new_sort => new_sort, data_out => data_out_reg(i)); end generate; read_reg : process (srd,data_out_reg) -- read controlbegin case srd is when "000" => data_out <= data_out_reg(0); when "001" => data_out <= data_out_reg(1); when "010" => data_out <= data_out_reg(2); when "011" => data_out <= data_out_reg(3); when "100" => data_out <= data_out_reg(4); when others => null; end case;end process read_reg;write_reg : process (swr,enwr) -- write controlbegin if (enwr = '1') then case swr is when "000" => enwr_reg <= "00001"; when "001" => enwr_reg <= "00010"; when "010" => enwr_reg <= "00100"; when "011" => enwr_reg <= "01000"; when "100" => enwr_reg <= "10000"; when others => null; end case; else enwr_reg <= "00000"; end if; end process write_reg;end struct; -- end of architecture
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -