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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi32/] [dma_axi32_core0_axim_rd.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
//---------------------------------------------------------
2
//-- File generated by RobustVerilog parser
3
//-- Version: 1.0
4
//-- Invoked Fri Mar 25 23:34:51 2011
5
//--
6
//-- Source file: dma_core_axim_rd.v
7
//---------------------------------------------------------
8
 
9
 
10
 
11
module dma_axi32_core0_axim_rd(clk,reset,load_wr,load_wr_num,load_wr_cycle,load_wdata,joint_stall,joint_req,rd_line_cmd,load_req_in_prog,rd_cmd_port,rd_ch_num,rd_burst_start,rd_burst_addr,rd_burst_size,rd_cmd_pending,rd_cmd_split,rd_cmd_line,rd_cmd_num,rd_cmd_full,ch_fifo_wr,ch_fifo_wdata,ch_fifo_wsize,ch_fifo_wr_num,rd_transfer_num,rd_transfer,rd_transfer_size,rd_burst_cmd,rd_clr_line,rd_clr_line_num,rd_slverr,rd_decerr,rd_clr,rd_clr_load,rd_clr_last,rd_ch_num_resp,page_cross,ARADDR,ARPORT,ARLEN,ARSIZE,ARVALID,ARREADY,AWVALID,RDATA,RRESP,RLAST,RVALID,RREADY_out,axim_timeout_ar,axim_timeout_num_ar);
12
 
13
   input               clk;
14
   input               reset;
15
 
16
   output               load_wr;
17
   output [2:0]           load_wr_num;
18
   output [1:0]           load_wr_cycle;
19
   output [32-1:0]     load_wdata;
20
 
21
   input               joint_stall;
22
   input               joint_req;
23
 
24
   //command
25
   input               rd_line_cmd;
26
   input               load_req_in_prog;
27
   input               rd_cmd_port;
28
   input [2:0]               rd_ch_num;
29
   input               rd_burst_start;
30
   input [32-1:0]      rd_burst_addr;
31
   input [7-1:0]     rd_burst_size;
32
   output               rd_cmd_pending;
33
   output               rd_cmd_split;
34
   output               rd_cmd_line;
35
   output [2:0]           rd_cmd_num;
36
   output               rd_cmd_full;
37
 
38
   //data
39
   output               ch_fifo_wr;
40
   output [32-1:0]     ch_fifo_wdata;
41
   output [3-1:0]     ch_fifo_wsize;
42
   output [2:0]           ch_fifo_wr_num;
43
   output [2:0]           rd_transfer_num;
44
   output               rd_transfer;
45
   output [3-1:0]     rd_transfer_size;
46
   output               rd_burst_cmd;
47
   output               rd_clr_line;
48
   output [2:0]           rd_clr_line_num;
49
 
50
   //resp
51
   output               rd_slverr;
52
   output               rd_decerr;
53
   output               rd_clr;
54
   output               rd_clr_load;
55
   output               rd_clr_last;
56
   output [2:0]           rd_ch_num_resp;
57
 
58
   output               page_cross;
59
 
60
   output [32-1:0]     ARADDR;
61
   output               ARPORT;
62
   output [`LEN_BITS-1:0]     ARLEN;
63
   output [1:0]           ARSIZE;
64
   output               ARVALID;
65
   input               ARREADY;
66
   input               AWVALID;
67
 
68
   input [32-1:0]      RDATA;
69
   input [1:0]               RRESP;
70
   input               RLAST;
71
   input               RVALID;
72
   output               RREADY_out;
73
 
74
   output               axim_timeout_ar;
75
   output [2:0]           axim_timeout_num_ar;
76
 
77
 
78
   wire [`CMD_BITS-1:0]       ARID;
79
   wire               RVALID_d;
80
   wire [`CMD_BITS-1:0]          RID;
81
   reg [32-1:0]           RDATA_d;
82
   reg [1:0]               RRESP_d;
83
   reg                   RLAST_d;
84
   reg [3-1:0]           rd_transfer_size;
85
 
86
   wire               rd_clr_pre;
87
   wire               RREADY;
88
 
89
 
90
 
91
   //don't give peripheral clr on cmd read
92
   assign               rd_clr      = rd_clr_pre & (~rd_clr_last);
93
   assign               rd_clr_load = rd_clr_pre & rd_clr_last;
94
 
95
   prgen_delay #(1) delay_ready(.clk(clk), .reset(reset), .din(RREADY_out), .dout(RREADY));
96
 
97
   prgen_delay #(1) delay_rvalid(.clk(clk), .reset(reset), .din(RVALID), .dout(RVALID_d));
98
 
99
   always @(posedge clk or posedge reset)
100
     if (reset)
101
       begin
102
      RRESP_d <= #1 2'b00;
103
      RDATA_d <= #1 {32{1'b0}};
104
      RLAST_d <= #1 1'b0;
105
       end
106
     else if (RVALID)
107
       begin
108
      RRESP_d <= #1 RRESP;
109
      RDATA_d <= #1 RDATA;
110
      RLAST_d <= #1 RLAST;
111
       end
112
 
113
   always @(/*AUTOSENSE*/RID)
114
     begin
115
    case (RID[5:4])
116
      2'b00 : rd_transfer_size = 4'd1;
117
      2'b01 : rd_transfer_size = 4'd2;
118
      2'b10 : rd_transfer_size = 4'd4;
119
      2'b11 : rd_transfer_size = 4'd8;
120
    endcase
121
     end
122
 
123
 
124
   dma_axi32_core0_axim_cmd
125
   dma_axi32_axim_rcmd (
126
             .clk(clk),
127
             .reset(reset),
128
             .end_line_cmd(rd_line_cmd),
129
             .extra_bit(load_req_in_prog),
130
             .cmd_port(rd_cmd_port),
131
             .ch_num(rd_ch_num),
132
             .joint_req(joint_req),
133
             .burst_start(rd_burst_start),
134
             .burst_addr(rd_burst_addr),
135
             .burst_size(rd_burst_size),
136
             .cmd_pending(rd_cmd_pending),
137
             .cmd_full(rd_cmd_full),
138
             .cmd_split(rd_cmd_split),
139
             .cmd_num(rd_cmd_num),
140
             .cmd_line(rd_cmd_line),
141
             .page_cross(page_cross),
142
             .AID(ARID),
143
             .AADDR(ARADDR),
144
             .APORT(ARPORT),
145
             .ALEN(ARLEN),
146
             .ASIZE(ARSIZE),
147
             .AVALID(ARVALID),
148
             .AREADY(ARREADY),
149
             .AWVALID(AWVALID),
150
             .AJOINT(),
151
             .axim_timeout_num(axim_timeout_num_ar),
152
             .axim_timeout(axim_timeout_ar)
153
             );
154
 
155
 
156
   dma_axi32_core0_axim_rdata
157
   dma_axi32_axim_rdata (
158
              .clk(clk),
159
              .reset(reset),
160
              .load_wr(load_wr),
161
              .load_wr_num(load_wr_num),
162
              .load_wr_cycle(load_wr_cycle),
163
              .load_wdata(load_wdata),
164
              .joint_stall(joint_stall),
165
              .ch_fifo_wr(ch_fifo_wr),
166
              .ch_fifo_wdata(ch_fifo_wdata),
167
              .ch_fifo_wsize(ch_fifo_wsize),
168
              .ch_fifo_wr_num(ch_fifo_wr_num),
169
              .rd_transfer_num(rd_transfer_num),
170
              .rd_transfer(rd_transfer),
171
              .rd_transfer_size(rd_transfer_size),
172
              .rd_clr_line(rd_clr_line),
173
              .rd_clr_line_num(rd_clr_line_num),
174
              .rd_burst_cmd(rd_burst_cmd),
175
              .ARVALID(ARVALID),
176
              .ARREADY(ARREADY),
177
              .ARID(ARID),
178
              .RID(RID),
179
              .RDATA(RDATA_d),
180
              .RLAST(RLAST_d),
181
              .RVALID(RVALID_d),
182
              .RREADY(RREADY),
183
              .RREADY_out(RREADY_out)
184
              );
185
 
186
 
187
   dma_axi32_core0_axim_resp #(.CMD_DEPTH(2))
188
   dma_axi32_axim_rresp (
189
              .clk(clk),
190
              .reset(reset),
191
              .slverr(rd_slverr),
192
              .decerr(rd_decerr),
193
              .clr(rd_clr_pre),
194
              .clr_last(rd_clr_last),
195
              .ch_num_resp(rd_ch_num_resp),
196
              .resp_full(rd_cmd_full),
197
              .AID(ARID),
198
              .AVALID(ARVALID),
199
              .AREADY(ARREADY),
200
              .ID(RID),
201
              .RESP(RRESP_d),
202
              .VALID(RVALID_d),
203
              .READY(RREADY),
204
              .LAST(RLAST_d)
205
              );
206
 
207
 
208
endmodule
209
 
210
 
211
 
212
 
213
 

powered by: WebSVN 2.1.0

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