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

Subversion Repositories dma_axi

[/] [dma_axi/] [trunk/] [src/] [dma_axi32/] [dma_axi32_core0_ch_remain.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:53 2011
5
//--
6
//-- Source file: dma_ch_remain.v
7
//---------------------------------------------------------
8
 
9
 
10
 
11
module dma_axi32_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);
12
 
13
   input                    clk;
14
   input             reset;
15
 
16
   input             ch_update;
17
   input             wr_outstanding;
18
   input             rd_outstanding;
19
   input             load_req_in_prog;
20
 
21
   input             rd_line_cmd;
22
   input             rd_burst_start;
23
   input [7-1:0]   rd_burst_size;
24
   input             rd_transfer;
25
   input [3-1:0]    rd_transfer_size;
26
 
27
   input             wr_clr_line;
28
   input             wr_burst_start;
29
   input [7-1:0]   wr_burst_size;
30
   input             wr_transfer;
31
   input [3-1:0]    wr_transfer_size;
32
 
33
   output [5:0]     rd_gap;
34
   output [5:0]     wr_fullness;
35
 
36
 
37
 
38
   wire             rd_line_cmd_valid;
39
   reg [5+1:0]         rd_gap_reg; //signed
40
   reg [5+1:0]         wr_fullness_reg; //signed
41
 
42
   wire             rd_burst_qual;
43
   wire             wr_burst_qual;
44
   reg [7-1:0]     rd_burst_size_valid;
45
   wire [3-1:0]     rd_transfer_size_valid;
46
   wire [3-1:0]     wr_transfer_size_valid;
47
   reg [7-1:0]     wr_burst_size_valid;
48
 
49
 
50
 
51
 
52
   assign             rd_line_cmd_valid = rd_line_cmd & rd_burst_start;
53
 
54
   assign             rd_burst_qual = rd_burst_start & (~load_req_in_prog);
55
   assign             wr_burst_qual = wr_burst_start;
56
 
57
   always @(posedge clk or posedge reset)
58
     if (reset)
59
       rd_burst_size_valid <= #1 {7{1'b0}};
60
     else if (rd_burst_qual)
61
       rd_burst_size_valid <= #1 rd_burst_size;
62
     else
63
       rd_burst_size_valid <= #1 {7{1'b0}};
64
 
65
   always @(posedge clk or posedge reset)
66
     if (reset)
67
       wr_burst_size_valid <= #1 {7{1'b0}};
68
     else if (wr_burst_qual)
69
       wr_burst_size_valid <= #1 wr_burst_size;
70
     else
71
       wr_burst_size_valid <= #1 {7{1'b0}};
72
 
73
   assign             rd_transfer_size_valid = {3{rd_transfer}} & rd_transfer_size;
74
   assign             wr_transfer_size_valid = {3{wr_transfer}} & wr_transfer_size;
75
 
76
 
77
   //for rd bursts
78
   always @(posedge clk or posedge reset)
79
     if (reset)
80
       rd_gap_reg <= #1 {1'b0, 1'b1, {5{1'b0}}};
81
     else if (ch_update)
82
       rd_gap_reg <= #1 {1'b0, 1'b1, {5{1'b0}}};
83
     else
84
       rd_gap_reg <= #1 rd_gap_reg -
85
             rd_burst_size_valid +
86
             wr_transfer_size_valid;
87
 
88
 
89
   assign rd_gap = rd_gap_reg[5+1] ? 'd0 : rd_gap_reg[5:0];
90
 
91
 
92
   //for wr bursts
93
   always @(posedge clk or posedge reset)
94
     if (reset)
95
       wr_fullness_reg <= #1 {5+1{1'b0}};
96
     else if (ch_update)
97
       wr_fullness_reg <= #1 {5+1{1'b0}};
98
     else
99
       wr_fullness_reg <= #1 wr_fullness_reg -
100
              wr_burst_size_valid +
101
              rd_transfer_size_valid;
102
 
103
 
104
   assign wr_fullness = wr_fullness_reg[5+1] ? 'd0 : wr_fullness_reg[5:0];
105
 
106
endmodule
107
 
108
 
109
 
110
 
111
 

powered by: WebSVN 2.1.0

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