Line 22... |
Line 22... |
|
|
PACKAGE hexio IS
|
PACKAGE hexio IS
|
|
|
-- This type must be used for base memory arrays
|
-- This type must be used for base memory arrays
|
TYPE cstr_array_type IS ARRAY(INTEGER RANGE <>) OF INTEGER RANGE 0 TO 65535;
|
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);
|
|
|
FUNCTION init_cstr (
|
FUNCTION init_cstr (
|
CONSTANT array_size : IN INTEGER;
|
CONSTANT array_size : IN INTEGER;
|
CONSTANT input_file : IN STRING)
|
CONSTANT input_file : IN STRING)
|
RETURN cstr_array_type;
|
RETURN cstr_array_type;
|
|
|
|
PROCEDURE init_b32k_array (
|
|
SIGNAL array_io : INOUT B32K_array_type;
|
|
CONSTANT filename : IN STRING);
|
|
|
PROCEDURE init_var_array (
|
PROCEDURE init_var_array (
|
VARIABLE array_in : INOUT cstr_array_type;
|
VARIABLE array_in : INOUT cstr_array_type;
|
CONSTANT filename : IN STRING);
|
CONSTANT filename : IN STRING);
|
|
|
PROCEDURE init_sig_array (
|
PROCEDURE init_sig_array (
|
Line 75... |
Line 80... |
CONSTANT array_size : IN INTEGER;
|
CONSTANT array_size : IN INTEGER;
|
CONSTANT input_file : IN STRING)
|
CONSTANT input_file : IN STRING)
|
RETURN cstr_array_type IS
|
RETURN cstr_array_type IS
|
|
|
VARIABLE rv : cstr_array_type(0 TO array_size - 1) := (OTHERS => 0);
|
VARIABLE rv : cstr_array_type(0 TO array_size - 1) := (OTHERS => 0);
|
|
|
BEGIN -- FUNCTION init_cstr
|
BEGIN -- FUNCTION init_cstr
|
|
|
init_var_array(rv, input_file);
|
init_var_array(rv, input_file);
|
|
|
RETURN rv;
|
RETURN rv;
|
END FUNCTION init_cstr;
|
END FUNCTION init_cstr;
|
|
|
|
PROCEDURE init_b32k_array (
|
|
SIGNAL array_io : INOUT B32K_array_type;
|
|
CONSTANT filename : IN STRING) IS
|
|
|
|
FILE input_file : TEXT;
|
|
|
|
VARIABLE input_line : LINE;
|
|
VARIABLE fstatus : FILE_OPEN_STATUS;
|
|
|
|
VARIABLE a_index : INTEGER := 0;
|
|
VARIABLE i_value : INTEGER := 0;
|
|
|
|
VARIABLE output_line : LINE;
|
|
VARIABLE line_value : STRING(1 TO 4);
|
|
|
|
BEGIN
|
|
|
|
FOR i IN 0 TO 3 LOOP
|
|
array_io(i) <= (OTHERS => 0);
|
|
END LOOP;
|
|
|
|
file_open(fstatus, input_file, filename, READ_MODE);
|
|
|
|
IF fstatus = OPEN_OK THEN
|
|
|
|
FOR i IN 0 TO 3 LOOP
|
|
FOR j IN 0 TO 8191 LOOP
|
|
-- Read the next line and put its contents in a string
|
|
readline(input_file, input_line);
|
|
read(input_line, line_value);
|
|
|
|
-- Current debugging feedback
|
|
write(output_line, line_value);
|
|
writeline(OUTPUT, output_line);
|
|
|
|
-- Turn a hex value into an integer value
|
|
read_hex(line_value, i_value);
|
|
|
|
array_io(i)(j) <= i_value;
|
|
|
|
write(output_line, STRING'("Index :"));
|
|
write(output_line, i*8192+j);
|
|
write(output_line, STRING'(" Value: "));
|
|
write(output_line, i_value);
|
|
writeline(OUTPUT, output_line);
|
|
END LOOP;
|
|
END LOOP;
|
|
|
|
file_close(input_file);
|
|
|
|
END IF;
|
|
|
|
END PROCEDURE init_b32k_array;
|
|
|
-- Fill a signal array with the contents of a file
|
-- Fill a signal array with the contents of a file
|
PROCEDURE init_sig_array (
|
PROCEDURE init_sig_array (
|
SIGNAL array_in : INOUT cstr_array_type;
|
SIGNAL array_in : INOUT cstr_array_type;
|
CONSTANT filename : IN STRING) IS
|
CONSTANT filename : IN STRING) IS
|
|
|
Line 101... |
Line 161... |
PROCEDURE fill_sig_array (
|
PROCEDURE fill_sig_array (
|
CONSTANT value : IN INTEGER;
|
CONSTANT value : IN INTEGER;
|
SIGNAL in_array : INOUT cstr_array_type) IS
|
SIGNAL in_array : INOUT cstr_array_type) IS
|
|
|
BEGIN -- PROCEDURE fill_array
|
BEGIN -- PROCEDURE fill_array
|
|
|
FOR i IN in_array'RANGE LOOP
|
FOR i IN in_array'RANGE LOOP
|
in_array(i) <= value;
|
in_array(i) <= value;
|
END LOOP; -- i
|
END LOOP; -- i
|
END PROCEDURE fill_sig_array;
|
END PROCEDURE fill_sig_array;
|
|
|
Line 156... |
Line 215... |
|
|
END IF;
|
END IF;
|
|
|
END PROCEDURE read_file_into_sig_array;
|
END PROCEDURE read_file_into_sig_array;
|
|
|
--
|
|
--
|
|
|
|
-- Initialise a variable array
|
-- Initialise a variable array
|
PROCEDURE init_var_array (
|
PROCEDURE init_var_array (
|
VARIABLE array_in : INOUT cstr_array_type;
|
VARIABLE array_in : INOUT cstr_array_type;
|
CONSTANT filename : IN STRING) IS
|
CONSTANT filename : IN STRING) IS
|
|
|
Line 301... |
Line 357... |
VARIABLE output_line : LINE;
|
VARIABLE output_line : LINE;
|
BEGIN -- PROCEDURE dump_array
|
BEGIN -- PROCEDURE dump_array
|
|
|
FOR i IN array_in'RANGE LOOP
|
FOR i IN array_in'RANGE LOOP
|
|
|
write(output_line, string'("Index: "));
|
write(output_line, STRING'("Index: "));
|
write(output_line, i);
|
write(output_line, i);
|
|
|
write(output_line, string'(" Value: "));
|
write(output_line, STRING'(" Value: "));
|
write(output_line, array_in(i));
|
write(output_line, array_in(i));
|
|
|
writeline(OUTPUT, output_line);
|
writeline(OUTPUT, output_line);
|
|
|
END LOOP; -- i
|
END LOOP; -- i
|