Initial commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
USE std.textio.all;
|
||||
|
||||
ARCHITECTURE Spartan3E OF blockRAM IS
|
||||
|
||||
subtype registerType is std_ulogic_vector(dataBitNb-1 downto 0);
|
||||
type memoryType is array (0 to 2**addressBitNb-1) of registerType;
|
||||
|
||||
-- Define function to create initvalue signal
|
||||
impure function ReadRamContentFromFile(ramContentFileSpec : in string) return memoryType is
|
||||
FILE ramContentFile : text open read_mode is ramContentFileSpec;
|
||||
variable ramContentFileLine : line;
|
||||
variable ramContent : memoryType;
|
||||
variable ramCurrentWord : bit_vector(registerType'range);
|
||||
variable index : natural := 0; --241;
|
||||
begin
|
||||
for index in ramContent'range loop
|
||||
-- while not endfile(ramContentFile) loop
|
||||
readline(ramContentFile, ramContentFileLine);
|
||||
read(ramContentFileLine, ramCurrentWord);
|
||||
ramContent(index) := std_ulogic_vector(to_stdlogicvector(ramCurrentWord));
|
||||
-- index := index + 1;
|
||||
end loop;
|
||||
return ramContent;
|
||||
end function;
|
||||
|
||||
shared variable memoryArray: memoryType := ReadRamContentFromFile(initFileSpec);
|
||||
|
||||
BEGIN
|
||||
|
||||
portA: process(clock)
|
||||
begin
|
||||
if rising_edge(clock) then
|
||||
if (en = '1') then
|
||||
if (write = '1') then
|
||||
memoryArray(to_integer(addr)) := dataIn;
|
||||
dataOut <= dataIn;
|
||||
else
|
||||
dataOut <= memoryArray(to_integer(addr));
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process portA;
|
||||
|
||||
END ARCHITECTURE Spartan3E;
|
||||
Reference in New Issue
Block a user