OpenCores
URL https://opencores.org/ocsvn/xucpu/xucpu/trunk

Subversion Repositories xucpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /xucpu
    from Rev 24 to Rev 25
    Reverse comparison

Rev 24 → Rev 25

/trunk/src/components/BRAM/ram_parts.vhdl
168,7 → 168,7
 
ARCHITECTURE Structural OF RAM32K IS
 
SIGNAL memory_array : B32K_array_type;
SIGNAL memory_array : B32K_array_type := init_b32k(filename);
 
SIGNAL data_address : STD_LOGIC_VECTOR(12 DOWNTO 0);
SIGNAL data_select : STD_LOGIC_VECTOR(1 DOWNTO 0);
/trunk/src/components/BRAM/RAM.vhdl
50,6 → 50,7
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
USE work.ram_parts.ALL;
USE work.hexio.ALL;
 
ENTITY memory IS
 
75,9 → 76,11
 
ARCHITECTURE Structural OF memory IS
 
CONSTANT dummy : INTEGER := notify_f("Initialisation of memory component starts");
 
BEGIN -- Structural
 
SMALL_MEM : IF w_data >= 8 AND w_data <= 14 GENERATE
SMALL_MEM : IF w_addr >= 8 AND w_addr <= 14 GENERATE
MEM0 : RAM_GENERIC
GENERIC MAP (
filename => filename,
93,19 → 96,19
q2 => q2);
END GENERATE SMALL_MEM;
 
LARGE_MEM : IF w_data = 15 GENERATE
MEM1: RAM32K
GENERIC MAP (
filename => filename,
w_data => w_data)
PORT MAP (
clk => clk,
we => we,
a1 => a1,
a2 => a2,
d1 => d1,
q1 => q1,
q2 => q2);
LARGE_MEM : IF w_addr = 15 GENERATE
MEM1 : RAM32K
GENERIC MAP (
filename => filename,
w_data => w_data)
PORT MAP (
clk => clk,
we => we,
a1 => a1,
a2 => a2,
d1 => d1,
q1 => q1,
q2 => q2);
END GENERATE LARGE_MEM;
 
END Structural;
/trunk/src/components/BRAM/tb_generic_ram.vhdl
21,6 → 21,7
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
USE work.RAM.ALL;
USE work.hexio.ALL;
 
-- Test bench for instatiating a memory and initialising
-- it from a file.
41,9 → 42,20
SIGNAL inst_o : STD_LOGIC_VECTOR(15 DOWNTO 0);
 
SIGNAL ctr_a : NATURAL RANGE 0 TO (2**w_addr - 1);
CONSTANT dummy : INTEGER := notify_f("Initialising tb_generic_ram");
 
BEGIN -- ARCHITECTURE Structural
 
-- purpose: Data dumping when simulation starts
-- type : combinational
-- inputs :
-- outputs:
dump1: PROCESS IS
BEGIN -- PROCESS dump1
notify("Simulation of tb_generic_ram starts");
WAIT;
END PROCESS dump1;
RAM1 : memory
GENERIC MAP (
filename => "test_data.txt",
/trunk/src/util/file/hexio.vhdl
24,7 → 24,7
 
-- This type must be used for base memory arrays
TYPE cstr_array_type IS ARRAY(INTEGER RANGE <>) OF INTEGER RANGE 0 TO 65535;
TYPE B32K_array_type IS ARRAY(0 TO 3) OF cstr_array_type(0 TO 8192);
TYPE B32K_array_type IS ARRAY(0 TO 3) OF cstr_array_type(0 TO 8191);
 
FUNCTION init_cstr (
CONSTANT array_size : IN INTEGER;
31,8 → 31,12
CONSTANT input_file : IN STRING)
RETURN cstr_array_type;
 
FUNCTION init_b32k (
CONSTANT input_file : IN STRING)
RETURN B32K_array_type;
 
PROCEDURE init_b32k_array (
SIGNAL array_io : INOUT B32K_array_type;
VARIABLE array_io : INOUT B32K_array_type;
CONSTANT filename : IN STRING);
 
PROCEDURE init_var_array (
46,6 → 50,13
PROCEDURE dump_array (
CONSTANT array_in : IN cstr_array_type);
 
PROCEDURE notify (
CONSTANT message : IN STRING);
 
FUNCTION notify_f (
CONSTANT message : IN STRING)
RETURN INTEGER;
 
END PACKAGE hexio;
 
PACKAGE BODY hexio IS
76,6 → 87,24
CONSTANT filename : IN STRING);
 
-- Procedure and function body definitions
PROCEDURE notify (
CONSTANT message : IN STRING) IS
 
VARIABLE output_line : LINE;
BEGIN
write(output_line, message);
writeline(OUTPUT, output_line);
END;
 
FUNCTION notify_f (
CONSTANT message : IN STRING)
RETURN INTEGER IS
BEGIN
notify(message);
 
RETURN 0;
END;
 
FUNCTION init_cstr (
CONSTANT array_size : IN INTEGER;
CONSTANT input_file : IN STRING)
83,20 → 112,29
 
VARIABLE rv : cstr_array_type(0 TO array_size - 1) := (OTHERS => 0);
 
VARIABLE output_line : LINE;
 
BEGIN -- FUNCTION init_cstr
 
write(output_line, STRING'("Initialising memory"));
writeline(OUTPUT, output_line);
notify("Initialising memory");
init_var_array(rv, input_file);
 
init_var_array(rv, input_file);
 
RETURN rv;
END FUNCTION init_cstr;
 
FUNCTION init_b32k (
CONSTANT input_file : IN STRING)
RETURN B32K_array_type IS
 
VARIABLE rv : B32K_array_type;
 
BEGIN -- FUNCTION init_b32K
 
init_b32k_array(rv, input_file);
 
RETURN rv;
END FUNCTION init_b32K;
 
PROCEDURE init_b32k_array (
SIGNAL array_io : INOUT B32K_array_type;
VARIABLE array_io : INOUT B32K_array_type;
CONSTANT filename : IN STRING) IS
 
FILE input_file : TEXT;
113,7 → 151,7
BEGIN
 
FOR i IN 0 TO 3 LOOP
array_io(i) <= (OTHERS => 0);
array_io(i) := (OTHERS => 0);
END LOOP;
 
file_open(fstatus, input_file, filename, READ_MODE);
133,7 → 171,7
-- Turn a hex value into an integer value
read_hex(line_value, i_value);
 
array_io(i)(j) <= i_value;
array_io(i)(j) := i_value;
 
write(output_line, STRING'("Index :"));
write(output_line, i*8192+j);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.