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

Subversion Repositories wb_to_amba

[/] [wb_to_amba/] [trunk/] [src/] [wb_arm_phase_fsm.v] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 qaztronic
//
2
//
3
//
4
 
5
`timescale 1ns / 100ps
6
 
7
 
8
 
9 3 qaztronic
module
10
  wb_arm_phase_fsm(
11
    input       ahb_hclk,
12
    input       ahb_hreset,
13
    input       ahb_hsel,
14
    input       ahb_hready_in,
15
    input       ahb_hready_out,
16
    input [1:0] ahb_htrans,
17
    output      ahb_data_phase,
18
    output      fsm_error
19
  );
20 2 qaztronic
 
21 3 qaztronic
  // -----------------------------
22
  //  do_transfer if not IDLE or BUSY
23
  wire do_transfer = (ahb_htrans == 2'b10) | (ahb_htrans == 2'b11);
24 2 qaztronic
 
25 3 qaztronic
 
26 2 qaztronic
  // -----------------------------
27
  //  state machine binary definitions
28
  parameter IDLE_STATE  = 3'b001;
29
  parameter DATA_STATE  = 3'b010;
30
  parameter ERROR_STATE = 3'b100;
31
 
32 3 qaztronic
 
33 2 qaztronic
  // -----------------------------
34
  //  state machine flop
35
  reg [2:0] state;
36
  reg [2:0] next_state;
37
 
38
  always @(posedge ahb_hclk)
39
    if(~ahb_hreset)
40
      state <= IDLE_STATE;
41
    else
42
      state <= next_state;
43
 
44
 
45
  // -----------------------------
46
  //  state machine
47
  always @(*)
48
    case(state)
49 3 qaztronic
      IDLE_STATE:   if( ahb_hsel & ahb_hready_in & do_transfer)
50 2 qaztronic
                      next_state <= DATA_STATE;
51
                    else
52
                      next_state <= IDLE_STATE;
53
 
54
      DATA_STATE:   if( ahb_hready_out )
55
                      next_state <= IDLE_STATE;
56
                    else
57
                      next_state <= DATA_STATE;
58
 
59
      ERROR_STATE:  next_state <= IDLE_STATE;
60
 
61
      default:      next_state <= ERROR_STATE;
62
 
63
    endcase
64
 
65
 
66
  // -----------------------------
67
  //  outputs
68
  assign ahb_data_phase = (state == DATA_STATE);
69
  assign fsm_error      = (state == ERROR_STATE);
70
 
71 3 qaztronic
 
72 2 qaztronic
endmodule
73
 

powered by: WebSVN 2.1.0

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