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

Subversion Repositories System09

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /System09/trunk/Tools/s19tovhd
    from Rev 66 to Rev 25
    Reverse comparison

Rev 66 → Rev 25

/S19toVHD.exe Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
S19toVHD.exe Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: S19toVHD.cpp =================================================================== --- S19toVHD.cpp (revision 66) +++ S19toVHD.cpp (nonexistent) @@ -1,389 +0,0 @@ -// S19toVHD.cpp : Defines the entry point for the console application. -// - -/* -* epedit -* -* binary file editer program -*/ -#include -#include -#include -/* -* equates -*/ -#define EPROM_MAX (1<<16) -#define CMD_LINE_MAX 80 -#define FALSE 0 -#define TRUE !FALSE -#define BINARY 0 -#define MOTOROLA 1 -#define INTEL 2 -#define SMAL32 3 -#define VHDL_BIN 4 -#define VHDL_BYTE 5 -#define VHDL_WORD 6 - -/* -* global variables -*/ -FILE *cmdfp; /* command input pointer */ -char cmdbuff[CMD_LINE_MAX]; -unsigned char eprom_buff[EPROM_MAX]; /* eprom buffer */ -int eprom_top; /* top of EPROM buffer */ -int mod_flag; /* buffer has been modified */ -int auxflag; /* Auxillary input file specified */ -int count; -int checksum; -int offset; /* Eprom Buffer memory offset */ -int format_type; /* load / save format type */ -char *hex_str = "0123456789ABCDEF"; - - -/* -* compare a string of specified length -* return TRUE if a match -* return FALSE if no match -* ignore case -*/ -int str_equal( char *s1, char *s2, int len ) -{ - int i; - - i = 0; - while( i -*/ - -int gethex( FILE *fp_in ) -{ - int hex; - - hex = fgetc( fp_in ); - return( to_hexadecimal( hex ) ); -} - -int get2hex( FILE *fp_in ) -{ - int hexhi, hexlo, byte; - - hexhi = gethex( fp_in ); - if( hexhi != -1 ) - { - hexlo = gethex( fp_in ); - if( hexlo != -1 ) - { - byte = hexhi * 16 + hexlo; - checksum = (checksum + byte) & 0xff; - return byte; - } - } - return -1; -} - -int get4hex( FILE *fp_in ) -{ - int bytehi, bytelo, addr; - - bytehi = get2hex( fp_in ); - if( bytehi != -1 ) - { - bytelo = get2hex( fp_in ); - if( bytelo != -1 ) - { - addr = (bytehi * 256) + bytelo; - return addr; - } - } - return -1; -} - -int get6hex( FILE *fp_in ) -{ - int bytehi, bytemid, bytelow, addr; - - bytehi = get2hex( fp_in ); - if( bytehi != -1 ) - { - bytemid = get2hex( fp_in ); - if( bytemid != -1 ) - { - bytelow = get2hex( fp_in ); - if( bytelow != -1 ) - { - addr = (bytehi << 16) + (bytemid << 8) + bytelow; - return addr; - } - } - } - return -1; -} - -long get8hex( FILE *fp_in ) -{ - int wordhi, wordlow; - long addr; - - wordhi = get4hex( fp_in ); - if( wordhi != -1 ) - { - wordlow = get4hex( fp_in ); - if( wordlow != -1 ) - { - addr = ((long)wordhi << 16) + (long)wordlow; - return addr; - } - } - return -1; -} - - - - -/* -* load motorola formatted file -*/ - -void load_mot( char *fname_in ) -{ - FILE *fp_in; - int byte, addr, i; - - fp_in = fopen( fname_in, "r" ); - if( !fp_in ) - { - printf( "\nCan't open %s", fname_in ); - return; - } - - byte = 0; - addr = 0; - - while( byte != -1 ) - { - do { - byte = fgetc( fp_in); - } while( (byte != 'S') && (byte != -1) ); - - byte = fgetc( fp_in ); - checksum = 0; - if( (byte == '1') || (byte == '2') ) - { - count = get2hex( fp_in ); - if( byte == '1' ) - { - addr = get4hex( fp_in ); - count -= 3; - } - else - { - addr = get6hex( fp_in ); - count -= 4; - } - for( i=0; i>4; - i = fputc( (int)hex_str[hex], fp ); - hex = (h & 0xf); - i = fputc( (int)hex_str[hex], fp ); - checksum = (checksum + h) & 0xff; - return i; -} - -int put4hex( FILE * fp, int h ) -{ - int i; - - i = put2hex( fp, (h & 0xff00 )>>8 ); - i = put2hex( fp, (h & 0xff) ); - return i; -} - - -/* -* save VHDL hexadecimal file -*/ - -void save_vhdl_byte( FILE *fp_out, char *entity_name, int start_addr, int end_addr ) -{ - int addr; - int i,j; - int byte; - - j=0; - fprintf(fp_out, "library IEEE;\n"); - fprintf(fp_out, " use IEEE.std_logic_1164.all;\n"); - fprintf(fp_out, " use IEEE.std_logic_arith.all;\n"); - fprintf(fp_out, "library unisim;\n"); - fprintf(fp_out, " use unisim.vcomponents.all;\n"); - fprintf(fp_out, "\n"); - fprintf(fp_out, "entity %s is\n", entity_name); - fprintf(fp_out, " port(\n"); - fprintf(fp_out, " clk : in std_logic;\n"); - fprintf(fp_out, " rst : in std_logic;\n"); - fprintf(fp_out, " cs : in std_logic;\n"); - fprintf(fp_out, " rw : in std_logic;\n"); - fprintf(fp_out, " addr : in std_logic_vector(10 downto 0);\n"); - fprintf(fp_out, " rdata : out std_logic_vector(7 downto 0);\n"); - fprintf(fp_out, " wdata : in std_logic_vector(7 downto 0)\n"); - fprintf(fp_out, " );\n"); - fprintf(fp_out, "end %s;\n", entity_name); - fprintf(fp_out, "\n"); - fprintf(fp_out, "architecture rtl of %s is\n", entity_name); - fprintf(fp_out, " signal we : std_logic;\n"); - fprintf(fp_out, " signal dp : std_logic;\n"); - fprintf(fp_out, "begin\n"); - fprintf(fp_out, " ROM: RAMB16_S9\n"); - fprintf(fp_out, " generic map (\n"); - - for( addr=start_addr; addr<=end_addr; addr+=32 ) - { - fprintf( fp_out, " INIT_%02x => x\"", j ); - for(i=31; i>=0; i-- ) - { - byte = (int)eprom_buff[(addr - offset + i) % EPROM_MAX]; - putc( hex_str[(byte >>4) & 0xf], fp_out ); - putc( hex_str[byte & 0xf], fp_out ); - } - if (addr+32 < end_addr) { - fprintf( fp_out, "\",\n" ); - } else { - fprintf( fp_out, "\"\n" ); - } - j++; - } - fprintf(fp_out, " )\n"); - fprintf(fp_out, " port map (\n"); - fprintf(fp_out, " do => rdata,\n"); - fprintf(fp_out, " dop(0) => dp,\n"); - fprintf(fp_out, " addr => addr,\n"); - fprintf(fp_out, " clk => clk,\n"); - fprintf(fp_out, " di => wdata,\n"); - fprintf(fp_out, " dip(0) => dp,\n"); - fprintf(fp_out, " en => cs,\n"); - fprintf(fp_out, " ssr => rst,\n"); - fprintf(fp_out, " we => we\n"); - fprintf(fp_out, " );\n"); - fprintf(fp_out, " drive_we: process (rw)\n"); - fprintf(fp_out, " begin\n"); - fprintf(fp_out, " we <= not rw;\n"); - fprintf(fp_out, " end process;\n"); - fprintf(fp_out, "end architecture rtl;\n\n"); - -} - - - - -/* -* epedit main program -*/ -int main(int argc, char* argv[]) -{ - int start_addr; - int end_addr; - int arglen; - char entity_name_buf[512]; - char hdl_file_buf[1024]; - char buf[1024]; - char *curpos; - FILE *fp_out; - - if (argc < 5) { - printf("Usage: s19tovhd [ ...]\n"); - return(-1); - } - printf("Reading Motorola S19 from file '%s'\n", argv[1]); - printf("VHDL file name '%s'\n", argv[2]); - printf("Base RAM/ROM entity name is '%s'\n", argv[3]); - load_mot( argv[1] ); - if( (fp_out = fopen( argv[2], "w" )) == NULL ) { - printf( "\nCan't open '%s' for write ", argv[2] ); - return(-1); - } - - for (int cnt=4; cnt

powered by: WebSVN 2.1.0

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