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

Subversion Repositories robust_axi2apb

[/] [robust_axi2apb/] [trunk/] [src/] [base/] [axi2apb_cmd.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 eyalhoc
INCLUDE def_axi2apb.txt
2
OUTFILE PREFIX_axi2apb_cmd.v
3
 
4
module  PREFIX_axi2apb_cmd (PORTS);
5
 
6
   input                          clk;
7
   input                          reset;
8
 
9
   port                   AWGROUP_APB_AXI_A;
10
   port                   ARGROUP_APB_AXI_A;
11
   input                  finish_wr;
12
   input                  finish_rd;
13
 
14
   output                 cmd_empty;
15
   output                 cmd_read;
16
   output [ID_BITS-1:0]   cmd_id;
17
   output [ADDR_BITS-1:0] cmd_addr;
18
   output                 cmd_err;
19
 
20
 
21
   wire                   AGROUP_APB_AXI_A;
22
 
23
   wire                   cmd_push;
24
   wire                   cmd_pop;
25
   reg                    read;
26
 
27
 
28
   assign                 wreq = AWVALID;
29
   assign                 rreq = ARVALID;
30
   assign                 wack = AWVALID & AWREADY;
31
   assign                 rack = ARVALID & ARREADY;
32
 
33
   always @(posedge clk or posedge reset)
34
     if (reset)
35
       read <= #FFD 1'b1;
36
     else if (wreq & (rack | (~rreq)))
37
       read <= #FFD 1'b0;
38
     else if (rreq & (wack | (~wreq)))
39
       read <= #FFD 1'b1;
40
 
41
        //command mux
42
        assign AGROUP_APB_AXI_A = read ? ARGROUP_APB_AXI_A : AWGROUP_APB_AXI_A;
43
        assign AERR   = (ASIZE != 'd2) | (ALEN != 'd0); //support only 32 bit single AXI commands
44
 
45
   assign ARREADY = (~cmd_full) & read;
46
   assign AWREADY = (~cmd_full) & (~read);
47
 
48
    assign                    cmd_push  = AVALID & AREADY;
49
    assign                    cmd_pop   = cmd_read ? finish_rd : finish_wr;
50
 
51
CREATE prgen_fifo.v DEFCMD(SWAP CONST(#FFD) #FFD)
52
   prgen_fifo #(ID_BITS+ADDR_BITS+2, CMD_DEPTH)
53
   cmd_fifo(
54
            .clk(clk),
55
            .reset(reset),
56
            .push(cmd_push),
57
            .pop(cmd_pop),
58
            .din({
59
                        AID,
60
                        AADDR,
61
                        AERR,
62
                        read
63
                        }
64
                 ),
65
            .dout({
66
                        cmd_id,
67
                        cmd_addr,
68
                        cmd_err,
69
                        cmd_read
70
                        }
71
                  ),
72
            .empty(cmd_empty),
73
            .full(cmd_full)
74
            );
75
 
76
 
77
 
78
endmodule
79
 
80
 

powered by: WebSVN 2.1.0

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