URL
https://opencores.org/ocsvn/tv80/tv80/trunk
Subversion Repositories tv80
Compare Revisions
- This comparison shows the changes necessary to convert path
/tv80/trunk
- from Rev 91 to Rev 92
- ↔ Reverse comparison
Rev 91 → Rev 92
/sc_env/sc_env_top.cpp
1,5 → 1,6
#include "systemc.h" |
#include "env_memory.h" |
#include "tv_responder.h" |
#include "Vtv80s.h" |
|
int sc_main(int argc, char *argv[]) |
20,6 → 21,8
sc_signal<bool> halt_n; |
sc_signal<bool> busak_n; |
sc_signal<uint32_t> di; |
sc_signal<uint32_t> di_mem; |
sc_signal<uint32_t> di_resp; |
sc_signal<uint32_t> dout; |
sc_signal<uint32_t> addr; |
|
50,7 → 53,48
env_memory0.rd_n (rd_n); |
env_memory0.wr_n (wr_n); |
env_memory0.addr (addr); |
|
tv_responder tv_resp0("tv_resp0"); |
tv_resp0.clk (clk); |
tv_resp0.reset_n (reset_n); |
tv_resp0.wait_n (wait_n); |
tv_resp0.int_n (int_n); |
tv_resp0.nmi_n (nmi_n); |
tv_resp0.busak_n (busak_n); |
tv_resp0.busrq_n (busrq_n); |
tv_resp0.m1_n (m1_n); |
tv_resp0.mreq_n (mreq_n); |
tv_resp0.iorq_n (iorq_n); |
tv_resp0.rd_n (rd_n); |
tv_resp0.wr_n (wr_n); |
tv_resp0.addr (addr); |
tv_resp0.di_resp (di_resp); |
tv_resp0.dout (dout); |
tv_resp0.halt_n (halt_n); |
|
// create dumpfile |
sc_trace_file *trace_file; |
trace_file = sc_create_vcd_trace_file("sc_tv80_env"); |
sc_trace (trace_file, clk, "clk"); |
sc_trace (trace_file, reset_n, "reset_n"); |
sc_trace (trace_file, wait_n, "wait_n"); |
sc_trace (trace_file, int_n, "int_n"); |
sc_trace (trace_file, nmi_n, "nmi_n"); |
sc_trace (trace_file, busrq_n, "busrq_n"); |
sc_trace (trace_file, m1_n, "m1_n"); |
sc_trace (trace_file, mreq_n, "mreq_n"); |
sc_trace (trace_file, iorq_n, "iorq_n"); |
sc_trace (trace_file, rd_n, "rd_n"); |
sc_trace (trace_file, wr_n, "wr_n"); |
sc_trace (trace_file, halt_n, "halt_n"); |
sc_trace (trace_file, busak_n, "busak_n"); |
sc_trace (trace_file, di, "di"); |
sc_trace (trace_file, dout, "dout"); |
sc_trace (trace_file, addr, "addr"); |
|
|
sc_start(8000); |
sc_close_vcd_trace_file (trace_file); |
|
return 0; |
} |
} |
/sc_env/tv_responder.h
0,0 → 1,34
#ifndef TV_RESPONDER_H_ |
#define TV_RESPONDER_H_ |
|
#include "systemc.h" |
|
SC_MODULE(tv_responder) |
{ |
sc_in<bool> clk; |
|
sc_out<bool> reset_n; |
sc_out<bool> wait_n; |
sc_out<bool> int_n; |
sc_out<bool> nmi_n; |
sc_out<bool> busrq_n; |
sc_in<bool> m1_n; |
sc_in<bool> mreq_n; |
sc_in<bool> iorq_n; |
sc_in<bool> rd_n; |
sc_in<bool> wr_n; |
sc_in<bool> halt_n; |
sc_in<bool> busak_n; |
sc_out<uint32_t> di_resp; |
sc_in<uint32_t> dout; |
sc_in<uint32_t> addr; |
|
void event(); |
|
SC_CTOR(tv_responder) { |
SC_THREAD(event); |
sensitive << clk.pos(); |
} |
}; |
|
#endif /*TV_RESPONDER_H_*/ |
/sc_env/env_memory.cpp
1,4 → 1,5
#include "env_memory.h" |
#include <stdio.h> |
|
void env_memory::event() |
{ |
19,3 → 20,45
#endif |
} |
} |
|
void inline readline(FILE *fh, char *buf) |
{ |
int c = 1; |
|
while (c) { |
c = read (buf, 1, 1, fh); |
if (c && (*buf == '\n')) |
c = 0; |
else buf++; |
} |
} |
|
/* |
line = ifh.readline() |
while (line != ''): |
if (line[0] == ':'): |
rlen = int(line[1:3], 16) |
addr = int(line[3:7], 16) |
rtyp = int(line[7:9], 16) |
ptr = 9 |
for i in range (0, rlen): |
laddr = addr + i |
val = int(line[9+i*2:9+i*2+2], 16) |
self.map[laddr] = val |
self.bcount += 1 |
if (laddr > self.max): self.max = laddr |
if (laddr < self.min): self.min = laddr |
|
line = ifh.readline() |
*/ |
void env_memory::load_ihex(char *filename) |
{ |
FILE *fh; |
char line[80]; |
|
fh = fopen (filename, "r"); |
|
readline (fh, line); |
|
fclose (fh); |
} |
/sc_env/env_memory.h
18,11 → 18,13
unsigned char *memory; |
|
void event(); |
|
void load_ihex (char *filename); |
|
SC_CTOR(env_memory) { |
memory = new unsigned char[AM_DEPTH]; |
SC_METHOD(event); |
sensitive_pos << clk; |
sensitive << clk.pos(); |
} |
}; |
|
/sc_env/tv_responder.cpp
0,0 → 1,18
#include "tv_responder.h" |
|
void tv_responder::event () |
{ |
// init |
reset_n = 0; |
wait_n = 1; |
int_n = 1; |
nmi_n = 1; |
busrq_n = 1; |
di_resp = 0; |
|
for (int c=0; c<10; c++) |
wait(); |
reset_n = 1; |
wait(); |
printf ("Initialization complete.\n"); |
} |
/sc_env/Makefile
4,7 → 4,8
INCLUDES=-I$(SYSTEMC)/include -I$(VERIDIR) -I$(VERILATOR_ROOT)/include |
LINKOPT=-L$(SYSTEMC)/lib-linux64 -lsystemc -lm |
DEFINES=-DDEBUG |
OBJFILES=sc_env_top.o env_memory.o $(VERIDIR)/Vtv80s.o $(VERIDIR)/Vtv80s__Syms.o verilated.o |
OBJFILES=sc_env_top.o env_memory.o tv_responder.o \ |
$(VERIDIR)/Vtv80s.o $(VERIDIR)/Vtv80s__Syms.o verilated.o |
|
CXX=g++ -g $(INCLUDES) $(DEFINES) |
|