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

Subversion Repositories tv80

[/] [tv80/] [branches/] [hpa1/] [env/] [tb_top.v] - Blame information for rev 10

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

Line No. Rev Author Line
1 10 ghutchis
`define TV80_CORE_PATH tb_top.tv80s_inst.i_tv80_core
2
`define TV80_INSTRUCTION_TRACE 1
3
 
4 2 ghutchis
module tb_top;
5
 
6
  reg         clk;
7
  reg         reset_n;
8
  reg         wait_n;
9
  reg         int_n;
10
  reg         nmi_n;
11
  reg         busrq_n;
12
  wire        m1_n;
13
  wire        mreq_n;
14
  wire        iorq_n;
15
  wire        rd_n;
16
  wire        wr_n;
17
  wire        rfsh_n;
18
  wire        halt_n;
19
  wire        busak_n;
20
  wire [15:0] A;
21
  wire [7:0]  di;
22
  wire [7:0]  do;
23
  wire        ram_rd_cs, ram_wr_cs, rom_rd_cs;
24
 
25
  always
26
    begin
27
      clk = 1;
28
      #5;
29
      clk = 0;
30
      #5;
31
    end
32
 
33
  assign rom_rd_cs = !mreq_n & !rd_n & !A[15];
34
  assign ram_rd_cs = !mreq_n & !rd_n & A[15];
35
  assign ram_wr_cs = !mreq_n & !wr_n & A[15];
36
 
37
  tv80s tv80s_inst
38
    (
39
     // Outputs
40
     .m1_n                              (m1_n),
41
     .mreq_n                            (mreq_n),
42
     .iorq_n                            (iorq_n),
43
     .rd_n                              (rd_n),
44
     .wr_n                              (wr_n),
45
     .rfsh_n                            (rfsh_n),
46
     .halt_n                            (halt_n),
47
     .busak_n                           (busak_n),
48
     .A                                 (A[15:0]),
49
     .do                                (do[7:0]),
50
     // Inputs
51
     .reset_n                           (reset_n),
52
     .clk                               (clk),
53
     .wait_n                            (wait_n),
54
     .int_n                             (int_n),
55
     .nmi_n                             (nmi_n),
56
     .busrq_n                           (busrq_n),
57
     .di                                (di[7:0]));
58
 
59
  async_mem ram
60
    (
61
     // Outputs
62
     .rd_data                           (di),
63
     // Inputs
64
     .wr_clk                            (clk),
65
     .wr_data                           (do),
66
     .wr_cs                             (ram_wr_cs),
67
     .addr                              (A[14:0]),
68
     .rd_cs                             (ram_rd_cs));
69
 
70
  async_mem rom
71
    (
72
     // Outputs
73
     .rd_data                           (di),
74
     // Inputs
75
     .wr_clk                            (),
76
     .wr_data                           (),
77
     .wr_cs                             (1'b0),
78
     .addr                              (A[14:0]),
79
     .rd_cs                             (rom_rd_cs));
80
 
81
  env_io env_io_inst
82
    (
83
     // Outputs
84
     .DI                                (di[7:0]),
85
     // Inputs
86
     .clk                               (clk),
87
     .iorq_n                            (iorq_n),
88
     .rd_n                              (rd_n),
89
     .wr_n                              (wr_n),
90
     .addr                              (A[7:0]),
91
     .DO                                (do[7:0]));
92
 
93
  initial
94
    begin
95
      reset_n = 0;
96
      wait_n = 1;
97
      int_n  = 1;
98
      nmi_n  = 1;
99
      busrq_n = 1;
100 7 ghutchis
      $readmemh (`ROM_FILE,  tb_top.rom.mem);
101
      $readmemh (`RAM_FILE,  tb_top.ram.mem);
102 2 ghutchis
      repeat (20) @(negedge clk);
103
      reset_n = 1;
104
    end
105 10 ghutchis
 
106
`ifdef TV80_INSTRUCTION_TRACE
107
  reg [7:0] state;
108
  initial
109
    state = 0;
110
 
111
  always @(posedge clk)
112
    begin : inst_decode
113
      if ((`TV80_CORE_PATH.mcycle[2:0] == 1) &&
114
          (`TV80_CORE_PATH.tstate[2:0] == 3))
115
        begin
116
          op_decode.decode (`TV80_CORE_PATH.IR[7:0], state);
117
        end
118
      else if (`TV80_CORE_PATH.mcycle[2:0] != 1)
119
        state = 0;
120
    end
121
`endif
122 2 ghutchis
 
123 10 ghutchis
 `include "env_tasks.v"
124
 
125 2 ghutchis
endmodule // tb_top

powered by: WebSVN 2.1.0

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