📄 regfile.vhd
字号:
library ieee;use ieee.std_logic_1164.all;--use ieee.std_logic_arith.all;use ieee.numeric_std.all;use ieee.std_logic_unsigned.all;--LIBRARY altera_mf;--USE altera_mf.ALL; USE work.procmem_definitions.ALL;ENTITY regfile ISPORT (clk,rst_n : IN std_ulogic;wen : IN std_ulogic; -- write controlwriteport : IN std_ulogic_vector(width-1 DOWNTO 0); -- register inputadrwport : IN std_ulogic_vector(regfile_adrsize-1 DOWNTO 0);-- address writeadrport0 : IN std_ulogic_vector(regfile_adrsize-1 DOWNTO 0);-- address port 0adrport1 : IN std_ulogic_vector(regfile_adrsize-1 DOWNTO 0);-- address port 1readport0 : OUT std_ulogic_vector(width-1 DOWNTO 0); -- output port 0readport1 : OUT std_ulogic_vector(width-1 DOWNTO 0) -- output port 1);END regfile;ARCHITECTURE behave OF regfile ISSUBTYPE WordT IS std_ulogic_vector(width-1 DOWNTO 0); -- reg word TYPETYPE StorageT IS ARRAY(0 TO regfile_depth-1) OF WordT; -- reg array TYPESIGNAL registerfile : StorageT; -- reg file contentsBEGIN-- perform write operationPROCESS(rst_n, clk)BEGINIF rst_n = '0' THENFOR i IN 0 TO regfile_depth-1 LOOPregisterfile(i) <= (OTHERS => '0');END LOOP;ELSIF rising_edge(clk) THENIF wen = '1' THENregisterfile(to_integer(unsigned((adrwport)))) <= writeport;END IF;END IF;END PROCESS;-- perform reading portsreadport0 <= registerfile(to_integer(unsigned(adrport0)));readport1 <= registerfile(to_integer(unsigned(adrport1)));END behave;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -