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

Subversion Repositories dma_ahb

[/] [dma_ahb/] [trunk/] [src/] [dma_ahb64/] [dma_ahb64_core0_ch_fifo_ctrl.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:33:02 2011
5
//--
6
//-- Source file: dma_ch_fifo_ctrl.v
7
//---------------------------------------------------------
8
 
9
 
10
 
11
module dma_ahb64_core0_ch_fifo_ctrl (clk,reset,end_swap,joint_in_prog,wr_outstanding,ch_update,fifo_wr,fifo_wdata,fifo_wsize,wr_align,rd_incr,fifo_rd,fifo_rsize,rd_align,wr_incr,wr_single,wr_burst_size,rd_clr_line,wr_clr_line,wr_next_size,fifo_rd_valid,fifo_rdata,fifo_wr_ready,fifo_overflow,fifo_underflow);
12
 
13
   input               clk;
14
   input               reset;
15
 
16
   input [1:0]               end_swap;
17
 
18
   input               joint_in_prog;
19
   input               wr_outstanding;
20
   input               ch_update;
21
 
22
   input               fifo_wr;
23
   input [64-1:0]      fifo_wdata;
24
   input [4-1:0]      fifo_wsize;
25
   input [3-1:0]      wr_align;
26
   input               rd_incr;
27
 
28
   input               fifo_rd;
29
   input [4-1:0]      fifo_rsize;
30
   input [3-1:0]      rd_align;
31
   input               wr_incr;
32
   input               wr_single;
33
   input [8-1:0]     wr_burst_size;
34
 
35
   input               rd_clr_line;
36
   input               wr_clr_line;
37
   input [4-1:0]      wr_next_size;
38
 
39
   output               fifo_rd_valid;
40
   output [64-1:0]     fifo_rdata;
41
   output               fifo_wr_ready;
42
   output               fifo_overflow;
43
   output               fifo_underflow;
44
 
45
 
46
 
47
   //outputs of wr slicer
48
   wire               slice_wr;
49
   wire               slice_wr_fifo;
50
   wire [5-1:0]       slice_wr_ptr;
51
   wire [8-1:0]       slice_bsel;
52
   wire [64-1:0]       slice_wdata;
53
   wire [4-1:0]       slice_wsize;
54
 
55
   //outputs of rd slicer
56
   wire               slice_rd;
57
   wire [64-1:0]       slice_rdata;
58
   wire [4-1:0]       slice_rsize;
59
   wire [5-1:0]       slice_rd_ptr;
60
   wire               slice_rd_valid;
61
 
62
   //outputs of fifo ptr
63
   wire [5-1:0]       rd_ptr;
64
   wire [5-1:0]       wr_ptr;
65
   wire [4-1:0]       rd_line_remain;
66
   wire               joint_delay;
67
   wire               fifo_wr_ready;
68
   wire               fifo_overflow;
69
   wire               fifo_underflow;
70
 
71
   //outputs of fifo
72
   wire [64-1:0]       DOUT;
73
 
74
   wire               fifo_wr_d;
75
   reg [64-1:0]           fifo_wdata_d;
76
   wire               fifo_wr_valid;
77
   wire [64-1:0]       fifo_wdata_valid;
78
 
79
 
80
   prgen_delay #(1) delay_fifo_wr (.clk(clk), .reset(reset), .din(fifo_wr), .dout(fifo_wr_d));
81
 
82
   always @(posedge clk or posedge reset)
83
     if (reset)
84
       fifo_wdata_d <= #1 {64{1'b0}};
85
     else if (fifo_wr)
86
       fifo_wdata_d <= #1 fifo_wdata;
87
 
88
   assign               fifo_wr_valid    = joint_delay ? fifo_wr_d : fifo_wr;
89
   assign               fifo_wdata_valid = joint_delay ? fifo_wdata_d : fifo_wdata;
90
 
91
 
92
 
93
   assign               fifo_rdata    = slice_rdata & {64{slice_rd_valid}};
94
   assign               fifo_rd_valid = slice_rd_valid;
95
 
96
 
97
   dma_ahb64_core0_ch_wr_slicer
98
   dma_ahb64_ch_wr_slicer (
99
            .clk(clk),
100
            .reset(reset),
101
            .ch_update(ch_update),
102
            .rd_clr_line(rd_clr_line),
103
            .fifo_wr(fifo_wr_valid),
104
            .fifo_wdata(fifo_wdata_valid),
105
            .fifo_wsize(fifo_wsize),
106
            .wr_align(wr_align),
107
            .wr_ptr(wr_ptr),
108
            .rd_incr(rd_incr),
109
            .end_swap(end_swap),
110
            .slice_wr(slice_wr),
111
            .slice_wr_fifo(slice_wr_fifo),
112
            .slice_wr_ptr(slice_wr_ptr),
113
            .slice_bsel(slice_bsel),
114
            .slice_wdata(slice_wdata),
115
            .slice_wsize(slice_wsize)
116
            );
117
 
118
 
119
   dma_ahb64_core0_ch_rd_slicer
120
   dma_ahb64_ch_rd_slicer (
121
            .clk(clk),
122
            .reset(reset),
123
            .fifo_rd(fifo_rd),
124
            .fifo_rdata(DOUT),
125
            .fifo_rsize(fifo_rsize),
126
            .rd_align(rd_align),
127
            .rd_ptr(rd_ptr),
128
            .rd_line_remain(rd_line_remain),
129
            .wr_incr(wr_incr),
130
            .wr_single(wr_single),
131
            .slice_rd(slice_rd),
132
            .slice_rdata(slice_rdata),
133
            .slice_rd_valid(slice_rd_valid),
134
            .slice_rsize(slice_rsize),
135
            .slice_rd_ptr(slice_rd_ptr)
136
            );
137
 
138
 
139
   dma_ahb64_core0_ch_fifo_ptr
140
   dma_ahb64_ch_fifo_ptr (
141
               .clk(clk),
142
               .reset(reset),
143
               .joint_in_prog(joint_in_prog),
144
               .wr_outstanding(wr_outstanding),
145
               .ch_update(ch_update),
146
               .fifo_rd(fifo_rd),
147
               .fifo_rsize(fifo_rsize),
148
               .slice_wr(slice_wr),
149
               .slice_wr_fifo(slice_wr_fifo),
150
               .slice_wsize(slice_wsize),
151
               .slice_rd(slice_rd),
152
               .slice_rsize(slice_rsize),
153
               .rd_clr_line(rd_clr_line),
154
               .wr_clr_line(wr_clr_line),
155
               .rd_ptr(rd_ptr),
156
               .wr_ptr(wr_ptr),
157
               .rd_line_remain(rd_line_remain),
158
               .joint_delay(joint_delay),
159
               .wr_next_size(wr_next_size),
160
               .wr_burst_size(wr_burst_size),
161
               .fifo_wr_ready(fifo_wr_ready),
162
               .fifo_overflow(fifo_overflow),
163
               .fifo_underflow(fifo_underflow)
164
               );
165
 
166
 
167
   dma_ahb64_core0_ch_fifo
168
   dma_ahb64_ch_fifo (
169
           .CLK(clk),
170
           .WR(slice_wr_fifo),
171
           .RD(slice_rd),
172
           .WR_ADDR(slice_wr_ptr[5-1:3] ),
173
           .RD_ADDR(slice_rd_ptr[5-1:3]),
174
           .DIN(slice_wdata),
175
           .BSEL(slice_bsel),
176
           .DOUT(DOUT)
177
           );
178
 
179
 
180
endmodule
181
 
182
 
183
 
184
 
185
 
186
 

powered by: WebSVN 2.1.0

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