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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [bin/] [abs32tosplit] - Rev 112

Go to most recent revision | Compare with Previous | Blame | View Log

eval 'exec `which perl` -S $0 ${1+"$@"}'
   if 0;

#/**********************************************************************/
#/*                                                                    */
#/*             -------                                                */
#/*            /   SOC  \                                              */
#/*           /    GEN   \                                             */
#/*          /    TOOL    \                                            */
#/*          ==============                                            */
#/*          |            |                                            */
#/*          |____________|                                            */
#/*                                                                    */
#/*  Converts a 32 bit abs file into a 16 bit verilog readmemh format  */
#/*  split into 8 bit even and 8 bit odd files                         */
#/*                                                                    */
#/*  Author(s):                                                        */
#/*      - John Eaton, jt_eaton@opencores.org                          */
#/*                                                                    */
#/**********************************************************************/
#/*                                                                    */
#/*    Copyright (C) <2010>  <Ouabache Design Works>                   */
#/*                                                                    */
#/*  This source file may be used and distributed without              */
#/*  restriction provided that this copyright statement is not         */
#/*  removed from the file and that any derivative work contains       */
#/*  the original copyright notice and the associated disclaimer.      */
#/*                                                                    */
#/*  This source file is free software; you can redistribute it        */
#/*  and/or modify it under the terms of the GNU Lesser General        */
#/*  Public License as published by the Free Software Foundation;      */
#/*  either version 2.1 of the License, or (at your option) any        */
#/*  later version.                                                    */
#/*                                                                    */
#/*  This source is distributed in the hope that it will be            */
#/*  useful, but WITHOUT ANY WARRANTY; without even the implied        */
#/*  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           */
#/*  PURPOSE.  See the GNU Lesser General Public License for more      */
#/*  details.                                                          */
#/*                                                                    */
#/*  You should have received a copy of the GNU Lesser General         */
#/*  Public License along with this source; if not, download it        */
#/*  from http://www.opencores.org/lgpl.shtml                          */
#/*                                                                    */
#/**********************************************************************/

# ToDO: add handling unaligned words


############################################################################
# General PERL config
############################################################################
use Getopt::Long;
use English;
use File::Basename;

$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.


############################################################################
### Process the options
############################################################################

Getopt::Long::config("require_order", "prefix=-");
GetOptions("h"
) || die "(use '$program_name -h' for help)";


##############################################################################
## Help option
##############################################################################
if ( ($opt_h eq "1") ) 
  { print "\n type test filename ( no extension)";
    print "\n";
    exit 1;
  }



#############################################################################
## 
##  open intel hex  file  and read into array
## 
#############################################################################

  my $prog_name         = $ARGV[0];

  my $input_file   = ${prog_name}.".abs";
  my $output_file_e  = ${prog_name}.".absE";
  my $output_file_o  = ${prog_name}.".absO";

  print "Reading hex File  $input_file\n";  
  print "Writing abs File  $output_file_e\n";  
  print "Writing abs File  $output_file_o\n";  

  open  VERILOG_E , ">  $output_file_e";
  open  VERILOG_O , ">  $output_file_o";
  open   FILE, $input_file;



  while(<FILE>){push @intel_hex, $_  ;}


#############################################################################
## 
##  Clear a storage area for the 16 bit words
## 
#############################################################################


   my  $x=0;
      while( $x <= 65535) 
           {    
           @Mem_e[$x] = "00";
           @Mem_o[$x] = "00";
            $x = $x+1;
           }


#############################################################################
## 
##  Parse Data  into storage converting from 8 bit bytes to 16 bit words
## 
#############################################################################
 
my $pointer = 0;


  foreach $line (@intel_hex)
    {
    print "$line -- $pointer";

    @Mem_e[$pointer+0] = substr($line, 6,2);
    @Mem_o[$pointer+0] = substr($line, 4,2);  
    @Mem_e[$pointer+1] = substr($line, 2,2);
    @Mem_o[$pointer+1] = substr($line, 0,2);
    $pointer = $pointer +2;
    }
$pointer = $pointer-1;

#############################################################################
## 
##  dump out up to the last word, undefined space is 000
## 
#############################################################################

      $x = 0;
      while( $x <= ($pointer)) 
           {    
           printf VERILOG_E (" %s\n",@Mem_e[$x]);
           printf VERILOG_O (" %s\n",@Mem_o[$x]);
           $x = $x+1;
           }











1


Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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