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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [experiments/] [memdelay/] [memdelay.v] - Rev 318

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

//
// memdelay.v -- test memory delay
//
 
 
`timescale 1ns/10ps
`default_nettype none
 
 
module memdelay;
 
  reg clk;
  reg rst_in;
  reg rst;
  reg stb;
  reg we;
  wire [22:0] addr;
  wire [31:0] data_in;
  wire [31:0] data_out;
  wire ack;
  reg [5:0] state;
  reg [5:0] next_state;
 
  initial begin
    #0     $dumpfile("dump.vcd");
           $dumpvars(0, memdelay);
           clk = 1;
           rst_in = 1;
    #25    rst_in = 0;
    #1000  $finish;
  end
 
  always begin
    #10 clk = ~ clk;
  end
 
  always @(posedge clk) begin
    rst <= rst_in;
  end
 
  assign addr[22:0] = 23'h123456;
  assign data_in[31:0] = 32'h12345678;
 
  ram ram_1(
    .clk(clk),
    .rst(rst),
    .stb(stb),
    .we(we),
    .addr(addr[22:0]),
    .data_in(data_in[31:0]),
    .data_out(data_out[31:0]),
    .ack(ack)
  );
 
  always @(posedge clk) begin
    if (rst) begin
      state <= 0;
    end else begin
      state <= next_state;
    end
  end
 
  always @(*) begin
    case (state[5:0])
      6'h0:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h1;
        end
      6'h1:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h2;
        end
      6'h2:
        begin
          stb = 1;
          we = 0;
          if (ack) begin
            next_state = 6'h3;
          end else begin
            next_state = 6'h2;
          end
        end
      6'h3:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h4;
        end
      6'h4:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h5;
        end
      6'h5:
        begin
          stb = 1;
          we = 1;
          if (ack) begin
            next_state = 6'h6;
          end else begin
            next_state = 6'h5;
          end
        end
      6'h6:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h6;
        end
      default:
        begin
          stb = 0;
          we = 0;
          next_state = 6'h0;
        end
    endcase
  end
 
endmodule
 

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

powered by: WebSVN 2.1.0

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