基于AHB的四通道DMA控制器设计-dmac_channel.v
DMA通道模块 = 4个独立的中转货架管理间
`timescale 1ns/10ps
// ==============================
// 模块名:dmac_channel
// 功能:DMA 4通道控制器
// 场景对应:【4个独立的快递中转货架管理间】
// 每个通道 = 1个货架,互不干扰
// ==============================
module dmac_channel(
// 系统信号:时钟、复位
input clk, // 时钟:工作节拍
input rst, // 复位:清空所有货架
// ====================== 通道0 货架 ======================
input clr_0, // 清空货架0
input wr_0, // 往货架0放快递
input rd_0, // 从货架0取快递
input [31:0] wdata_0, // 要放进货架0的快递
output[31:0]rdata_0, // 从货架0拿出的快递
output full_0, // 货架0满了(不能再放)
output empty_0, // 货架0空了(没快递)
// ====================== 通道1 货架 ======================
input clr_1,
input wr_1,
input rd_1,
input [31:0] wdata_1,
output[31:0]rdata_1,
output full_1,
output empty_1,
// ====================== 通道2 货架 ======================
input clr_2,
input wr_2,
input rd_2,
input [31:0] wdata_2,
output[31:0]rdata_2,
output full_2,
output empty_2,
// ====================== 通道3 货架 ======================
input clr_3,
input wr_3,
input rd_3,
input [31:0] wdata_3,
output[31:0]rdata_3,
output full_3,
output empty_3
);
// ==============================
// 实例化 4个独立FIFO(4个中转货架)
// ==============================
// 通道0:FIFO货架0
dmac_fifo u0_fifo (
.clk (clk),
.rst (rst),
.clear (clr_0),
.wr (wr_0),
.rd (rd_0),
.wdata (wdata_0),
.rdata (rdata_0),
.full (full_0),
.empty (empty_0)
);
// 通道1:FIFO货架1
dmac_fifo u1_fifo (
.clk (clk),
.rst (rst),
.clear (clr_1),
.wr (wr_1),
.rd (rd_1),
.wdata (wdata_1),
.rdata (rdata_1),
.full (full_1),
.empty (empty_1)
);
// 通道2:FIFO货架2
dmac_fifo u2_fifo (
.clk (clk),
.rst (rst),
.clear (clr_2),
.wr (wr_2),
.rd (rd_2),
.wdata (wdata_2),
.rdata (rdata_2),
.full (full_2),
.empty (empty_2)
);
// 通道3:FIFO货架3
dmac_fifo u3_fifo (
.clk (clk),
.rst (rst),
.clear (clr_3),
.wr (wr_3),
.rd (rd_3),
.wdata (wdata_3),
.rdata (rdata_3),
.full (full_3),
.empty (empty_3)
);
endmodule