Advertisement
Simone_Monaco

mem

May 18th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 1.12 KB | None | 0 0
  1. LIBRARY ieee ;
  2. USE ieee.std_logic_1164.all ;
  3. USE ieee.numeric_std.all ;
  4.  
  5. ENTITY memory_1024x8 IS
  6.     PORT( Address : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ) ;
  7.           DataIN : IN SIGNED( 7 DOWNTO 0 ) ;
  8.           WR, RD, CS, CLK : IN STD_LOGIC ;
  9.           DataOUT : OUT SIGNED( 7 DOWNTO 0 ) ) ;
  10. END memory_1024x8 ;
  11.  
  12. ARCHITECTURE Behavior OF memory_1024x8 IS
  13.    
  14.     TYPE mem_array IS ARRAY( 0 TO 1023 ) OF SIGNED( 7 DOWNTO 0 ) ;
  15.     SIGNAL mem_data : mem_array ;
  16.  
  17. BEGIN
  18.    
  19.     write_process : PROCESS( CLK )
  20.     BEGIN
  21.         IF CS = '1' THEN
  22.             IF ( CLK'EVENT AND CLK = '1' ) THEN --sincronous writing
  23.                 IF WR = '1' THEN
  24.                     mem_data( TO_INTEGER( UNSIGNED( Address ) ) ) <= DataIN ;
  25.                 END IF ;
  26.             END IF ;
  27.         END IF ;
  28.     END PROCESS write_process ;
  29.    
  30.     read_process : PROCESS ( Address )
  31.     BEGIN
  32.         IF CS = '1' THEN
  33.             IF RD = '1' THEN --asincronous reading
  34.                     DataOUT <= mem_data( TO_INTEGER( UNSIGNED( Address ) ) ) ;
  35.             END IF ;
  36.         END IF ;
  37.     END PROCESS read_process ;
  38.    
  39. END Behavior ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement