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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi64/] [dma_axi64_core0_ch_remain.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:56 2011
33
//--
34
//-- Source file: dma_ch_remain.v
35
//---------------------------------------------------------
36
 
37
 
38
 
39
module dma_axi64_core0_ch_remain(clk,reset,ch_update,wr_outstanding,rd_outstanding,load_req_in_prog,rd_line_cmd,rd_burst_start,rd_burst_size,rd_transfer,rd_transfer_size,wr_clr_line,wr_burst_start,wr_burst_size,wr_transfer,wr_transfer_size,rd_gap,wr_fullness);
40
 
41
   input                    clk;
42
   input             reset;
43
 
44
   input             ch_update;
45
   input             wr_outstanding;
46
   input             rd_outstanding;
47
   input             load_req_in_prog;
48
 
49
   input             rd_line_cmd;
50
   input             rd_burst_start;
51
   input [8-1:0]   rd_burst_size;
52
   input             rd_transfer;
53
   input [4-1:0]    rd_transfer_size;
54
 
55
   input             wr_clr_line;
56
   input             wr_burst_start;
57
   input [8-1:0]   wr_burst_size;
58
   input             wr_transfer;
59
   input [4-1:0]    wr_transfer_size;
60
 
61
   output [5:0]     rd_gap;
62
   output [5:0]     wr_fullness;
63
 
64
 
65
 
66
   wire             rd_line_cmd_valid;
67
   reg [5+1:0]         rd_gap_reg; //signed
68
   reg [5+1:0]         wr_fullness_reg; //signed
69
 
70
   wire             rd_burst_qual;
71
   wire             wr_burst_qual;
72
   reg [8-1:0]     rd_burst_size_valid;
73
   wire [4-1:0]     rd_transfer_size_valid;
74
   wire [4-1:0]     wr_transfer_size_valid;
75
   reg [8-1:0]     wr_burst_size_valid;
76
 
77
 
78
 
79
 
80
   assign             rd_line_cmd_valid = rd_line_cmd & rd_burst_start;
81
 
82
   assign             rd_burst_qual = rd_burst_start & (~load_req_in_prog);
83
   assign             wr_burst_qual = wr_burst_start;
84
 
85
   always @(posedge clk or posedge reset)
86
     if (reset)
87
       rd_burst_size_valid <= #1 {8{1'b0}};
88
     else if (rd_burst_qual)
89
       rd_burst_size_valid <= #1 rd_burst_size;
90
     else
91
       rd_burst_size_valid <= #1 {8{1'b0}};
92
 
93
   always @(posedge clk or posedge reset)
94
     if (reset)
95
       wr_burst_size_valid <= #1 {8{1'b0}};
96
     else if (wr_burst_qual)
97
       wr_burst_size_valid <= #1 wr_burst_size;
98
     else
99
       wr_burst_size_valid <= #1 {8{1'b0}};
100
 
101
   assign             rd_transfer_size_valid = {4{rd_transfer}} & rd_transfer_size;
102
   assign             wr_transfer_size_valid = {4{wr_transfer}} & wr_transfer_size;
103
 
104
 
105
   //for rd bursts
106
   always @(posedge clk or posedge reset)
107
     if (reset)
108
       rd_gap_reg <= #1 {1'b0, 1'b1, {5{1'b0}}};
109
     else if (ch_update)
110
       rd_gap_reg <= #1 {1'b0, 1'b1, {5{1'b0}}};
111
     else
112
       rd_gap_reg <= #1 rd_gap_reg -
113
             rd_burst_size_valid +
114
             wr_transfer_size_valid;
115
 
116
 
117
   assign rd_gap = rd_gap_reg[5+1] ? 'd0 : rd_gap_reg[5:0];
118
 
119
 
120
   //for wr bursts
121
   always @(posedge clk or posedge reset)
122
     if (reset)
123
       wr_fullness_reg <= #1 {5+1{1'b0}};
124
     else if (ch_update)
125
       wr_fullness_reg <= #1 {5+1{1'b0}};
126
     else
127
       wr_fullness_reg <= #1 wr_fullness_reg -
128
              wr_burst_size_valid +
129
              rd_transfer_size_valid;
130
 
131
 
132
   assign wr_fullness = wr_fullness_reg[5+1] ? 'd0 : wr_fullness_reg[5:0];
133
 
134
endmodule
135
 
136
 
137
 
138
 
139
 

powered by: WebSVN 2.1.0

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