Merge pull request #139 from antonblanchard/reduce-mem

Reduce mem
pull/136/head
Anton Blanchard 4 years ago committed by GitHub
commit 8569ae0ab1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -19,7 +19,7 @@ begin
soc0: entity work.soc soc0: entity work.soc
generic map( generic map(
SIM => true, SIM => true,
MEMORY_SIZE => 524288, MEMORY_SIZE => (384*1024),
RAM_INIT_FILE => "main_ram.bin", RAM_INIT_FILE => "main_ram.bin",
RESET_LOW => false RESET_LOW => false
) )

@ -3,7 +3,7 @@ use ieee.std_logic_1164.all;


entity toplevel is entity toplevel is
generic ( generic (
MEMORY_SIZE : positive := 524288; MEMORY_SIZE : positive := (384*1024);
RAM_INIT_FILE : string := "firmware.hex"; RAM_INIT_FILE : string := "firmware.hex";
RESET_LOW : boolean := true; RESET_LOW : boolean := true;
CLK_INPUT : positive := 100000000; CLK_INPUT : positive := 100000000;

@ -5,6 +5,7 @@ use ieee.numeric_std.all;
package utils is package utils is


function log2(i : natural) return integer; function log2(i : natural) return integer;
function log2ceil(i : natural) return integer;
function ispow2(i : integer) return boolean; function ispow2(i : integer) return boolean;


end utils; end utils;
@ -22,6 +23,17 @@ package body utils is
return ret; return ret;
end function; end function;


function log2ceil(i : natural) return integer is
variable tmp : integer := i;
variable ret : integer := 0;
begin
while tmp >= 1 loop
ret := ret + 1;
tmp := tmp / 2;
end loop;
return ret;
end function;

function ispow2(i : integer) return boolean is function ispow2(i : integer) return boolean is
begin begin
if to_integer(to_unsigned(i, 32) and to_unsigned(i - 1, 32)) = 0 then if to_integer(to_unsigned(i, 32) and to_unsigned(i - 1, 32)) = 0 then

@ -24,7 +24,7 @@ entity wishbone_bram_wrapper is
end entity wishbone_bram_wrapper; end entity wishbone_bram_wrapper;


architecture behaviour of wishbone_bram_wrapper is architecture behaviour of wishbone_bram_wrapper is
constant ram_addr_bits : integer := log2(MEMORY_SIZE) - 3; constant ram_addr_bits : integer := log2ceil(MEMORY_SIZE) - 3;


-- RAM interface -- RAM interface
signal ram_addr : std_logic_vector(ram_addr_bits - 1 downto 0); signal ram_addr : std_logic_vector(ram_addr_bits - 1 downto 0);

Loading…
Cancel
Save