diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-02-28 16:07:44 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-03-03 20:42:36 -0600 |
| commit | 872349eb3a3a508abee028e75da546692eb8e0e7 (patch) | |
| tree | acdab5296943bb067bae849f82e3d4756ed14635 /rtl/dma_axi32/dma_axi32_core0_ch.v | |
| parent | 6e67445a93e97f6353aea0e8e79acf2b60b46985 (diff) | |
rtl: add dma_axi32
Diffstat (limited to 'rtl/dma_axi32/dma_axi32_core0_ch.v')
| -rw-r--r-- | rtl/dma_axi32/dma_axi32_core0_ch.v | 788 |
1 files changed, 788 insertions, 0 deletions
diff --git a/rtl/dma_axi32/dma_axi32_core0_ch.v b/rtl/dma_axi32/dma_axi32_core0_ch.v new file mode 100644 index 0000000..797a015 --- /dev/null +++ b/rtl/dma_axi32/dma_axi32_core0_ch.v @@ -0,0 +1,788 @@ +/////////////////////////////////////////////////////////////////////
+//// ////
+//// Author: Eyal Hochberg ////
+//// eyal@provartec.com ////
+//// ////
+//// Downloaded from: http://www.opencores.org ////
+/////////////////////////////////////////////////////////////////////
+//// ////
+//// Copyright (C) 2010 Provartec LTD ////
+//// www.provartec.com ////
+//// info@provartec.com ////
+//// ////
+//// This source file may be used and distributed without ////
+//// restriction provided that this copyright statement is not ////
+//// removed from the file and that any derivative work contains ////
+//// the original copyright notice and the associated disclaimer.////
+//// ////
+//// This source file is free software; you can redistribute it ////
+//// and/or modify it under the terms of the GNU Lesser General ////
+//// Public License as published by the Free Software Foundation.////
+//// ////
+//// This source is distributed in the hope that it will be ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
+//// PURPOSE. See the GNU Lesser General Public License for more////
+//// details. http://www.gnu.org/licenses/lgpl.html ////
+//// ////
+/////////////////////////////////////////////////////////////////////
+//--------------------------------------------------------- +//-- File generated by RobustVerilog parser +//-- Version: 1.0 +//-- Invoked Fri Mar 25 23:34:52 2011 +//-- +//-- Source file: dma_ch.v +//--------------------------------------------------------- + + + + +module dma_axi32_core0_ch (clk,reset,scan_en,pclk,clken,pclken,psel,penable,paddr,pwrite,pwdata,prdata,pslverr,periph_tx_req,periph_tx_clr,periph_rx_req,periph_rx_clr,rd_cmd_split,rd_cmd_line,rd_clr_line,rd_clr,rd_clr_load,rd_slverr,rd_decerr,wr_cmd_split,wr_cmd_pending,wr_clr_line,wr_clr,wr_clr_last,wr_slverr,wr_decerr,load_wr,load_wr_cycle,load_wdata,load_req_in_prog,int_all_proc,ch_start,idle,ch_active,ch_rd_active,ch_wr_active,wr_last_cmd,rd_line_cmd,wr_line_cmd,rd_go_next_line,wr_go_next_line,rd_ready,rd_burst_start,rd_burst_addr,rd_burst_size,rd_tokens,rd_port_num,rd_periph_delay,rd_clr_valid,rd_transfer,rd_transfer_size,rd_clr_stall,wr_ready,wr_burst_start,wr_burst_addr,wr_burst_size,wr_tokens,wr_port_num,wr_periph_delay,wr_clr_valid,wr_transfer,wr_transfer_size,wr_next_size,wr_clr_stall,wr_incr,timeout_aw,timeout_w,timeout_ar,wdt_timeout,fifo_wr,fifo_wdata,fifo_wsize,fifo_rd,fifo_rsize,fifo_rd_valid,fifo_rdata,fifo_wr_ready,joint_mode,joint_remote,rd_page_cross,wr_page_cross,joint_in_prog,joint_not_in_prog,joint_mux_in_prog,joint_req); + + input clk; + input reset; + input scan_en; + + input pclk; + input clken; + input pclken; + input psel; + input penable; + input [7:0] paddr; + input pwrite; + input [31:0] pwdata; + output [31:0] prdata; + output pslverr; + + input [31:1] periph_tx_req; + output [31:1] periph_tx_clr; + input [31:1] periph_rx_req; + output [31:1] periph_rx_clr; + + input rd_cmd_split; + input rd_cmd_line; + input rd_clr_line; + input rd_clr; + input rd_clr_load; + input rd_slverr; + input rd_decerr; + + input wr_cmd_split; + input wr_cmd_pending; + input wr_clr_line; + input wr_clr; + input wr_clr_last; + input wr_slverr; + input wr_decerr; + + input load_wr; + input [1:0] load_wr_cycle; + input [32-1:0] load_wdata; + output load_req_in_prog; + + output [1-1:0] int_all_proc; + input ch_start; + output idle; + output ch_active; + output ch_rd_active; + output ch_wr_active; + output wr_last_cmd; + output rd_line_cmd; + output wr_line_cmd; + output rd_go_next_line; + output wr_go_next_line; + + output rd_ready; + input rd_burst_start; + output [32-1:0] rd_burst_addr; + output [7-1:0] rd_burst_size; + output [`TOKEN_BITS-1:0] rd_tokens; + output rd_port_num; + output [`DELAY_BITS-1:0] rd_periph_delay; + output rd_clr_valid; + input rd_transfer; + input [3-1:0] rd_transfer_size; + output rd_clr_stall; + + output wr_ready; + input wr_burst_start; + output [32-1:0] wr_burst_addr; + output [7-1:0] wr_burst_size; + output [`TOKEN_BITS-1:0] wr_tokens; + output wr_port_num; + output [`DELAY_BITS-1:0] wr_periph_delay; + output wr_clr_valid; + input wr_transfer; + input [3-1:0] wr_transfer_size; + input [3-1:0] wr_next_size; + output wr_clr_stall; + output wr_incr; + + input timeout_aw; + input timeout_w; + input timeout_ar; + input wdt_timeout; + + input fifo_wr; + input [32-1:0] fifo_wdata; + input [3-1:0] fifo_wsize; + + input fifo_rd; + input [3-1:0] fifo_rsize; + + output fifo_rd_valid; + output [32-1:0] fifo_rdata; + output fifo_wr_ready; + + input joint_mode; + input joint_remote; + input rd_page_cross; + input wr_page_cross; + output joint_in_prog; + output joint_not_in_prog; + output joint_mux_in_prog; + output joint_req; + + + + + //outputs of reg + wire [32-1:0] load_addr; + wire load_in_prog; + wire load_req_in_prog; + wire ch_update; + wire [32-1:0] rd_start_addr; + wire [32-1:0] wr_start_addr; + wire [10-1:0] x_size; + wire [10-`X_BITS-1:0] y_size; + wire block; + wire joint; + wire [`FRAME_BITS-1:0] frame_width; + wire [2-1:0] width_align; + wire [`DELAY_BITS-1:0] rd_periph_delay; + wire [`DELAY_BITS-1:0] wr_periph_delay; + wire rd_periph_block; + wire wr_periph_block; + wire [`TOKEN_BITS-1:0] rd_tokens; + wire [`TOKEN_BITS-1:0] wr_tokens; + wire rd_port_num; + wire wr_port_num; + wire [`OUT_BITS-1:0] rd_outs_max; + wire [`OUT_BITS-1:0] wr_outs_max; + wire [`WAIT_BITS-1:0] rd_wait_limit; + wire [`WAIT_BITS-1:0] wr_wait_limit; + wire rd_incr; + wire wr_incr; + wire [7-1:0] rd_burst_max_size; + wire [7-1:0] wr_burst_max_size; + wire [4:0] rd_periph_num; + wire [4:0] wr_periph_num; + wire wr_outstanding; + wire rd_outstanding; + wire ch_retry_wait; + wire ch_rd_active; + wire ch_wr_active; + wire ch_in_prog; + wire [1:0] end_swap; + + //outputs of rd offsets + wire [10-1:0] rd_x_offset; + wire [10-`X_BITS-1:0] rd_y_offset; + wire [10-1:0] rd_x_remain; + wire [10-`X_BITS-1:0] rd_clr_remain; + wire rd_ch_end; + wire rd_go_next_line; + wire rd_line_empty; + wire rd_empty; + wire [2-1:0] rd_align; + + //outputs of wr offsets + wire [10-1:0] wr_x_offset; + wire [10-`X_BITS-1:0] wr_y_offset; + wire [10-1:0] wr_x_remain; + wire [10-`X_BITS-1:0] wr_clr_remain; + wire wr_ch_end; + wire wr_go_next_line; + wire wr_line_empty; + wire wr_empty; + wire [2-1:0] wr_align; + wire wr_ch_end_pre; + reg wr_ch_end_reg; + + //outputs of remain + wire [5:0] rd_gap; + wire [5:0] wr_fullness; + + //outputs of outs rd + wire rd_cmd_outs; + wire rd_clr_outs; + wire [`OUT_BITS-1:0] rd_outs; + wire rd_outs_empty; + wire outs_empty; + wire rd_stall; + wire timeout_rresp; + + //outputs of outs wr + wire wr_cmd_outs; + wire wr_clr_outs; + wire [`OUT_BITS-1:0] wr_outs; + wire wr_outs_empty; + wire wr_stall; + wire wr_stall_pre; + wire timeout_wresp; + + //outputs of calc rd + wire rd_burst_last; + wire [32-1:0] rd_burst_addr; + wire [7-1:0] rd_burst_size; + wire rd_burst_ready; + wire rd_joint_ready; + wire rd_joint_flush; + wire joint_burst_req; + + //outputs of calc wr + wire wr_burst_last; + wire [32-1:0] wr_burst_addr; + wire [7-1:0] wr_burst_size; + wire wr_burst_ready; + wire wr_single; + wire wr_joint_ready; + wire wr_joint_flush; + wire joint_line_req; + + //outputs of rd periph mux + wire [31:1] periph_rx_clr; + wire rd_periph_ready; + + //outputs of wr periph mux + wire [31:1] periph_tx_clr; + wire wr_periph_ready; + + //outputs of rd wait + wire rd_wait_ready; + + //outputs of wr wait + wire wr_wait_ready; + + //outputs of fifo_ctrl + wire fifo_wr_ready; + wire fifo_overflow; + wire fifo_underflow; + + wire rd_clr_block_pre; + wire rd_clr_block; + wire rd_clr_valid; + wire wr_clr_block_pre; + wire wr_clr_block; + wire wr_clr_valid; + wire wr_clr_mux; + + wire rd_cmd_line_d; + wire rd_clr_stall; + wire wr_clr_stall; + wire allow_line_cmd; + + wire load_cmd; + + wire [4:0] timeout_bus; + + wire joint_flush; + wire page_cross; + reg joint_cross_reg; + wire joint_cross; + reg rd_joint_not_in_prog; + reg wr_joint_not_in_prog; + wire joint_not_in_prog; + reg rd_joint_in_prog; + reg wr_joint_in_prog; + wire joint_in_prog; + wire rd_clr_outs_d_pre; + wire rd_clr_outs_d; + wire wr_clr_outs_d_pre; + wire wr_clr_outs_d; + wire rd_clr_d; + wire wr_clr_d; + wire access_port0_mux; + wire access_port1_mux; + + wire idle_pre; + wire clk_en; + wire gclk; + + + assign ch_active = ch_in_prog | load_in_prog; + + assign outs_empty = rd_outs_empty & wr_outs_empty; + + + + assign rd_clr_outs_d_pre = rd_clr_outs & (~rd_burst_start); + assign wr_clr_outs_d_pre = wr_clr_outs & (~wr_burst_start); + + prgen_delay #(1) delay_rd_clr_outs (.clk(clk), .reset(reset), .din(rd_clr_outs_d_pre), .dout(rd_clr_outs_d)); + prgen_delay #(1) delay_wr_clr_outs (.clk(clk), .reset(reset), .din(wr_clr_outs_d_pre), .dout(wr_clr_outs_d)); + + prgen_delay #(1) delay_rd_clr (.clk(clk), .reset(reset), .din(rd_clr), .dout(rd_clr_d)); + prgen_delay #(1) delay_wr_clr (.clk(clk), .reset(reset), .din(wr_clr), .dout(wr_clr_d)); + + always @(posedge clk or posedge reset) + if (reset) + rd_joint_not_in_prog <= #1 1'b0; + else if (ch_update) + rd_joint_not_in_prog <= #1 1'b0; + else if (rd_burst_start) + rd_joint_not_in_prog <= #1 (~joint_req); + else if (rd_outs_empty & rd_clr_outs_d) + rd_joint_not_in_prog <= #1 1'b0; + + always @(posedge clk or posedge reset) + if (reset) + wr_joint_not_in_prog <= #1 1'b0; + else if (ch_update) + wr_joint_not_in_prog <= #1 1'b0; + else if (wr_burst_start) + wr_joint_not_in_prog <= #1 (~joint_req); + else if (wr_outs_empty & wr_clr_outs_d) + wr_joint_not_in_prog <= #1 1'b0; + + always @(posedge clk or posedge reset) + if (reset) + rd_joint_in_prog <= #1 1'b0; + else if (ch_update) + rd_joint_in_prog <= #1 1'b0; + else if (rd_burst_start) + rd_joint_in_prog <= #1 joint_req; + else if (rd_outs_empty & rd_clr_outs_d) + rd_joint_in_prog <= #1 1'b0; + + always @(posedge clk or posedge reset) + if (reset) + wr_joint_in_prog <= #1 1'b0; + else if (ch_update) + wr_joint_in_prog <= #1 1'b0; + else if (wr_burst_start) + wr_joint_in_prog <= #1 joint_req; + else if (wr_outs_empty & wr_clr_outs_d) + wr_joint_in_prog <= #1 1'b0; + + always @(posedge clk or posedge reset) + if (reset) + joint_cross_reg <= #1 1'b0; + else if (ch_update) + joint_cross_reg <= #1 1'b0; + else if (page_cross & joint) + joint_cross_reg <= #1 1'b1; + else if (joint_not_in_prog & outs_empty) + joint_cross_reg <= #1 1'b0; + + assign joint_cross = joint_cross_reg; + assign page_cross = rd_page_cross | wr_page_cross; + assign joint_in_prog = rd_joint_in_prog | wr_joint_in_prog; + assign joint_not_in_prog = rd_joint_not_in_prog | wr_joint_not_in_prog; + + assign access_port0_mux = ((rd_port_num == 1'b0) | ((wr_port_num == 1'b0))) & 0; + assign access_port1_mux = ((rd_port_num == 1'b1) | ((wr_port_num == 1'b1))) & 0; + assign joint_mux_in_prog = joint_in_prog & (access_port0_mux | access_port1_mux); + + assign joint_req = joint & rd_joint_ready & wr_joint_ready & (~joint_cross) & (~load_req_in_prog); + assign joint_flush = rd_joint_flush | wr_joint_flush; + + + assign rd_clr_block = 1'b1; + assign wr_clr_block = 1'b1; + assign wr_clr_mux = wr_clr; + assign rd_clr_stall = 1'b0; + assign wr_clr_stall = 1'b0; + assign allow_line_cmd = 1'b0; + assign rd_line_cmd = 1'b0; + assign wr_line_cmd = 1'b0; + + assign rd_clr_valid = rd_clr_block & (~ch_retry_wait); + assign wr_clr_valid = wr_clr_block & (~ch_retry_wait); + + assign rd_ready = (~rd_stall) & (~rd_clr_stall) & + ch_rd_active & (rd_periph_ready | load_req_in_prog) & + rd_wait_ready & rd_burst_ready; + + + assign wr_ready = (~wr_stall) & (~wr_clr_stall) & + ch_wr_active & wr_periph_ready & + wr_wait_ready & wr_burst_ready; + + assign wr_last_cmd = wr_empty; + + assign load_cmd = load_req_in_prog & rd_burst_start; + + assign rd_cmd_outs = rd_burst_start | rd_cmd_split; + assign wr_cmd_outs = wr_burst_start | wr_cmd_split; + + assign rd_clr_outs = rd_clr | rd_clr_load; + assign wr_clr_outs = wr_clr; + + + assign timeout_bus = { + timeout_aw, + timeout_w, + {timeout_wresp & (~timeout_aw)}, + timeout_ar, + {timeout_rresp & (~timeout_ar)} + }; + + + assign clk_en = ch_active | ch_update | (~outs_empty) | (~rd_wait_ready) | (~wr_wait_ready); + + assign idle_pre = !clk_en; + prgen_delay #(1) delay_idle (.clk(clk), .reset(reset), .din(idle_pre), .dout(idle)); + + assign gclk = clk; + + + dma_axi32_core0_ch_reg + dma_axi32_ch_reg ( + .clk(pclk), + .clken(clken), + .pclken(pclken), + .reset(reset), + .psel(psel), + .penable(penable), + .paddr(paddr), + .pwrite(pwrite), + .pwdata(pwdata), + .prdata(prdata), + .pslverr(pslverr), + + .timeout_bus(timeout_bus), + .wdt_timeout(wdt_timeout), + + .ch_start(ch_start), + .load_wr(load_wr), + .load_wr_cycle(load_wr_cycle), + .load_wdata(load_wdata), + .load_in_prog(load_in_prog), + .load_req_in_prog(load_req_in_prog), + .rd_ch_end(rd_ch_end), + .wr_ch_end(wr_ch_end), + .wr_clr_last(wr_clr_last), + .rd_slverr(rd_slverr), + .rd_decerr(rd_decerr), + .wr_slverr(wr_slverr), + .wr_decerr(wr_decerr), + .int_all_proc(int_all_proc), + .ch_rd_active(ch_rd_active), + .ch_wr_active(ch_wr_active), + .ch_in_prog(ch_in_prog), + .wr_outstanding(wr_outstanding), + .rd_outstanding(rd_outstanding), + .ch_retry_wait(ch_retry_wait), + + .joint_mode(joint_mode), + .joint_remote(joint_remote), + .joint(joint), + .joint_cross(joint_cross), + .page_cross(page_cross), + .joint_flush(joint_flush), + + .rd_x_offset(rd_x_offset), + .rd_y_offset(rd_y_offset), + .wr_x_offset(wr_x_offset), + .wr_y_offset(wr_y_offset), + .rd_gap(rd_gap), + .wr_fullness(wr_fullness), + .fifo_overflow(fifo_overflow), + .fifo_underflow(fifo_underflow), + + .load_cmd(load_cmd), + .load_addr(load_addr), + + .ch_update(ch_update), + .rd_start_addr(rd_start_addr), + .wr_start_addr(wr_start_addr), + .x_size(x_size), + .y_size(y_size), + + .rd_burst_max_size(rd_burst_max_size), + .wr_burst_max_size(wr_burst_max_size), + .rd_periph_delay(rd_periph_delay), + .wr_periph_delay(wr_periph_delay), + .rd_periph_block(rd_periph_block), + .wr_periph_block(wr_periph_block), + .rd_tokens(rd_tokens), + .wr_tokens(wr_tokens), + .end_swap(end_swap), + .rd_port_num(rd_port_num), + .wr_port_num(wr_port_num), + .rd_outs_max(rd_outs_max), + .wr_outs_max(wr_outs_max), + .rd_outs(rd_outs), + .wr_outs(wr_outs), + .outs_empty(outs_empty), + .rd_wait_limit(rd_wait_limit), + .wr_wait_limit(wr_wait_limit), + .rd_periph_num(rd_periph_num), + .wr_periph_num(wr_periph_num), + .rd_incr(rd_incr), + .wr_incr(wr_incr), + .block(block), + .allow_line_cmd(allow_line_cmd), + .frame_width(frame_width), + .width_align(width_align) + ); + + + dma_axi32_core0_ch_offsets + dma_axi32_ch_offsets_rd ( + .clk(gclk), + .reset(reset), + .ch_update(ch_update), + .burst_start(rd_burst_start), + .burst_last(rd_burst_last), + .burst_size(rd_burst_size), + .load_req_in_prog(load_req_in_prog), + .x_size(x_size), + .y_size(y_size), + .x_offset(rd_x_offset), + .y_offset(rd_y_offset), + .x_remain(rd_x_remain), + .clr_remain(rd_clr_remain), + .ch_end(rd_ch_end), + .go_next_line(rd_go_next_line), + .incr(rd_incr), + .clr_line(rd_clr_line), + .line_empty(rd_line_empty), + .empty(rd_empty), + .start_align(rd_start_addr[2-1:0]), + .width_align(width_align), + .align(wr_align) //rd address writes to fifo + ); + + dma_axi32_core0_ch_offsets + dma_axi32_ch_offsets_wr ( + .clk(gclk), + .reset(reset), + .ch_update(ch_update), + .burst_start(wr_burst_start), + .burst_last(wr_burst_last), + .burst_size(wr_burst_size), + .load_req_in_prog(1'b0), + .x_size(x_size), + .y_size(y_size), + .x_offset(wr_x_offset), + .y_offset(wr_y_offset), + .x_remain(wr_x_remain), + .clr_remain(wr_clr_remain), + .ch_end(wr_ch_end), + .go_next_line(wr_go_next_line), + .incr(wr_incr), + .clr_line(wr_clr_line), + .line_empty(wr_line_empty), + .empty(wr_empty), + .start_align(wr_start_addr[2-1:0]), + .width_align(width_align), + .align(rd_align) //wr address reads from fifo + ); + + + dma_axi32_core0_ch_remain + dma_axi32_ch_remain ( + .clk(gclk), + .reset(reset), + .ch_update(ch_update), + .wr_outstanding(wr_outstanding), + .rd_outstanding(rd_outstanding), + .load_req_in_prog(load_req_in_prog), + .rd_line_cmd(rd_line_cmd), + .rd_burst_start(rd_burst_start), + .rd_burst_size(rd_burst_size), + .rd_transfer(rd_transfer), + .rd_transfer_size(rd_transfer_size), + .wr_clr_line(wr_clr_line), + .wr_burst_start(wr_burst_start), + .wr_burst_size(wr_burst_size), + .wr_transfer(wr_transfer), + .wr_transfer_size(wr_transfer_size), + .rd_gap(rd_gap), + .wr_fullness(wr_fullness) + ); + + + dma_axi32_core0_ch_outs dma_axi32_ch_outs_rd( + .clk(gclk), + .reset(reset), + .cmd(rd_cmd_outs), + .clr(rd_clr_outs), + .outs_max(rd_outs_max), + .outs(rd_outs), + .outs_empty(rd_outs_empty), + .stall(rd_stall), + .timeout(timeout_rresp) + ); + + dma_axi32_core0_ch_outs dma_axi32_ch_outs_wr( + .clk(gclk), + .reset(reset), + .cmd(wr_cmd_outs), + .clr(wr_clr_outs), + .outs_max(wr_outs_max), + .outs(wr_outs), + .outs_empty(wr_outs_empty), + .stall(wr_stall_pre), + .timeout(timeout_wresp) + ); + + assign wr_stall = wr_stall_pre & (~joint_req); + + + + dma_axi32_core0_ch_calc #(.READ(1)) + dma_axi32_ch_calc_rd ( + .clk(gclk), + .reset(reset), + .wr_cmd_pending(1'b0), + .outs_empty(outs_empty), + .load_in_prog(load_in_prog), + .load_req_in_prog(load_req_in_prog), + .load_addr(load_addr), + .ch_update(ch_update), + .ch_end(rd_ch_end), + .ch_end_flush(1'b0), + .go_next_line(rd_go_next_line), + .burst_start(rd_burst_start), + .burst_last(rd_burst_last), + .burst_max_size(rd_burst_max_size), + .start_addr(rd_start_addr), + .incr(rd_incr), + .frame_width(frame_width), + .x_size(x_size[`X_BITS-1:0]), + .x_remain(rd_x_remain), + .fifo_remain(rd_gap), + .fifo_wr_ready(fifo_wr_ready), + .burst_addr(rd_burst_addr), + .burst_size(rd_burst_size), + .burst_ready(rd_burst_ready), + .single(), + .joint_ready_out(rd_joint_ready), + .joint_ready_in(wr_joint_ready), + .joint_line_req_in(joint_line_req), + .joint_line_req_out(), + .joint_burst_req_in(1'b0), + .joint_burst_req_out(joint_burst_req), + .joint_line_req_clr(wr_clr_d), + .joint(joint), + .page_cross(rd_page_cross), + .joint_cross(joint_cross), + .joint_flush(rd_joint_flush), + .joint_flush_in(joint_flush) + ); + + + dma_axi32_core0_ch_calc #(.READ(0)) + dma_axi32_ch_calc_wr ( + .clk(gclk), + .reset(reset), + .wr_cmd_pending(wr_cmd_pending), + .outs_empty(outs_empty), + .load_in_prog(load_in_prog), + .load_req_in_prog(1'b0), + .load_addr({32{1'b0}}), + .ch_update(ch_update), + .ch_end(wr_ch_end), + .ch_end_flush(rd_ch_end), + .go_next_line(wr_go_next_line), + .burst_start(wr_burst_start), + .burst_last(wr_burst_last), + .burst_max_size(wr_burst_max_size), + .start_addr(wr_start_addr), + .incr(wr_incr), + .frame_width(frame_width), + .x_size(x_size[`X_BITS-1:0]), + .x_remain(wr_x_remain), + .fifo_wr_ready(1'b0), + .fifo_remain(wr_fullness), + .burst_addr(wr_burst_addr), + .burst_size(wr_burst_size), + .burst_ready(wr_burst_ready), + .single(wr_single), + .joint_ready_out(wr_joint_ready), + .joint_ready_in(rd_joint_ready), + .joint_line_req_in(1'b0), + .joint_line_req_out(joint_line_req), + .joint_burst_req_in(joint_burst_req), + .joint_burst_req_out(), + .joint_line_req_clr(rd_clr_d), + .joint(joint), + .page_cross(wr_page_cross), + .joint_cross(joint_cross), + .joint_flush(wr_joint_flush), + .joint_flush_in(joint_flush) + ); + + + assign rd_wait_ready = 1'b1; + assign wr_wait_ready = 1'b1; + + + + dma_axi32_core0_ch_periph_mux dma_axi32_ch_periph_mux_rd( + .clk(gclk), + .reset(reset), + .clken(clken), + .periph_req(periph_rx_req), + .periph_clr(periph_rx_clr), + .periph_ready(rd_periph_ready), + .periph_num(rd_periph_num), + .clr_valid(rd_clr_valid), + .clr(rd_clr) + ); + + + dma_axi32_core0_ch_periph_mux dma_axi32_ch_periph_mux_wr( + .clk(gclk), + .reset(reset), + .clken(clken), + .periph_req(periph_tx_req), + .periph_clr(periph_tx_clr), + .periph_ready(wr_periph_ready), + .periph_num(wr_periph_num), + .clr_valid(wr_clr_valid), + .clr(wr_clr_mux) + ); + + + + dma_axi32_core0_ch_fifo_ctrl + dma_axi32_ch_fifo_ctrl ( + .clk(clk), + .reset(reset), + .end_swap(end_swap), + .joint_in_prog(joint_in_prog), + .wr_outstanding(wr_outstanding), + .ch_update(ch_update), + .fifo_wr(fifo_wr), + .fifo_wdata(fifo_wdata), + .fifo_wsize(fifo_wsize), + .wr_align(wr_align), + .wr_single(wr_single), + .rd_incr(rd_incr), + .fifo_rd(fifo_rd), + .fifo_rsize(fifo_rsize), + .rd_align(rd_align), + .wr_incr(wr_incr), + .wr_burst_size(wr_burst_size), + .rd_clr_line(rd_clr_line), + .wr_clr_line(wr_clr_line), + .wr_next_size(wr_next_size), + + .fifo_rd_valid(fifo_rd_valid), + .fifo_rdata(fifo_rdata), + .fifo_wr_ready(fifo_wr_ready), + .fifo_overflow(fifo_overflow), + .fifo_underflow(fifo_underflow) + ); + + + + + +endmodule + + |
