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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi64/] [dma_axi64_core0_axim_rd.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 eyalhoc
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  Author: Eyal Hochberg                                      ////
4
////          eyal@provartec.com                                 ////
5
////                                                             ////
6
////  Downloaded from: http://www.opencores.org                  ////
7
/////////////////////////////////////////////////////////////////////
8
////                                                             ////
9
//// Copyright (C) 2010 Provartec LTD                            ////
10
//// www.provartec.com                                           ////
11
//// info@provartec.com                                          ////
12
////                                                             ////
13
//// This source file may be used and distributed without        ////
14
//// restriction provided that this copyright statement is not   ////
15
//// removed from the file and that any derivative work contains ////
16
//// the original copyright notice and the associated disclaimer.////
17
////                                                             ////
18
//// This source file is free software; you can redistribute it  ////
19
//// and/or modify it under the terms of the GNU Lesser General  ////
20
//// Public License as published by the Free Software Foundation.////
21
////                                                             ////
22
//// This source is distributed in the hope that it will be      ////
23
//// useful, but WITHOUT ANY WARRANTY; without even the implied  ////
24
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR     ////
25
//// PURPOSE.  See the GNU Lesser General Public License for more////
26
//// details. http://www.gnu.org/licenses/lgpl.html              ////
27
////                                                             ////
28
/////////////////////////////////////////////////////////////////////
29 2 eyalhoc
//---------------------------------------------------------
30
//-- File generated by RobustVerilog parser
31
//-- Version: 1.0
32
//-- Invoked Fri Mar 25 23:36:54 2011
33
//--
34
//-- Source file: dma_core_axim_rd.v
35
//---------------------------------------------------------
36
 
37
 
38
 
39
module dma_axi64_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);
40
 
41
   input               clk;
42
   input               reset;
43
 
44
   output               load_wr;
45
   output [2:0]           load_wr_num;
46
   output [1:0]           load_wr_cycle;
47
   output [64-1:0]     load_wdata;
48
 
49
   input               joint_stall;
50
   input               joint_req;
51
 
52
   //command
53
   input               rd_line_cmd;
54
   input               load_req_in_prog;
55
   input               rd_cmd_port;
56
   input [2:0]               rd_ch_num;
57
   input               rd_burst_start;
58
   input [32-1:0]      rd_burst_addr;
59
   input [8-1:0]     rd_burst_size;
60
   output               rd_cmd_pending;
61
   output               rd_cmd_split;
62
   output               rd_cmd_line;
63
   output [2:0]           rd_cmd_num;
64
   output               rd_cmd_full;
65
 
66
   //data
67
   output               ch_fifo_wr;
68
   output [64-1:0]     ch_fifo_wdata;
69
   output [4-1:0]     ch_fifo_wsize;
70
   output [2:0]           ch_fifo_wr_num;
71
   output [2:0]           rd_transfer_num;
72
   output               rd_transfer;
73
   output [4-1:0]     rd_transfer_size;
74
   output               rd_burst_cmd;
75
   output               rd_clr_line;
76
   output [2:0]           rd_clr_line_num;
77
 
78
   //resp
79
   output               rd_slverr;
80
   output               rd_decerr;
81
   output               rd_clr;
82
   output               rd_clr_load;
83
   output               rd_clr_last;
84
   output [2:0]           rd_ch_num_resp;
85
 
86
   output               page_cross;
87
 
88
   output [32-1:0]     ARADDR;
89
   output               ARPORT;
90
   output [`LEN_BITS-1:0]     ARLEN;
91
   output [1:0]           ARSIZE;
92
   output               ARVALID;
93
   input               ARREADY;
94
   input               AWVALID;
95
 
96
   input [64-1:0]      RDATA;
97
   input [1:0]               RRESP;
98
   input               RLAST;
99
   input               RVALID;
100
   output               RREADY_out;
101
 
102
   output               axim_timeout_ar;
103
   output [2:0]           axim_timeout_num_ar;
104
 
105
 
106
   wire [`CMD_BITS-1:0]       ARID;
107
   wire               RVALID_d;
108
   wire [`CMD_BITS-1:0]          RID;
109
   reg [64-1:0]           RDATA_d;
110
   reg [1:0]               RRESP_d;
111
   reg                   RLAST_d;
112
   reg [4-1:0]           rd_transfer_size;
113
 
114
   wire               rd_clr_pre;
115
   wire               RREADY;
116
 
117
 
118
 
119
   //don't give peripheral clr on cmd read
120
   assign               rd_clr      = rd_clr_pre & (~rd_clr_last);
121
   assign               rd_clr_load = rd_clr_pre & rd_clr_last;
122
 
123
   prgen_delay #(1) delay_ready(.clk(clk), .reset(reset), .din(RREADY_out), .dout(RREADY));
124
 
125
   prgen_delay #(1) delay_rvalid(.clk(clk), .reset(reset), .din(RVALID), .dout(RVALID_d));
126
 
127
   always @(posedge clk or posedge reset)
128
     if (reset)
129
       begin
130
      RRESP_d <= #1 2'b00;
131
      RDATA_d <= #1 {64{1'b0}};
132
      RLAST_d <= #1 1'b0;
133
       end
134
     else if (RVALID)
135
       begin
136
      RRESP_d <= #1 RRESP;
137
      RDATA_d <= #1 RDATA;
138
      RLAST_d <= #1 RLAST;
139
       end
140
 
141
   always @(/*AUTOSENSE*/RID)
142
     begin
143
    case (RID[5:4])
144
      2'b00 : rd_transfer_size = 4'd1;
145
      2'b01 : rd_transfer_size = 4'd2;
146
      2'b10 : rd_transfer_size = 4'd4;
147
      2'b11 : rd_transfer_size = 4'd8;
148
    endcase
149
     end
150
 
151
 
152
   dma_axi64_core0_axim_cmd
153
   dma_axi64_axim_rcmd (
154
             .clk(clk),
155
             .reset(reset),
156
             .end_line_cmd(rd_line_cmd),
157
             .extra_bit(load_req_in_prog),
158
             .cmd_port(rd_cmd_port),
159
             .ch_num(rd_ch_num),
160
             .joint_req(joint_req),
161
             .burst_start(rd_burst_start),
162
             .burst_addr(rd_burst_addr),
163
             .burst_size(rd_burst_size),
164
             .cmd_pending(rd_cmd_pending),
165
             .cmd_full(rd_cmd_full),
166
             .cmd_split(rd_cmd_split),
167
             .cmd_num(rd_cmd_num),
168
             .cmd_line(rd_cmd_line),
169
             .page_cross(page_cross),
170
             .AID(ARID),
171
             .AADDR(ARADDR),
172
             .APORT(ARPORT),
173
             .ALEN(ARLEN),
174
             .ASIZE(ARSIZE),
175
             .AVALID(ARVALID),
176
             .AREADY(ARREADY),
177
             .AWVALID(AWVALID),
178
             .AJOINT(),
179
             .axim_timeout_num(axim_timeout_num_ar),
180
             .axim_timeout(axim_timeout_ar)
181
             );
182
 
183
 
184
   dma_axi64_core0_axim_rdata
185
   dma_axi64_axim_rdata (
186
              .clk(clk),
187
              .reset(reset),
188
              .load_wr(load_wr),
189
              .load_wr_num(load_wr_num),
190
              .load_wr_cycle(load_wr_cycle),
191
              .load_wdata(load_wdata),
192
              .joint_stall(joint_stall),
193
              .ch_fifo_wr(ch_fifo_wr),
194
              .ch_fifo_wdata(ch_fifo_wdata),
195
              .ch_fifo_wsize(ch_fifo_wsize),
196
              .ch_fifo_wr_num(ch_fifo_wr_num),
197
              .rd_transfer_num(rd_transfer_num),
198
              .rd_transfer(rd_transfer),
199
              .rd_transfer_size(rd_transfer_size),
200
              .rd_clr_line(rd_clr_line),
201
              .rd_clr_line_num(rd_clr_line_num),
202
              .rd_burst_cmd(rd_burst_cmd),
203
              .ARVALID(ARVALID),
204
              .ARREADY(ARREADY),
205
              .ARID(ARID),
206
              .RID(RID),
207
              .RDATA(RDATA_d),
208
              .RLAST(RLAST_d),
209
              .RVALID(RVALID_d),
210
              .RREADY(RREADY),
211
              .RREADY_out(RREADY_out)
212
              );
213
 
214
 
215
   dma_axi64_core0_axim_resp #(.CMD_DEPTH(4))
216
   dma_axi64_axim_rresp (
217
              .clk(clk),
218
              .reset(reset),
219
              .slverr(rd_slverr),
220
              .decerr(rd_decerr),
221
              .clr(rd_clr_pre),
222
              .clr_last(rd_clr_last),
223
              .ch_num_resp(rd_ch_num_resp),
224
              .resp_full(rd_cmd_full),
225
              .AID(ARID),
226
              .AVALID(ARVALID),
227
              .AREADY(ARREADY),
228
              .ID(RID),
229
              .RESP(RRESP_d),
230
              .VALID(RVALID_d),
231
              .READY(RREADY),
232
              .LAST(RLAST_d)
233
              );
234
 
235
 
236
endmodule
237
 
238
 
239
 
240
 
241
 

powered by: WebSVN 2.1.0

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