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

Subversion Repositories tv80

[/] [tv80/] [trunk/] [sc_env/] [sc_env_top.cpp] - Diff between revs 96 and 97

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

Rev 96 Rev 97
Line 1... Line 1...
#include "systemc.h"
#include "systemc.h"
#include "systemperl.h"
#include "systemperl.h"
#include "env_memory.h"
#include "env_memory.h"
#include "tv_responder.h"
#include "tv_responder.h"
#include "Vtv80s.h"
#include "Vtv80s.h"
 
#include "VT16450.h"
#include "SpTraceVcd.h"
#include "SpTraceVcd.h"
#include <unistd.h>
#include <unistd.h>
#include "z80_decoder.h"
#include "z80_decoder.h"
 
#include "di_mux.h"
 
 
extern char *optarg;
extern char *optarg;
extern int optind, opterr, optopt;
extern int optind, opterr, optopt;
 
 
int sc_main(int argc, char *argv[])
int sc_main(int argc, char *argv[])
Line 18... Line 20...
        char *dumpfile_name;
        char *dumpfile_name;
        char *mem_src_name;
        char *mem_src_name;
        SpTraceFile *tfp;
        SpTraceFile *tfp;
    z80_decoder dec0 ("dec0");
    z80_decoder dec0 ("dec0");
 
 
        while ( (index = getopt(argc, argv, "d:i:k")) != -1) {
 
                printf ("DEBUG: getopt optind=%d index=%d char=%c\n", optind, index, (char) index);
 
                if  (index == 'd') {
 
                        dumpfile_name = new char(strlen(optarg)+1);
 
                        strcpy (dumpfile_name, optarg);
 
                        dumping = true;
 
                        printf ("VCD dump enabled to %s\n", dumpfile_name);
 
                } else if (index == 'i') {
 
                        mem_src_name = new char(strlen(optarg)+1);
 
                        strcpy (mem_src_name, optarg);
 
                        memfile = true;
 
                } else if (index == 'k') {
 
                        printf ("Z80 Instruction decode enabled\n");
 
                        dec0.en_decode = true;
 
                }
 
        }
 
        sc_clock clk("clk125", 8, SC_NS, 0.5);
        sc_clock clk("clk125", 8, SC_NS, 0.5);
 
 
        sc_signal<bool> reset_n;
        sc_signal<bool> reset_n;
        sc_signal<bool> wait_n;
        sc_signal<bool> wait_n;
        sc_signal<bool> int_n;
        sc_signal<bool> int_n;
Line 52... Line 38...
        sc_signal<bool> halt_n;
        sc_signal<bool> halt_n;
        sc_signal<bool> busak_n;
        sc_signal<bool> busak_n;
        sc_signal<uint32_t>     di;
        sc_signal<uint32_t>     di;
        sc_signal<uint32_t> di_mem;
        sc_signal<uint32_t> di_mem;
        sc_signal<uint32_t> di_resp;
        sc_signal<uint32_t> di_resp;
 
        sc_signal<uint32_t> di_uart;
        sc_signal<uint32_t>     dout;
        sc_signal<uint32_t>     dout;
        sc_signal<uint32_t>     addr;
        sc_signal<uint32_t>     addr;
 
 
 
    sc_signal<bool> uart_cs_n, serial, cts_n, dsr_n, ri_n, dcd_n;
 
    sc_signal<bool> baudout, uart_int;
 
 
 
        while ( (index = getopt(argc, argv, "d:i:k")) != -1) {
 
                printf ("DEBUG: getopt optind=%d index=%d char=%c\n", optind, index, (char) index);
 
                if  (index == 'd') {
 
                        dumpfile_name = new char(strlen(optarg)+1);
 
                        strcpy (dumpfile_name, optarg);
 
                        dumping = true;
 
                        printf ("VCD dump enabled to %s\n", dumpfile_name);
 
                } else if (index == 'i') {
 
                        mem_src_name = new char(strlen(optarg)+1);
 
                        strcpy (mem_src_name, optarg);
 
                        memfile = true;
 
                } else if (index == 'k') {
 
                        printf ("Z80 Instruction decode enabled\n");
 
                        dec0.en_decode = true;
 
                }
 
        }
 
 
        Vtv80s tv80s ("tv80s");
        Vtv80s tv80s ("tv80s");
        tv80s.A (addr);
        tv80s.A (addr);
        tv80s.reset_n (reset_n);
        tv80s.reset_n (reset_n);
        tv80s.clk (clk);
        tv80s.clk (clk);
        tv80s.wait_n (wait_n);
        tv80s.wait_n (wait_n);
Line 74... Line 81...
        tv80s.halt_n (halt_n);
        tv80s.halt_n (halt_n);
        tv80s.busak_n (busak_n);
        tv80s.busak_n (busak_n);
        tv80s.di (di);
        tv80s.di (di);
        tv80s.dout (dout);
        tv80s.dout (dout);
 
 
 
        di_mux di_mux0("di_mux0");
 
        di_mux0.mreq_n (mreq_n);
 
        di_mux0.iorq_n (iorq_n);
 
        di_mux0.addr   (addr);
 
        di_mux0.di     (di);
 
        di_mux0.di_mem (di_mem);
 
        di_mux0.di_uart (di_uart);
 
        di_mux0.di_resp (di_resp);
 
        di_mux0.uart_cs_n (uart_cs_n);
 
 
    env_memory env_memory0("env_memory0");
    env_memory env_memory0("env_memory0");
    env_memory0.clk (clk);
    env_memory0.clk (clk);
    env_memory0.wr_data (dout);
    env_memory0.wr_data (dout);
    env_memory0.rd_data (di);
    env_memory0.rd_data (di_mem);
    env_memory0.mreq_n (mreq_n);
    env_memory0.mreq_n (mreq_n);
    env_memory0.rd_n (rd_n);
    env_memory0.rd_n (rd_n);
    env_memory0.wr_n (wr_n);
    env_memory0.wr_n (wr_n);
    env_memory0.addr (addr);
    env_memory0.addr (addr);
    env_memory0.reset_n (reset_n);
    env_memory0.reset_n (reset_n);
Line 111... Line 128...
    dec0.rd_n (rd_n);
    dec0.rd_n (rd_n);
    dec0.wait_n (wait_n);
    dec0.wait_n (wait_n);
    dec0.di (di);
    dec0.di (di);
    dec0.reset_n (reset_n);
    dec0.reset_n (reset_n);
 
 
 
    VT16450 t16450 ("t16450");
 
    t16450.reset_n (reset_n);
 
    t16450.clk  (clk);
 
    t16450.rclk (clk);
 
    t16450.cs_n (uart_cs_n);
 
    t16450.rd_n (rd_n);
 
    t16450.wr_n (wr_n);
 
    t16450.addr (addr);
 
    t16450.wr_data (dout);
 
    t16450.rd_data (di_uart);
 
    t16450.sin (serial);
 
    t16450.cts_n (cts_n);
 
    t16450.dsr_n (dsr_n);
 
    t16450.ri_n  (ri_n);
 
    t16450.dcd_n (dcd_n);
 
 
 
    t16450.sout (serial);
 
    t16450.rts_n (cts_n);
 
    t16450.dtr_n (dsr_n);
 
    t16450.out1_n (ri_n);
 
    t16450.out2_n (dcd_n);
 
    t16450.baudout (baudout);
 
    t16450.intr (uart_int);
 
 
    // create dumpfile
    // create dumpfile
    /*
    /*
    sc_trace_file *trace_file;
    sc_trace_file *trace_file;
    trace_file = sc_create_vcd_trace_file("sc_tv80_env");
    trace_file = sc_create_vcd_trace_file("sc_tv80_env");
    sc_trace (trace_file, clk, "clk");
    sc_trace (trace_file, clk, "clk");

powered by: WebSVN 2.1.0

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