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

Subversion Repositories xucpu

[/] [xucpu/] [trunk/] [src/] [util/] [file/] [hexio.vhdl] - Diff between revs 16 and 17

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 16 Rev 17
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

powered by: WebSVN 2.1.0

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