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

Subversion Repositories zet86

[/] [zet86/] [trunk/] [sim/] [testbench.v] - Blame information for rev 14

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

Line No. Rev Author Line
1 2 zeus
`timescale 10ns/100ps
2
 
3
module testbench;
4
 
5
  // Net declarations
6
  wire [15:0] rd_data;
7
  wire [15:0] wr_data, mem_data, io_data;
8
  wire [19:0] addr;
9
  wire        we;
10
  wire        m_io;
11 14 zeus
  wire        byte_m;
12
  wire        ack_i;
13 2 zeus
 
14
  reg         clk, rst;
15
  reg [15:0]  io_reg;
16 14 zeus
  reg [ 1:0]  ack;
17 2 zeus
 
18
  // Module instantiations
19
  memory mem0 (clk, addr, wr_data, mem_data, we & ~m_io, byte_m);
20
 
21 14 zeus
  cpu cpu0 (
22
    .clk_i  (clk),
23
    .rst_i  (rst),
24
    .dat_i  (rd_data),
25
    .dat_o  (wr_data),
26
    .adr_o  (addr),
27
    .we_o   (we),
28
    .mio_o  (m_io),
29
    .byte_o (byte_m),
30
    .ack_i  (ack_i)
31
  );
32
 
33 2 zeus
  // Assignments
34
  assign io_data = (addr[15:0]==16'hb7) ? io_reg : 16'd0;
35
  assign rd_data = m_io ? io_data : mem_data;
36 14 zeus
  assign ack_i   = (ack==2'b10);
37 2 zeus
 
38
  // Behaviour
39
  // IO Stub
40
  always @(posedge clk)
41 14 zeus
    if (addr==20'hb7 & we & m_io)
42 2 zeus
      io_reg <= byte_m ? { io_reg[15:8], wr_data[7:0] } : wr_data;
43
 
44
  always #1 clk = ~clk;
45 14 zeus
  always #2.13 ack = ack + 2'd1;
46 2 zeus
 
47
  initial
48
    begin
49
         clk <= 1'b1;
50
         rst <= 1'b0;
51 14 zeus
         ack <= 2'b0;
52 2 zeus
      #5 rst <= 1'b1;
53
      #2 rst <= 1'b0;
54
    end
55 14 zeus
 
56 2 zeus
endmodule

powered by: WebSVN 2.1.0

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