register.vhd

来自「thats the CPU source made by JI FENG」· VHDL 代码 · 共 95 行

VHD
95
字号
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_ARITH.all;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY regfile ISPORT(clk: IN std_logic;AA, BA , DA:			IN  std_logic_vector(2 DOWNTO 0); RW				 :   		in  std_logic;                    	--'1' then read.                                        					  	--'0' then write;D				   :      IN  std_logic_vector(15 DOWNTO 0);A, B			 :      OUT std_logic_vector(15 DOWNTO 0)); --RFcoutEND regfile;ARCHITECTURE rtl of regfile ISsignal reg0: std_logic_vector(15 downto 0) :="0000000000001000";signal reg1: std_logic_vector(15 downto 0) :="0000000000000100";signal reg2: std_logic_vector(15 downto 0) :="0000000000000011";signal reg3: std_logic_vector(15 downto 0) :="0000000000000001";signal reg4: std_logic_vector(15 downto 0) :="0000000001000110";signal reg5: std_logic_vector(15 downto 0) :="0000000001010001";signal reg6: std_logic_vector(15 downto 0) :="0000000000000000";signal reg7: std_logic_vector(15 downto 0) :="0000000000000111";BEGINPROCESS (clk,DA,RW)--reg0,reg1, reg2, reg3,reg4, reg5, reg6, reg7) --WRITE PROCESS --wRFBBEGINIF RW='0' or RW='1' then                 ---attentionif clk='1' and clk'event THEN                                      CASE DA ISWHEN "000" => reg0 <= D;WHEN "001" => reg1 <= D;WHEN "010" => reg2 <= D;WHEN "011" => reg3 <= D;WHEN "100" => reg4 <= D;WHEN "101" => reg5 <= D;WHEN "110" => reg6 <= D;WHEN "111" => reg7 <= D;WHEN others => NULL;end case;END IF;END IF;END PROCESS;PROCESS (AA ,RW,reg0,reg1, reg2, reg3,reg4, reg5, reg6, reg7) --READ PROCESSBEGIN--IF clk 'EVENT AND clk= '1' THENIF RW = '1' THENCASE AA ISWHEN "000" => A <= reg0;WHEN "001" => A <= reg1;WHEN "010" => A <= reg2;WHEN "011" => A <= reg3;WHEN "100" => A <= reg4;WHEN "101" => A <= reg5;WHEN "110" => A <= reg6;WHEN "111" => A <= reg7;WHEN OTHERS => A <= "XXXXXXXXXXXXXXXX";END CASE;END IF;--END IF;END PROCESS;PROCESS (BA,RW,reg0,reg1, reg2, reg3,reg4, reg5, reg6, reg7) --READ PROCESSBEGIN--IF clk 'EVENT AND clk= '1' THENIF RW = '1' THENCASE BA ISWHEN "000" => B <= reg0;WHEN "001" => B <= reg1;WHEN "010" => B <= reg2;WHEN "011" => B <= reg3;WHEN "100" => B <= reg4;WHEN "101" => B <= reg5;WHEN "110" => B <= reg6;WHEN "111" => B <= reg7;WHEN OTHERS => B <= "XXXXXXXXXXXXXXXX";END CASE;--END IF;END IF;END PROCESS;END rtl;

⌨️ 快捷键说明

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