URL
https://opencores.org/ocsvn/wb_dma/wb_dma/trunk
Subversion Repositories wb_dma
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 7 to Rev 8
- ↔ Reverse comparison
Rev 7 → Rev 8
/trunk/bench/verilog/test_bench_top.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: test_bench_top.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: test_bench_top.v,v 1.2 2001-08-15 05:40:29 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:29 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.1.1.1 2001/03/19 13:11:22 rudi |
// Initial Release |
// |
102,10 → 108,10
wire wb1_ack_i; |
wire wb1_err_i; |
wire wb1_rty_i; |
reg [`CH_COUNT-1:0] req_i; |
wire [`CH_COUNT-1:0] ack_o; |
reg [`CH_COUNT-1:0] nd_i; |
reg [`CH_COUNT-1:0] rest_i; |
reg [`WDMA_CH_COUNT-1:0] req_i; |
wire [`WDMA_CH_COUNT-1:0] ack_o; |
reg [`WDMA_CH_COUNT-1:0] nd_i; |
reg [`WDMA_CH_COUNT-1:0] rest_i; |
wire inta_o; |
wire intb_o; |
|
202,7 → 208,7
|
// HERE IS WHERE THE TEST CASES GO ... |
|
if(0) // Full Regression Run |
if(1) // Full Regression Run |
begin |
pt10_rd; |
pt01_wr; |
240,7 → 246,7
// TEST DEVELOPMENT AREA |
// |
|
hw_dma4(0); |
arb_test1; |
|
repeat(100) @(posedge clk); |
|
268,9 → 274,8
|
always @(posedge clk) |
if(wb0_cyc_i | wb1_cyc_i | wb0_ack_i | wb1_ack_i) wd_cnt <= #1 0; |
else wd_cnt <= #1 wd_cnt + 1; |
else wd_cnt <= #1 wd_cnt + 1; |
|
|
always @(wd_cnt) |
if(wd_cnt>5000) |
begin |
291,8 → 296,8
// Module Prototype |
|
wb_dma_top u0( |
.clk( clk ), |
.rst( rst ), |
.clk_i( clk ), |
.rst_i( rst ), |
.wb0s_data_i( wb0s_data_i ), |
.wb0s_data_o( wb0s_data_o ), |
.wb0_addr_i( wb0_addr_i ), |
/trunk/bench/verilog/tests.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: tests.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: tests.v,v 1.2 2001-08-15 05:40:29 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:29 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.1.1.1 2001/03/19 13:12:39 rudi |
// Initial Release |
// |
116,7 → 122,6
$display("Total Size: %0d, Chunk Size: %0d, Slave Delay: %0d", |
tot_sz, chunk_sz, del); |
|
|
ack_cnt_clr = 1; |
@(posedge clk); |
ack_cnt_clr = 0; |
149,8 → 154,6
s0.mem[15] = 32'h0000_0000; |
|
|
|
|
m0.wb_wr1(`REG_BASE + `INT_MASKA,4'hf,32'hffff_ffff); |
|
m0.wb_wr1(`REG_BASE + `PTR0, 4'hf, 32'h0000_0020); |
159,7 → 162,6
m0.wb_wr1(`REG_BASE + `CH0_ADR1,4'hf,32'h0000_4000); |
|
m0.wb_wr1(`REG_BASE + `CH0_CSR,4'hf, |
//{25'h0000001, 4'b0011, 2'b00, 1'b1}); |
{15'h0002, 3'b000, 1'b0, 6'h1, 4'b0011, 2'b00, 1'b1}); |
|
|
169,12 → 171,9
m0.wb_wr1(`REG_BASE + `CH1_ADR1,4'hf,32'h0000_4000); |
|
m0.wb_wr1(`REG_BASE + `CH1_CSR,4'hf, |
//{25'h0000001, 4'b0011, 2'b00, 1'b1}); |
{15'h0002, 3'b000, 1'b0, 6'h1, 4'b0011, 2'b00, 1'b1}); |
|
|
|
|
for(ii=0;ii<2;ii=ii+1) |
begin |
repeat(5) @(posedge clk); |
237,9 → 236,6
|
end |
|
|
|
|
if(ack_cnt != ((tot_sz*4)+(4*2))*2 ) |
begin |
$display("ERROR: ACK count Mismatch: Expected: %0d, Got: %0d (%0t)", |
436,16 → 432,16
s1.fill_mem(1); |
|
m0.wb_wr1(`REG_BASE + `CH0_CSR,4'hf, |
{17'h00000, pri[1:0], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
{17'h00000, pri[1:0], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
|
m0.wb_wr1(`REG_BASE + `CH1_CSR,4'hf, |
{17'h00000, pri[3:2], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
{17'h00000, pri[3:2], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
|
m0.wb_wr1(`REG_BASE + `CH2_CSR,4'hf, |
{17'h00000, pri[5:4], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
{17'h00000, pri[5:4], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
|
m0.wb_wr1(`REG_BASE + `CH3_CSR,4'hf, |
{17'h00000, pri[7:6], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
{17'h00000, pri[7:6], 6'h0, 4'b0011, mode[1:0], 1'b0}); |
|
m0.wb_wr1(`REG_BASE + `INT_MASKA,4'hf,32'hffff_ffff); |
|
465,17 → 461,22
m0.wb_wr1(`REG_BASE + `CH3_ADR0,4'hf,32'h0000_0180); |
m0.wb_wr1(`REG_BASE + `CH3_ADR1,4'hf,32'h0000_4180); |
|
|
m0.wb_wr1(`REG_BASE + `CH0_CSR,4'hf, |
{15'h0002, 2'b00, pri[1:0], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
{12'h000, 3'b010, 1'b0, 1'b0, pri[1:0], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
|
//{15'h0002, 3'b000, 1'b0, 6'h1, 4'b0011, 2'b00, 1'b1}); |
|
m0.wb_wr1(`REG_BASE + `CH1_CSR,4'hf, |
{15'h0002, 2'b00, pri[3:2], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
{12'h000, 3'b010, 1'b0, 1'b0, pri[3:2], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
|
m0.wb_wr1(`REG_BASE + `CH2_CSR,4'hf, |
{15'h0002, 2'b00, pri[5:4], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
{12'h000, 3'b010, 1'b0, 1'b0, pri[5:4], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
|
|
|
m0.wb_wr1(`REG_BASE + `CH3_CSR,4'hf, |
{15'h0002, 2'b00, pri[7:6], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
{12'h0000, 3'b010, 1'b0, 1'b0, pri[7:6], 6'h0, 4'b0011, mode[1:0], 1'b1}); |
|
repeat(1) @(posedge clk); |
|
485,40 → 486,37
finish = 8'hxx; |
|
while(ptr!=4) |
begin |
begin |
while(!inta_o) @(posedge clk); |
m0.wb_rd1(`REG_BASE + `INT_SRCA, 4'hf, d0); |
|
while(!inta_o) @(posedge clk); |
m0.wb_rd1(`REG_BASE + `INT_SRCA, 4'hf, d0); |
if(d0[0]) d0[1:0] = 0; |
else |
if(d0[1]) d0[1:0] = 1; |
else |
if(d0[2]) d0[1:0] = 2; |
else |
if(d0[3]) d0[1:0] = 3; |
|
if(d0[0]) d0[1:0] = 0; |
else |
if(d0[1]) d0[1:0] = 1; |
else |
if(d0[2]) d0[1:0] = 2; |
else |
if(d0[3]) d0[1:0] = 3; |
case(ptr) |
0: finish[7:6] = d0[1:0]; |
1: finish[5:4] = d0[1:0]; |
2: finish[3:2] = d0[1:0]; |
3: finish[1:0] = d0[1:0]; |
endcase |
|
case(ptr) |
0: finish[7:6] = d0[1:0]; |
1: finish[5:4] = d0[1:0]; |
2: finish[3:2] = d0[1:0]; |
3: finish[1:0] = d0[1:0]; |
endcase |
case(d0[1:0]) |
0: m0.wb_rd1(`REG_BASE + `CH0_CSR, 4'hf, d0); |
1: m0.wb_rd1(`REG_BASE + `CH1_CSR, 4'hf, d0); |
2: m0.wb_rd1(`REG_BASE + `CH2_CSR, 4'hf, d0); |
3: m0.wb_rd1(`REG_BASE + `CH3_CSR, 4'hf, d0); |
endcase |
|
case(d0[1:0]) |
0: m0.wb_rd1(`REG_BASE + `CH0_CSR, 4'hf, d0); |
1: m0.wb_rd1(`REG_BASE + `CH1_CSR, 4'hf, d0); |
2: m0.wb_rd1(`REG_BASE + `CH2_CSR, 4'hf, d0); |
3: m0.wb_rd1(`REG_BASE + `CH3_CSR, 4'hf, d0); |
endcase |
ptr=ptr+1; |
repeat(4) @(posedge clk); |
end |
|
ptr=ptr+1; |
repeat(2) @(posedge clk); |
|
|
end |
|
|
if(finish !== order) |
begin |
$display("ERROR: Completion Order[%0d] Mismatch: Expected: %b, Got: %b (%0t)", |
542,8 → 540,6
end |
end |
|
|
|
if(ack_cnt != ((tot_sz*4*2)) ) |
begin |
$display("ERROR: ACK count Mismatch: Expected: %0d, Got: %0d (%0t)", |
/trunk/rtl/verilog/wb_dma_top.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_top.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_top.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.3 2001/06/13 02:26:50 rudi |
// |
// |
69,7 → 75,7
|
`include "wb_dma_defines.v" |
|
module wb_dma_top(clk, rst, |
module wb_dma_top(clk_i, rst_i, |
|
wb0s_data_i, wb0s_data_o, wb0_addr_i, wb0_sel_i, wb0_we_i, wb0_cyc_i, |
wb0_stb_i, wb0_ack_o, wb0_err_o, wb0_rty_o, |
86,7 → 92,7
inta_o, intb_o |
); |
|
input clk, rst; |
input clk_i, rst_i; |
|
// -------------------------------------- |
// WISHBONE INTERFACE 0 |
144,10 → 150,10
|
// -------------------------------------- |
// Misc Signals |
input [`CH_COUNT-1:0] dma_req_i; |
input [`CH_COUNT-1:0] dma_nd_i; |
output [`CH_COUNT-1:0] dma_ack_o; |
input [`CH_COUNT-1:0] dma_rest_i; |
input [`WDMA_CH_COUNT-1:0] dma_req_i; |
input [`WDMA_CH_COUNT-1:0] dma_nd_i; |
output [`WDMA_CH_COUNT-1:0] dma_ack_o; |
input [`WDMA_CH_COUNT-1:0] dma_rest_i; |
output inta_o; |
output intb_o; |
|
269,10 → 275,10
// Misc Logic |
// |
|
assign dma_req[`CH_COUNT-1:0] = dma_req_i; |
assign dma_nd[`CH_COUNT-1:0] = dma_nd_i; |
assign dma_rest[`CH_COUNT-1:0] = dma_rest_i; |
assign dma_ack_o = dma_ack[`CH_COUNT-1:0]; |
assign dma_req[`WDMA_CH_COUNT-1:0] = dma_req_i; |
assign dma_nd[`WDMA_CH_COUNT-1:0] = dma_nd_i; |
assign dma_rest[`WDMA_CH_COUNT-1:0] = dma_rest_i; |
assign dma_ack_o = dma_ack[`WDMA_CH_COUNT-1:0]; |
|
// -------------------------------------------------- |
// This should go in to a separate Pass Through Block |
293,8 → 299,8
// DMA Register File |
|
wb_dma_rf u0( |
.clk( clk ), |
.rst( rst ), |
.clk( clk_i ), |
.rst( rst_i ), |
.wb_rf_adr( slv0_adr[9:2] ), |
.wb_rf_din( slv0_dout ), |
.wb_rf_dout( slv0_din ), |
574,8 → 580,8
|
// Channel Select |
wb_dma_ch_sel u1( |
.clk( clk ), |
.rst( rst ), |
.clk( clk_i ), |
.rst( rst_i ), |
.req_i( dma_req ), |
.ack_o( dma_ack ), |
.nd_i( dma_nd ), |
849,8 → 855,8
|
// DMA Engine |
wb_dma_de u2( |
.clk( clk ), |
.rst( rst ), |
.clk( clk_i ), |
.rst( rst_i ), |
.mast0_go( mast0_go ), |
.mast0_we( mast0_we ), |
.mast0_adr( mast0_adr ), |
900,8 → 906,8
|
// Wishbone Interface 0 |
wb_dma_wb_if u3( |
.clk( clk ), |
.rst( rst ), |
.clk( clk_i ), |
.rst( rst_i ), |
.wbs_data_i( wb0s_data_i ), |
.wbs_data_o( wb0s_data_o ), |
.wb_addr_i( wb0_addr_i ), |
945,8 → 951,8
|
// Wishbone Interface 1 |
wb_dma_wb_if u4( |
.clk( clk ), |
.rst( rst ), |
.clk( clk_i ), |
.rst( rst_i ), |
.wbs_data_i( wb1s_data_i ), |
.wbs_data_o( wb1s_data_o ), |
.wb_addr_i( wb1_addr_i ), |
/trunk/rtl/verilog/wb_dma_rf.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_rf.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_rf.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.4 2001/06/14 08:50:46 rudi |
// |
// Changed name of channel register file module. |
258,7 → 264,6
|
assign int_maska = {1'h0, int_maska_r}; |
assign int_maskb = {1'h0, int_maskb_r}; |
//assign csr = {24'h0, csr_r[7:1], paused}; |
assign csr = {31'h0, paused}; |
|
//////////////////////////////////////////////////////////////////// |
291,7 → 296,7
8'he: wb_rf_dout <= #1 pointer0; |
8'hf: wb_rf_dout <= #1 sw_pointer0; |
|
`ifdef HAVE_CH1 |
`ifdef WDMA_HAVE_CH1 |
8'h10: wb_rf_dout <= #1 ch1_csr; |
8'h11: wb_rf_dout <= #1 ch1_txsz; |
8'h12: wb_rf_dout <= #1 ch1_adr0; |
302,7 → 307,7
8'h17: wb_rf_dout <= #1 sw_pointer1; |
`endif |
|
`ifdef HAVE_CH2 |
`ifdef WDMA_HAVE_CH2 |
8'h18: wb_rf_dout <= #1 ch2_csr; |
8'h19: wb_rf_dout <= #1 ch2_txsz; |
8'h1a: wb_rf_dout <= #1 ch2_adr0; |
313,7 → 318,7
8'h1f: wb_rf_dout <= #1 sw_pointer2; |
`endif |
|
`ifdef HAVE_CH3 |
`ifdef WDMA_HAVE_CH3 |
8'h20: wb_rf_dout <= #1 ch3_csr; |
8'h21: wb_rf_dout <= #1 ch3_txsz; |
8'h22: wb_rf_dout <= #1 ch3_adr0; |
324,7 → 329,7
8'h27: wb_rf_dout <= #1 sw_pointer3; |
`endif |
|
`ifdef HAVE_CH4 |
`ifdef WDMA_HAVE_CH4 |
8'h28: wb_rf_dout <= #1 ch4_csr; |
8'h29: wb_rf_dout <= #1 ch4_txsz; |
8'h2a: wb_rf_dout <= #1 ch4_adr0; |
335,7 → 340,7
8'h2f: wb_rf_dout <= #1 sw_pointer4; |
`endif |
|
`ifdef HAVE_CH5 |
`ifdef WDMA_HAVE_CH5 |
8'h30: wb_rf_dout <= #1 ch5_csr; |
8'h31: wb_rf_dout <= #1 ch5_txsz; |
8'h32: wb_rf_dout <= #1 ch5_adr0; |
346,7 → 351,7
8'h37: wb_rf_dout <= #1 sw_pointer5; |
`endif |
|
`ifdef HAVE_CH6 |
`ifdef WDMA_HAVE_CH6 |
8'h38: wb_rf_dout <= #1 ch6_csr; |
8'h39: wb_rf_dout <= #1 ch6_txsz; |
8'h3a: wb_rf_dout <= #1 ch6_adr0; |
357,7 → 362,7
8'h3f: wb_rf_dout <= #1 sw_pointer6; |
`endif |
|
`ifdef HAVE_CH7 |
`ifdef WDMA_HAVE_CH7 |
8'h40: wb_rf_dout <= #1 ch7_csr; |
8'h41: wb_rf_dout <= #1 ch7_txsz; |
8'h42: wb_rf_dout <= #1 ch7_adr0; |
368,7 → 373,7
8'h47: wb_rf_dout <= #1 sw_pointer7; |
`endif |
|
`ifdef HAVE_CH8 |
`ifdef WDMA_HAVE_CH8 |
8'h48: wb_rf_dout <= #1 ch8_csr; |
8'h49: wb_rf_dout <= #1 ch8_txsz; |
8'h4a: wb_rf_dout <= #1 ch8_adr0; |
379,7 → 384,7
8'h4f: wb_rf_dout <= #1 sw_pointer8; |
`endif |
|
`ifdef HAVE_CH9 |
`ifdef WDMA_HAVE_CH9 |
8'h50: wb_rf_dout <= #1 ch9_csr; |
8'h51: wb_rf_dout <= #1 ch9_txsz; |
8'h52: wb_rf_dout <= #1 ch9_adr0; |
390,7 → 395,7
8'h57: wb_rf_dout <= #1 sw_pointer9; |
`endif |
|
`ifdef HAVE_CH10 |
`ifdef WDMA_HAVE_CH10 |
8'h58: wb_rf_dout <= #1 ch10_csr; |
8'h59: wb_rf_dout <= #1 ch10_txsz; |
8'h5a: wb_rf_dout <= #1 ch10_adr0; |
401,7 → 406,7
8'h5f: wb_rf_dout <= #1 sw_pointer10; |
`endif |
|
`ifdef HAVE_CH11 |
`ifdef WDMA_HAVE_CH11 |
8'h60: wb_rf_dout <= #1 ch11_csr; |
8'h61: wb_rf_dout <= #1 ch11_txsz; |
8'h62: wb_rf_dout <= #1 ch11_adr0; |
412,7 → 417,7
8'h67: wb_rf_dout <= #1 sw_pointer11; |
`endif |
|
`ifdef HAVE_CH12 |
`ifdef WDMA_HAVE_CH12 |
8'h68: wb_rf_dout <= #1 ch12_csr; |
8'h69: wb_rf_dout <= #1 ch12_txsz; |
8'h6a: wb_rf_dout <= #1 ch12_adr0; |
423,7 → 428,7
8'h6f: wb_rf_dout <= #1 sw_pointer12; |
`endif |
|
`ifdef HAVE_CH13 |
`ifdef WDMA_HAVE_CH13 |
8'h70: wb_rf_dout <= #1 ch13_csr; |
8'h71: wb_rf_dout <= #1 ch13_txsz; |
8'h72: wb_rf_dout <= #1 ch13_adr0; |
434,7 → 439,7
8'h77: wb_rf_dout <= #1 sw_pointer13; |
`endif |
|
`ifdef HAVE_CH14 |
`ifdef WDMA_HAVE_CH14 |
8'h78: wb_rf_dout <= #1 ch14_csr; |
8'h79: wb_rf_dout <= #1 ch14_txsz; |
8'h7a: wb_rf_dout <= #1 ch14_adr0; |
445,7 → 450,7
8'h7f: wb_rf_dout <= #1 sw_pointer14; |
`endif |
|
`ifdef HAVE_CH15 |
`ifdef WDMA_HAVE_CH15 |
8'h80: wb_rf_dout <= #1 ch15_csr; |
8'h81: wb_rf_dout <= #1 ch15_txsz; |
8'h82: wb_rf_dout <= #1 ch15_adr0; |
456,7 → 461,7
8'h87: wb_rf_dout <= #1 sw_pointer15; |
`endif |
|
`ifdef HAVE_CH16 |
`ifdef WDMA_HAVE_CH16 |
8'h88: wb_rf_dout <= #1 ch16_csr; |
8'h89: wb_rf_dout <= #1 ch16_txsz; |
8'h8a: wb_rf_dout <= #1 ch16_adr0; |
467,7 → 472,7
8'h8f: wb_rf_dout <= #1 sw_pointer16; |
`endif |
|
`ifdef HAVE_CH17 |
`ifdef WDMA_HAVE_CH17 |
8'h90: wb_rf_dout <= #1 ch17_csr; |
8'h91: wb_rf_dout <= #1 ch17_txsz; |
8'h92: wb_rf_dout <= #1 ch17_adr0; |
478,7 → 483,7
8'h97: wb_rf_dout <= #1 sw_pointer17; |
`endif |
|
`ifdef HAVE_CH18 |
`ifdef WDMA_HAVE_CH18 |
8'h98: wb_rf_dout <= #1 ch18_csr; |
8'h99: wb_rf_dout <= #1 ch18_txsz; |
8'h9a: wb_rf_dout <= #1 ch18_adr0; |
489,7 → 494,7
8'h9f: wb_rf_dout <= #1 sw_pointer18; |
`endif |
|
`ifdef HAVE_CH19 |
`ifdef WDMA_HAVE_CH19 |
8'ha0: wb_rf_dout <= #1 ch19_csr; |
8'ha1: wb_rf_dout <= #1 ch19_txsz; |
8'ha2: wb_rf_dout <= #1 ch19_adr0; |
500,7 → 505,7
8'ha7: wb_rf_dout <= #1 sw_pointer19; |
`endif |
|
`ifdef HAVE_CH20 |
`ifdef WDMA_HAVE_CH20 |
8'ha8: wb_rf_dout <= #1 ch20_csr; |
8'ha9: wb_rf_dout <= #1 ch20_txsz; |
8'haa: wb_rf_dout <= #1 ch20_adr0; |
511,7 → 516,7
8'haf: wb_rf_dout <= #1 sw_pointer20; |
`endif |
|
`ifdef HAVE_CH21 |
`ifdef WDMA_HAVE_CH21 |
8'hb0: wb_rf_dout <= #1 ch21_csr; |
8'hb1: wb_rf_dout <= #1 ch21_txsz; |
8'hb2: wb_rf_dout <= #1 ch21_adr0; |
522,7 → 527,7
8'hb7: wb_rf_dout <= #1 sw_pointer21; |
`endif |
|
`ifdef HAVE_CH22 |
`ifdef WDMA_HAVE_CH22 |
8'hb8: wb_rf_dout <= #1 ch22_csr; |
8'hb9: wb_rf_dout <= #1 ch22_txsz; |
8'hba: wb_rf_dout <= #1 ch22_adr0; |
533,7 → 538,7
8'hbf: wb_rf_dout <= #1 sw_pointer22; |
`endif |
|
`ifdef HAVE_CH23 |
`ifdef WDMA_HAVE_CH23 |
8'hc0: wb_rf_dout <= #1 ch23_csr; |
8'hc1: wb_rf_dout <= #1 ch23_txsz; |
8'hc2: wb_rf_dout <= #1 ch23_adr0; |
544,7 → 549,7
8'hc7: wb_rf_dout <= #1 sw_pointer23; |
`endif |
|
`ifdef HAVE_CH24 |
`ifdef WDMA_HAVE_CH24 |
8'hc8: wb_rf_dout <= #1 ch24_csr; |
8'hc9: wb_rf_dout <= #1 ch24_txsz; |
8'hca: wb_rf_dout <= #1 ch24_adr0; |
555,7 → 560,7
8'hcf: wb_rf_dout <= #1 sw_pointer24; |
`endif |
|
`ifdef HAVE_CH25 |
`ifdef WDMA_HAVE_CH25 |
8'hd0: wb_rf_dout <= #1 ch25_csr; |
8'hd1: wb_rf_dout <= #1 ch25_txsz; |
8'hd2: wb_rf_dout <= #1 ch25_adr0; |
566,7 → 571,7
8'hd7: wb_rf_dout <= #1 sw_pointer25; |
`endif |
|
`ifdef HAVE_CH26 |
`ifdef WDMA_HAVE_CH26 |
8'hd8: wb_rf_dout <= #1 ch26_csr; |
8'hd9: wb_rf_dout <= #1 ch26_txsz; |
8'hda: wb_rf_dout <= #1 ch26_adr0; |
577,7 → 582,7
8'hdf: wb_rf_dout <= #1 sw_pointer26; |
`endif |
|
`ifdef HAVE_CH27 |
`ifdef WDMA_HAVE_CH27 |
8'he0: wb_rf_dout <= #1 ch27_csr; |
8'he1: wb_rf_dout <= #1 ch27_txsz; |
8'he2: wb_rf_dout <= #1 ch27_adr0; |
588,7 → 593,7
8'he7: wb_rf_dout <= #1 sw_pointer27; |
`endif |
|
`ifdef HAVE_CH28 |
`ifdef WDMA_HAVE_CH28 |
8'he8: wb_rf_dout <= #1 ch28_csr; |
8'he9: wb_rf_dout <= #1 ch28_txsz; |
8'hea: wb_rf_dout <= #1 ch28_adr0; |
599,7 → 604,7
8'hef: wb_rf_dout <= #1 sw_pointer28; |
`endif |
|
`ifdef HAVE_CH29 |
`ifdef WDMA_HAVE_CH29 |
8'hf0: wb_rf_dout <= #1 ch29_csr; |
8'hf1: wb_rf_dout <= #1 ch29_txsz; |
8'hf2: wb_rf_dout <= #1 ch29_adr0; |
610,7 → 615,7
8'hf7: wb_rf_dout <= #1 sw_pointer29; |
`endif |
|
`ifdef HAVE_CH30 |
`ifdef WDMA_HAVE_CH30 |
8'hf8: wb_rf_dout <= #1 ch30_csr; |
8'hf9: wb_rf_dout <= #1 ch30_txsz; |
8'hfa: wb_rf_dout <= #1 ch30_adr0; |
621,7 → 626,7
8'hff: wb_rf_dout <= #1 sw_pointer30; |
`endif |
|
`ifdef HAVE_CH31 |
`ifdef WDMA_HAVE_CH31 |
8'h100: wb_rf_dout <= #1 ch31_csr; |
8'h101: wb_rf_dout <= #1 ch31_txsz; |
8'h102: wb_rf_dout <= #1 ch31_adr0; |
648,7 → 653,7
// --------------------------------------------------- |
|
always @(posedge clk or negedge rst) |
if(!rst) csr_r <= #1 0; |
if(!rst) csr_r <= #1 8'h0; |
else |
if(csr_we) csr_r <= #1 wb_rf_din[7:0]; |
|
655,12 → 660,12
// --------------------------------------------------- |
// INT_MASK |
always @(posedge clk or negedge rst) |
if(!rst) int_maska_r <= #1 0; |
if(!rst) int_maska_r <= #1 31'h0; |
else |
if(int_maska_we) int_maska_r <= #1 wb_rf_din[30:0]; |
|
always @(posedge clk or negedge rst) |
if(!rst) int_maskb_r <= #1 0; |
if(!rst) int_maskb_r <= #1 31'h0; |
else |
if(int_maskb_we) int_maskb_r <= #1 wb_rf_din[30:0]; |
|
684,7 → 689,7
// Channel Register File |
// |
|
wb_dma_ch_rf #(0, `HAVE_ARS0, `HAVE_ED0, `HAVE_CBUF0) u0( |
wb_dma_ch_rf #(0, `WDMA_HAVE_ARS0, `WDMA_HAVE_ED0, `WDMA_HAVE_CBUF0) u0( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer0 ), |
722,8 → 727,8
.ptr_set( ptr_set ) |
); |
|
`ifdef HAVE_CH1 |
wb_dma_ch_rf #(1, `HAVE_ARS1, `HAVE_ED1, `HAVE_CBUF1) u1( |
`ifdef WDMA_HAVE_CH1 |
wb_dma_ch_rf #(1, `WDMA_HAVE_ARS1, `WDMA_HAVE_ED1, `WDMA_HAVE_CBUF1) u1( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer1 ), |
761,7 → 766,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(1, `HAVE_ARS1, `HAVE_ED1, `HAVE_CBUF1) u1( |
wb_dma_ch_rf_dummy #(1, `WDMA_HAVE_ARS1, `WDMA_HAVE_ED1, `WDMA_HAVE_CBUF1) u1( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer1 ), |
801,8 → 806,8
`endif |
|
|
`ifdef HAVE_CH2 |
wb_dma_ch_rf #(2, `HAVE_ARS2, `HAVE_ED2, `HAVE_CBUF2) u2( |
`ifdef WDMA_HAVE_CH2 |
wb_dma_ch_rf #(2, `WDMA_HAVE_ARS2, `WDMA_HAVE_ED2, `WDMA_HAVE_CBUF2) u2( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer2 ), |
840,7 → 845,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(2, `HAVE_ARS2, `HAVE_ED2, `HAVE_CBUF2) u2( |
wb_dma_ch_rf_dummy #(2, `WDMA_HAVE_ARS2, `WDMA_HAVE_ED2, `WDMA_HAVE_CBUF2) u2( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer2 ), |
880,8 → 885,8
`endif |
|
|
`ifdef HAVE_CH3 |
wb_dma_ch_rf #(3, `HAVE_ARS3, `HAVE_ED3, `HAVE_CBUF3) u3( |
`ifdef WDMA_HAVE_CH3 |
wb_dma_ch_rf #(3, `WDMA_HAVE_ARS3, `WDMA_HAVE_ED3, `WDMA_HAVE_CBUF3) u3( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer3 ), |
919,7 → 924,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(3, `HAVE_ARS3, `HAVE_ED3, `HAVE_CBUF3) u3( |
wb_dma_ch_rf_dummy #(3, `WDMA_HAVE_ARS3, `WDMA_HAVE_ED3, `WDMA_HAVE_CBUF3) u3( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer3 ), |
959,8 → 964,8
`endif |
|
|
`ifdef HAVE_CH4 |
wb_dma_ch_rf #(4, `HAVE_ARS4, `HAVE_ED4, `HAVE_CBUF4) u4( |
`ifdef WDMA_HAVE_CH4 |
wb_dma_ch_rf #(4, `WDMA_HAVE_ARS4, `WDMA_HAVE_ED4, `WDMA_HAVE_CBUF4) u4( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer4 ), |
998,7 → 1003,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(4, `HAVE_ARS4, `HAVE_ED4, `HAVE_CBUF4) u4( |
wb_dma_ch_rf_dummy #(4, `WDMA_HAVE_ARS4, `WDMA_HAVE_ED4, `WDMA_HAVE_CBUF4) u4( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer4 ), |
1038,8 → 1043,8
`endif |
|
|
`ifdef HAVE_CH5 |
wb_dma_ch_rf #(5, `HAVE_ARS5, `HAVE_ED5, `HAVE_CBUF5) u5( |
`ifdef WDMA_HAVE_CH5 |
wb_dma_ch_rf #(5, `WDMA_HAVE_ARS5, `WDMA_HAVE_ED5, `WDMA_HAVE_CBUF5) u5( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer5 ), |
1077,7 → 1082,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(5, `HAVE_ARS5, `HAVE_ED5, `HAVE_CBUF5) u5( |
wb_dma_ch_rf_dummy #(5, `WDMA_HAVE_ARS5, `WDMA_HAVE_ED5, `WDMA_HAVE_CBUF5) u5( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer5 ), |
1117,8 → 1122,8
`endif |
|
|
`ifdef HAVE_CH6 |
wb_dma_ch_rf #(6, `HAVE_ARS6, `HAVE_ED6, `HAVE_CBUF6) u6( |
`ifdef WDMA_HAVE_CH6 |
wb_dma_ch_rf #(6, `WDMA_HAVE_ARS6, `WDMA_HAVE_ED6, `WDMA_HAVE_CBUF6) u6( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer6 ), |
1156,7 → 1161,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(6, `HAVE_ARS6, `HAVE_ED6, `HAVE_CBUF6) u6( |
wb_dma_ch_rf_dummy #(6, `WDMA_HAVE_ARS6, `WDMA_HAVE_ED6, `WDMA_HAVE_CBUF6) u6( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer6 ), |
1196,8 → 1201,8
`endif |
|
|
`ifdef HAVE_CH7 |
wb_dma_ch_rf #(7, `HAVE_ARS7, `HAVE_ED7, `HAVE_CBUF7) u7( |
`ifdef WDMA_HAVE_CH7 |
wb_dma_ch_rf #(7, `WDMA_HAVE_ARS7, `WDMA_HAVE_ED7, `WDMA_HAVE_CBUF7) u7( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer7 ), |
1235,7 → 1240,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(7, `HAVE_ARS7, `HAVE_ED7, `HAVE_CBUF7) u7( |
wb_dma_ch_rf_dummy #(7, `WDMA_HAVE_ARS7, `WDMA_HAVE_ED7, `WDMA_HAVE_CBUF7) u7( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer7 ), |
1275,8 → 1280,8
`endif |
|
|
`ifdef HAVE_CH8 |
wb_dma_ch_rf #(8, `HAVE_ARS8, `HAVE_ED8, `HAVE_CBUF8) u8( |
`ifdef WDMA_HAVE_CH8 |
wb_dma_ch_rf #(8, `WDMA_HAVE_ARS8, `WDMA_HAVE_ED8, `WDMA_HAVE_CBUF8) u8( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer8 ), |
1314,7 → 1319,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(8, `HAVE_ARS8, `HAVE_ED8, `HAVE_CBUF8) u8( |
wb_dma_ch_rf_dummy #(8, `WDMA_HAVE_ARS8, `WDMA_HAVE_ED8, `WDMA_HAVE_CBUF8) u8( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer8 ), |
1354,8 → 1359,8
`endif |
|
|
`ifdef HAVE_CH9 |
wb_dma_ch_rf #(9, `HAVE_ARS9, `HAVE_ED9, `HAVE_CBUF9) u9( |
`ifdef WDMA_HAVE_CH9 |
wb_dma_ch_rf #(9, `WDMA_HAVE_ARS9, `WDMA_HAVE_ED9, `WDMA_HAVE_CBUF9) u9( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer9 ), |
1393,7 → 1398,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(9, `HAVE_ARS9, `HAVE_ED9, `HAVE_CBUF9) u9( |
wb_dma_ch_rf_dummy #(9, `WDMA_HAVE_ARS9, `WDMA_HAVE_ED9, `WDMA_HAVE_CBUF9) u9( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer9 ), |
1433,8 → 1438,8
`endif |
|
|
`ifdef HAVE_CH10 |
wb_dma_ch_rf #(10, `HAVE_ARS10, `HAVE_ED10, `HAVE_CBUF10) u10( |
`ifdef WDMA_HAVE_CH10 |
wb_dma_ch_rf #(10, `WDMA_HAVE_ARS10, `WDMA_HAVE_ED10, `WDMA_HAVE_CBUF10) u10( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer10 ), |
1472,7 → 1477,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(10, `HAVE_ARS10, `HAVE_ED10, `HAVE_CBUF10) u10( |
wb_dma_ch_rf_dummy #(10, `WDMA_HAVE_ARS10, `WDMA_HAVE_ED10, `WDMA_HAVE_CBUF10) u10( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer10 ), |
1512,8 → 1517,8
`endif |
|
|
`ifdef HAVE_CH11 |
wb_dma_ch_rf #(11, `HAVE_ARS11, `HAVE_ED11, `HAVE_CBUF11) u11( |
`ifdef WDMA_HAVE_CH11 |
wb_dma_ch_rf #(11, `WDMA_HAVE_ARS11, `WDMA_HAVE_ED11, `WDMA_HAVE_CBUF11) u11( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer11 ), |
1551,7 → 1556,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(11, `HAVE_ARS11, `HAVE_ED11, `HAVE_CBUF11) u11( |
wb_dma_ch_rf_dummy #(11, `WDMA_HAVE_ARS11, `WDMA_HAVE_ED11, `WDMA_HAVE_CBUF11) u11( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer11 ), |
1591,8 → 1596,8
`endif |
|
|
`ifdef HAVE_CH12 |
wb_dma_ch_rf #(12, `HAVE_ARS12, `HAVE_ED12, `HAVE_CBUF12) u12( |
`ifdef WDMA_HAVE_CH12 |
wb_dma_ch_rf #(12, `WDMA_HAVE_ARS12, `WDMA_HAVE_ED12, `WDMA_HAVE_CBUF12) u12( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer12 ), |
1630,7 → 1635,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(12, `HAVE_ARS12, `HAVE_ED12, `HAVE_CBUF12) u12( |
wb_dma_ch_rf_dummy #(12, `WDMA_HAVE_ARS12, `WDMA_HAVE_ED12, `WDMA_HAVE_CBUF12) u12( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer12 ), |
1670,8 → 1675,8
`endif |
|
|
`ifdef HAVE_CH13 |
wb_dma_ch_rf #(13, `HAVE_ARS13, `HAVE_ED13, `HAVE_CBUF13) u13( |
`ifdef WDMA_HAVE_CH13 |
wb_dma_ch_rf #(13, `WDMA_HAVE_ARS13, `WDMA_HAVE_ED13, `WDMA_HAVE_CBUF13) u13( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer13 ), |
1709,7 → 1714,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(13, `HAVE_ARS13, `HAVE_ED13, `HAVE_CBUF13) u13( |
wb_dma_ch_rf_dummy #(13, `WDMA_HAVE_ARS13, `WDMA_HAVE_ED13, `WDMA_HAVE_CBUF13) u13( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer13 ), |
1749,8 → 1754,8
`endif |
|
|
`ifdef HAVE_CH14 |
wb_dma_ch_rf #(14, `HAVE_ARS14, `HAVE_ED14, `HAVE_CBUF14) u14( |
`ifdef WDMA_HAVE_CH14 |
wb_dma_ch_rf #(14, `WDMA_HAVE_ARS14, `WDMA_HAVE_ED14, `WDMA_HAVE_CBUF14) u14( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer14 ), |
1788,7 → 1793,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(14, `HAVE_ARS14, `HAVE_ED14, `HAVE_CBUF14) u14( |
wb_dma_ch_rf_dummy #(14, `WDMA_HAVE_ARS14, `WDMA_HAVE_ED14, `WDMA_HAVE_CBUF14) u14( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer14 ), |
1828,8 → 1833,8
`endif |
|
|
`ifdef HAVE_CH15 |
wb_dma_ch_rf #(15, `HAVE_ARS15, `HAVE_ED15, `HAVE_CBUF15) u15( |
`ifdef WDMA_HAVE_CH15 |
wb_dma_ch_rf #(15, `WDMA_HAVE_ARS15, `WDMA_HAVE_ED15, `WDMA_HAVE_CBUF15) u15( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer15 ), |
1867,7 → 1872,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(15, `HAVE_ARS15, `HAVE_ED15, `HAVE_CBUF15) u15( |
wb_dma_ch_rf_dummy #(15, `WDMA_HAVE_ARS15, `WDMA_HAVE_ED15, `WDMA_HAVE_CBUF15) u15( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer15 ), |
1907,8 → 1912,8
`endif |
|
|
`ifdef HAVE_CH16 |
wb_dma_ch_rf #(16, `HAVE_ARS16, `HAVE_ED16, `HAVE_CBUF16) u16( |
`ifdef WDMA_HAVE_CH16 |
wb_dma_ch_rf #(16, `WDMA_HAVE_ARS16, `WDMA_HAVE_ED16, `WDMA_HAVE_CBUF16) u16( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer16 ), |
1946,7 → 1951,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(16, `HAVE_ARS16, `HAVE_ED16, `HAVE_CBUF16) u16( |
wb_dma_ch_rf_dummy #(16, `WDMA_HAVE_ARS16, `WDMA_HAVE_ED16, `WDMA_HAVE_CBUF16) u16( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer16 ), |
1986,8 → 1991,8
`endif |
|
|
`ifdef HAVE_CH17 |
wb_dma_ch_rf #(17, `HAVE_ARS17, `HAVE_ED17, `HAVE_CBUF17) u17( |
`ifdef WDMA_HAVE_CH17 |
wb_dma_ch_rf #(17, `WDMA_HAVE_ARS17, `WDMA_HAVE_ED17, `WDMA_HAVE_CBUF17) u17( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer17 ), |
2025,7 → 2030,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(17, `HAVE_ARS17, `HAVE_ED17, `HAVE_CBUF17) u17( |
wb_dma_ch_rf_dummy #(17, `WDMA_HAVE_ARS17, `WDMA_HAVE_ED17, `WDMA_HAVE_CBUF17) u17( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer17 ), |
2065,8 → 2070,8
`endif |
|
|
`ifdef HAVE_CH18 |
wb_dma_ch_rf #(18, `HAVE_ARS18, `HAVE_ED18, `HAVE_CBUF18) u18( |
`ifdef WDMA_HAVE_CH18 |
wb_dma_ch_rf #(18, `WDMA_HAVE_ARS18, `WDMA_HAVE_ED18, `WDMA_HAVE_CBUF18) u18( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer18 ), |
2104,7 → 2109,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(18, `HAVE_ARS18, `HAVE_ED18, `HAVE_CBUF18) u18( |
wb_dma_ch_rf_dummy #(18, `WDMA_HAVE_ARS18, `WDMA_HAVE_ED18, `WDMA_HAVE_CBUF18) u18( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer18 ), |
2144,8 → 2149,8
`endif |
|
|
`ifdef HAVE_CH19 |
wb_dma_ch_rf #(19, `HAVE_ARS19, `HAVE_ED19, `HAVE_CBUF19) u19( |
`ifdef WDMA_HAVE_CH19 |
wb_dma_ch_rf #(19, `WDMA_HAVE_ARS19, `WDMA_HAVE_ED19, `WDMA_HAVE_CBUF19) u19( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer19 ), |
2183,7 → 2188,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(19, `HAVE_ARS19, `HAVE_ED19, `HAVE_CBUF19) u19( |
wb_dma_ch_rf_dummy #(19, `WDMA_HAVE_ARS19, `WDMA_HAVE_ED19, `WDMA_HAVE_CBUF19) u19( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer19 ), |
2223,8 → 2228,8
`endif |
|
|
`ifdef HAVE_CH20 |
wb_dma_ch_rf #(20, `HAVE_ARS20, `HAVE_ED20, `HAVE_CBUF20) u20( |
`ifdef WDMA_HAVE_CH20 |
wb_dma_ch_rf #(20, `WDMA_HAVE_ARS20, `WDMA_HAVE_ED20, `WDMA_HAVE_CBUF20) u20( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer20 ), |
2262,7 → 2267,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(20, `HAVE_ARS20, `HAVE_ED20, `HAVE_CBUF20) u20( |
wb_dma_ch_rf_dummy #(20, `WDMA_HAVE_ARS20, `WDMA_HAVE_ED20, `WDMA_HAVE_CBUF20) u20( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer20 ), |
2302,8 → 2307,8
`endif |
|
|
`ifdef HAVE_CH21 |
wb_dma_ch_rf #(21, `HAVE_ARS21, `HAVE_ED21, `HAVE_CBUF21) u21( |
`ifdef WDMA_HAVE_CH21 |
wb_dma_ch_rf #(21, `WDMA_HAVE_ARS21, `WDMA_HAVE_ED21, `WDMA_HAVE_CBUF21) u21( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer21 ), |
2341,7 → 2346,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(21, `HAVE_ARS21, `HAVE_ED21, `HAVE_CBUF21) u21( |
wb_dma_ch_rf_dummy #(21, `WDMA_HAVE_ARS21, `WDMA_HAVE_ED21, `WDMA_HAVE_CBUF21) u21( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer21 ), |
2381,8 → 2386,8
`endif |
|
|
`ifdef HAVE_CH22 |
wb_dma_ch_rf #(22, `HAVE_ARS22, `HAVE_ED22, `HAVE_CBUF22) u22( |
`ifdef WDMA_HAVE_CH22 |
wb_dma_ch_rf #(22, `WDMA_HAVE_ARS22, `WDMA_HAVE_ED22, `WDMA_HAVE_CBUF22) u22( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer22 ), |
2420,7 → 2425,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(22, `HAVE_ARS22, `HAVE_ED22, `HAVE_CBUF22) u22( |
wb_dma_ch_rf_dummy #(22, `WDMA_HAVE_ARS22, `WDMA_HAVE_ED22, `WDMA_HAVE_CBUF22) u22( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer22 ), |
2460,8 → 2465,8
`endif |
|
|
`ifdef HAVE_CH23 |
wb_dma_ch_rf #(23, `HAVE_ARS23, `HAVE_ED23, `HAVE_CBUF23) u23( |
`ifdef WDMA_HAVE_CH23 |
wb_dma_ch_rf #(23, `WDMA_HAVE_ARS23, `WDMA_HAVE_ED23, `WDMA_HAVE_CBUF23) u23( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer23 ), |
2499,7 → 2504,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(23, `HAVE_ARS23, `HAVE_ED23, `HAVE_CBUF23) u23( |
wb_dma_ch_rf_dummy #(23, `WDMA_HAVE_ARS23, `WDMA_HAVE_ED23, `WDMA_HAVE_CBUF23) u23( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer23 ), |
2539,8 → 2544,8
`endif |
|
|
`ifdef HAVE_CH24 |
wb_dma_ch_rf #(24, `HAVE_ARS24, `HAVE_ED24, `HAVE_CBUF24) u24( |
`ifdef WDMA_HAVE_CH24 |
wb_dma_ch_rf #(24, `WDMA_HAVE_ARS24, `WDMA_HAVE_ED24, `WDMA_HAVE_CBUF24) u24( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer24 ), |
2578,7 → 2583,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(24, `HAVE_ARS24, `HAVE_ED24, `HAVE_CBUF24) u24( |
wb_dma_ch_rf_dummy #(24, `WDMA_HAVE_ARS24, `WDMA_HAVE_ED24, `WDMA_HAVE_CBUF24) u24( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer24 ), |
2618,8 → 2623,8
`endif |
|
|
`ifdef HAVE_CH25 |
wb_dma_ch_rf #(25, `HAVE_ARS25, `HAVE_ED25, `HAVE_CBUF25) u25( |
`ifdef WDMA_HAVE_CH25 |
wb_dma_ch_rf #(25, `WDMA_HAVE_ARS25, `WDMA_HAVE_ED25, `WDMA_HAVE_CBUF25) u25( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer25 ), |
2657,7 → 2662,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(25, `HAVE_ARS25, `HAVE_ED25, `HAVE_CBUF25) u25( |
wb_dma_ch_rf_dummy #(25, `WDMA_HAVE_ARS25, `WDMA_HAVE_ED25, `WDMA_HAVE_CBUF25) u25( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer25 ), |
2697,8 → 2702,8
`endif |
|
|
`ifdef HAVE_CH26 |
wb_dma_ch_rf #(26, `HAVE_ARS26, `HAVE_ED26, `HAVE_CBUF26) u26( |
`ifdef WDMA_HAVE_CH26 |
wb_dma_ch_rf #(26, `WDMA_HAVE_ARS26, `WDMA_HAVE_ED26, `WDMA_HAVE_CBUF26) u26( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer26 ), |
2736,7 → 2741,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(26, `HAVE_ARS26, `HAVE_ED26, `HAVE_CBUF26) u26( |
wb_dma_ch_rf_dummy #(26, `WDMA_HAVE_ARS26, `WDMA_HAVE_ED26, `WDMA_HAVE_CBUF26) u26( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer26 ), |
2776,8 → 2781,8
`endif |
|
|
`ifdef HAVE_CH27 |
wb_dma_ch_rf #(27, `HAVE_ARS27, `HAVE_ED27, `HAVE_CBUF27) u27( |
`ifdef WDMA_HAVE_CH27 |
wb_dma_ch_rf #(27, `WDMA_HAVE_ARS27, `WDMA_HAVE_ED27, `WDMA_HAVE_CBUF27) u27( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer27 ), |
2815,7 → 2820,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(27, `HAVE_ARS27, `HAVE_ED27, `HAVE_CBUF27) u27( |
wb_dma_ch_rf_dummy #(27, `WDMA_HAVE_ARS27, `WDMA_HAVE_ED27, `WDMA_HAVE_CBUF27) u27( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer27 ), |
2855,8 → 2860,8
`endif |
|
|
`ifdef HAVE_CH28 |
wb_dma_ch_rf #(28, `HAVE_ARS28, `HAVE_ED28, `HAVE_CBUF28) u28( |
`ifdef WDMA_HAVE_CH28 |
wb_dma_ch_rf #(28, `WDMA_HAVE_ARS28, `WDMA_HAVE_ED28, `WDMA_HAVE_CBUF28) u28( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer28 ), |
2894,7 → 2899,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(28, `HAVE_ARS28, `HAVE_ED28, `HAVE_CBUF28) u28( |
wb_dma_ch_rf_dummy #(28, `WDMA_HAVE_ARS28, `WDMA_HAVE_ED28, `WDMA_HAVE_CBUF28) u28( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer28 ), |
2934,8 → 2939,8
`endif |
|
|
`ifdef HAVE_CH29 |
wb_dma_ch_rf #(29, `HAVE_ARS29, `HAVE_ED29, `HAVE_CBUF29) u29( |
`ifdef WDMA_HAVE_CH29 |
wb_dma_ch_rf #(29, `WDMA_HAVE_ARS29, `WDMA_HAVE_ED29, `WDMA_HAVE_CBUF29) u29( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer29 ), |
2973,7 → 2978,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(29, `HAVE_ARS29, `HAVE_ED29, `HAVE_CBUF29) u29( |
wb_dma_ch_rf_dummy #(29, `WDMA_HAVE_ARS29, `WDMA_HAVE_ED29, `WDMA_HAVE_CBUF29) u29( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer29 ), |
3013,8 → 3018,8
`endif |
|
|
`ifdef HAVE_CH30 |
wb_dma_ch_rf #(30, `HAVE_ARS30, `HAVE_ED30, `HAVE_CBUF30) u30( |
`ifdef WDMA_HAVE_CH30 |
wb_dma_ch_rf #(30, `WDMA_HAVE_ARS30, `WDMA_HAVE_ED30, `WDMA_HAVE_CBUF30) u30( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer30 ), |
3052,7 → 3057,7
.ptr_set( ptr_set ) |
); |
`else |
wb_dma_ch_rf_dummy #(30, `HAVE_ARS30, `HAVE_ED30, `HAVE_CBUF30) u30( |
wb_dma_ch_rf_dummy #(30, `WDMA_HAVE_ARS30, `WDMA_HAVE_ED30, `WDMA_HAVE_CBUF30) u30( |
.clk( clk ), |
.rst( rst ), |
.pointer( pointer30 ), |
/trunk/rtl/verilog/wb_dma_de.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_de.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_de.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.3 2001/06/13 02:26:48 rudi |
// |
// |
232,7 → 238,7
wire a0_inc_en = csr[4]; // Source Address (Adr 0) increment enable |
wire a1_inc_en = csr[3]; // Dest. Address (Adr 1) increment enable |
wire ptr_valid = pointer[0]; |
wire use_ed = csr[`USE_ED]; |
wire use_ed = csr[`WDMA_USE_ED]; |
|
reg mast0_drdy_r; |
reg paused; |
480,7 → 486,7
begin |
if(pause_req) next_state = PAUSE; |
else |
if(de_start & !csr[`ERR]) |
if(de_start & !csr[`WDMA_ERR]) |
begin |
if(use_ed & !ptr_valid) next_state = LD_DESC1; |
else next_state = READ; |
527,7 → 533,7
de_txsz_we = 1'b1; |
de_adr0_we = 1'b1; |
de_adr1_we = 1'b1; |
if(use_ed & csr[`WRB] & nd) |
if(use_ed & csr[`WDMA_WRB] & nd) |
begin |
m0_we = 1'b1; |
m0_go = 1'b1; |
/trunk/rtl/verilog/wb_dma_pri_enc_sub.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_pri_enc_sub.v,v 1.1 2001-08-07 08:00:43 rudi Exp $ |
// $Id: wb_dma_pri_enc_sub.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-08-07 08:00:43 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,11 → 47,16
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/08/07 08:00:43 rudi |
// |
// |
// Split up priority encoder modules to separate files |
// |
// |
// |
// |
// |
// |
|
`include "wb_dma_defines.v" |
|
67,7 → 72,7
|
reg [7:0] pri_out; |
|
`ifdef PRI_8 |
`ifdef WDMA_PRI_8 |
always @(valid or pri_in) |
if(!valid) pri_out = 8'b0000_0001; |
else |
86,7 → 91,7
if(pri_in==3'h6) pri_out = 8'b0100_0000; |
else pri_out = 8'b1000_0000; |
`else |
`ifdef PRI_4 |
`ifdef WDMA_PRI_4 |
always @(valid or pri_in) |
if(!valid) pri_out = 8'b0000_0001; |
else |
/trunk/rtl/verilog/wb_dma_ch_pri_enc.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_ch_pri_enc.v,v 1.2 2001-08-07 08:00:43 rudi Exp $ |
// $Id: wb_dma_ch_pri_enc.v,v 1.3 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-08-07 08:00:43 $ |
// $Revision: 1.2 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.3 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,11
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.2 2001/08/07 08:00:43 rudi |
// |
// |
// Split up priority encoder modules to separate files |
// |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
110,7 → 115,7
wire [7:0] pri_out_tmp; |
reg [2:0] pri_out; |
|
`ifdef HAVE_CH1 |
`ifdef WDMA_HAVE_CH1 |
wb_dma_pri_enc_sub u0( |
.valid( valid[0] ), |
.pri_in( pri0 ), |
127,7 → 132,7
assign pri1_out = 0; |
`endif |
|
`ifdef HAVE_CH2 |
`ifdef WDMA_HAVE_CH2 |
wb_dma_pri_enc_sub u2( |
.valid( valid[2] ), |
.pri_in( pri2 ), |
137,7 → 142,7
assign pri2_out = 0; |
`endif |
|
`ifdef HAVE_CH3 |
`ifdef WDMA_HAVE_CH3 |
wb_dma_pri_enc_sub u3( |
.valid( valid[3] ), |
.pri_in( pri3 ), |
147,7 → 152,7
assign pri3_out = 0; |
`endif |
|
`ifdef HAVE_CH4 |
`ifdef WDMA_HAVE_CH4 |
wb_dma_pri_enc_sub u4( |
.valid( valid[4] ), |
.pri_in( pri4 ), |
157,7 → 162,7
assign pri4_out = 0; |
`endif |
|
`ifdef HAVE_CH5 |
`ifdef WDMA_HAVE_CH5 |
wb_dma_pri_enc_sub u5( |
.valid( valid[5] ), |
.pri_in( pri5 ), |
167,7 → 172,7
assign pri5_out = 0; |
`endif |
|
`ifdef HAVE_CH6 |
`ifdef WDMA_HAVE_CH6 |
wb_dma_pri_enc_sub u6( |
.valid( valid[6] ), |
.pri_in( pri6 ), |
177,7 → 182,7
assign pri6_out = 0; |
`endif |
|
`ifdef HAVE_CH7 |
`ifdef WDMA_HAVE_CH7 |
wb_dma_pri_enc_sub u7( |
.valid( valid[7] ), |
.pri_in( pri7 ), |
187,7 → 192,7
assign pri7_out = 0; |
`endif |
|
`ifdef HAVE_CH8 |
`ifdef WDMA_HAVE_CH8 |
wb_dma_pri_enc_sub u8( |
.valid( valid[8] ), |
.pri_in( pri8 ), |
197,7 → 202,7
assign pri8_out = 0; |
`endif |
|
`ifdef HAVE_CH9 |
`ifdef WDMA_HAVE_CH9 |
wb_dma_pri_enc_sub u9( |
.valid( valid[9] ), |
.pri_in( pri9 ), |
207,7 → 212,7
assign pri9_out = 0; |
`endif |
|
`ifdef HAVE_CH10 |
`ifdef WDMA_HAVE_CH10 |
wb_dma_pri_enc_sub u10( |
.valid( valid[10] ), |
.pri_in( pri10 ), |
217,7 → 222,7
assign pri10_out = 0; |
`endif |
|
`ifdef HAVE_CH11 |
`ifdef WDMA_HAVE_CH11 |
wb_dma_pri_enc_sub u11( |
.valid( valid[11] ), |
.pri_in( pri11 ), |
227,7 → 232,7
assign pri11_out = 0; |
`endif |
|
`ifdef HAVE_CH12 |
`ifdef WDMA_HAVE_CH12 |
wb_dma_pri_enc_sub u12( |
.valid( valid[12] ), |
.pri_in( pri12 ), |
237,7 → 242,7
assign pri12_out = 0; |
`endif |
|
`ifdef HAVE_CH13 |
`ifdef WDMA_HAVE_CH13 |
wb_dma_pri_enc_sub u13( |
.valid( valid[13] ), |
.pri_in( pri13 ), |
247,7 → 252,7
assign pri13_out = 0; |
`endif |
|
`ifdef HAVE_CH14 |
`ifdef WDMA_HAVE_CH14 |
wb_dma_pri_enc_sub u14( |
.valid( valid[14] ), |
.pri_in( pri14 ), |
257,7 → 262,7
assign pri14_out = 0; |
`endif |
|
`ifdef HAVE_CH15 |
`ifdef WDMA_HAVE_CH15 |
wb_dma_pri_enc_sub u15( |
.valid( valid[15] ), |
.pri_in( pri15 ), |
267,7 → 272,7
assign pri15_out = 0; |
`endif |
|
`ifdef HAVE_CH16 |
`ifdef WDMA_HAVE_CH16 |
wb_dma_pri_enc_sub u16( |
.valid( valid[16] ), |
.pri_in( pri16 ), |
277,7 → 282,7
assign pri16_out = 0; |
`endif |
|
`ifdef HAVE_CH17 |
`ifdef WDMA_HAVE_CH17 |
wb_dma_pri_enc_sub u17( |
.valid( valid[17] ), |
.pri_in( pri17 ), |
287,7 → 292,7
assign pri17_out = 0; |
`endif |
|
`ifdef HAVE_CH18 |
`ifdef WDMA_HAVE_CH18 |
wb_dma_pri_enc_sub u18( |
.valid( valid[18] ), |
.pri_in( pri18 ), |
297,7 → 302,7
assign pri18_out = 0; |
`endif |
|
`ifdef HAVE_CH19 |
`ifdef WDMA_HAVE_CH19 |
wb_dma_pri_enc_sub u19( |
.valid( valid[19] ), |
.pri_in( pri19 ), |
307,7 → 312,7
assign pri19_out = 0; |
`endif |
|
`ifdef HAVE_CH20 |
`ifdef WDMA_HAVE_CH20 |
wb_dma_pri_enc_sub u20( |
.valid( valid[20] ), |
.pri_in( pri20 ), |
317,7 → 322,7
assign pri20_out = 0; |
`endif |
|
`ifdef HAVE_CH21 |
`ifdef WDMA_HAVE_CH21 |
wb_dma_pri_enc_sub u21( |
.valid( valid[21] ), |
.pri_in( pri21 ), |
327,7 → 332,7
assign pri21_out = 0; |
`endif |
|
`ifdef HAVE_CH22 |
`ifdef WDMA_HAVE_CH22 |
wb_dma_pri_enc_sub u22( |
.valid( valid[22] ), |
.pri_in( pri22 ), |
337,7 → 342,7
assign pri22_out = 0; |
`endif |
|
`ifdef HAVE_CH23 |
`ifdef WDMA_HAVE_CH23 |
wb_dma_pri_enc_sub u23( |
.valid( valid[23] ), |
.pri_in( pri23 ), |
347,7 → 352,7
assign pri23_out = 0; |
`endif |
|
`ifdef HAVE_CH24 |
`ifdef WDMA_HAVE_CH24 |
wb_dma_pri_enc_sub u24( |
.valid( valid[24] ), |
.pri_in( pri24 ), |
357,7 → 362,7
assign pri24_out = 0; |
`endif |
|
`ifdef HAVE_CH25 |
`ifdef WDMA_HAVE_CH25 |
wb_dma_pri_enc_sub u25( |
.valid( valid[25] ), |
.pri_in( pri25 ), |
367,7 → 372,7
assign pri25_out = 0; |
`endif |
|
`ifdef HAVE_CH26 |
`ifdef WDMA_HAVE_CH26 |
wb_dma_pri_enc_sub u26( |
.valid( valid[26] ), |
.pri_in( pri26 ), |
377,7 → 382,7
assign pri26_out = 0; |
`endif |
|
`ifdef HAVE_CH27 |
`ifdef WDMA_HAVE_CH27 |
wb_dma_pri_enc_sub u27( |
.valid( valid[27] ), |
.pri_in( pri27 ), |
387,7 → 392,7
assign pri27_out = 0; |
`endif |
|
`ifdef HAVE_CH28 |
`ifdef WDMA_HAVE_CH28 |
wb_dma_pri_enc_sub u28( |
.valid( valid[28] ), |
.pri_in( pri28 ), |
397,7 → 402,7
assign pri28_out = 0; |
`endif |
|
`ifdef HAVE_CH29 |
`ifdef WDMA_HAVE_CH29 |
wb_dma_pri_enc_sub u29( |
.valid( valid[29] ), |
.pri_in( pri29 ), |
407,7 → 412,7
assign pri29_out = 0; |
`endif |
|
`ifdef HAVE_CH30 |
`ifdef WDMA_HAVE_CH30 |
wb_dma_pri_enc_sub u30( |
.valid( valid[30] ), |
.pri_in( pri30 ), |
427,7 → 432,7
pri28_out | pri29_out | pri30_out; |
|
always @(posedge clk) |
`ifdef PRI_8 |
`ifdef WDMA_PRI_8 |
if(pri_out_tmp[7]) pri_out <= #1 3'h7; |
else |
if(pri_out_tmp[6]) pri_out <= #1 3'h6; |
441,7 → 446,7
if(pri_out_tmp[2]) pri_out <= #1 3'h2; |
else |
`endif |
`ifdef PRI_4 |
`ifdef WDMA_PRI_4 |
if(pri_out_tmp[3]) pri_out <= #1 3'h3; |
else |
if(pri_out_tmp[2]) pri_out <= #1 3'h2; |
/trunk/rtl/verilog/wb_dma_wb_slv.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_wb_slv.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_wb_slv.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.2 2001/06/05 10:22:37 rudi |
// |
// |
120,7 → 126,7
// Misc Logic |
// |
|
assign rf_sel = `REG_SEL ; |
assign rf_sel = `WDMA_REG_SEL ; |
|
//////////////////////////////////////////////////////////////////// |
// |
/trunk/rtl/verilog/wb_dma_ch_sel.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_ch_sel.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_ch_sel.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.4 2001/06/14 08:52:00 rudi |
// |
// |
236,7 → 242,7
// Aliases |
// |
|
`ifdef PRI_8 |
`ifdef WDMA_PRI_8 |
assign pri0 = ch0_csr[15:13]; |
assign pri1 = ch1_csr[15:13]; |
assign pri2 = ch2_csr[15:13]; |
269,7 → 275,7
assign pri29 = ch29_csr[15:13]; |
assign pri30 = ch30_csr[15:13]; |
`else |
`ifdef PRI_4 |
`ifdef WDMA_PRI_4 |
assign pri0 = {1'b0, ch0_csr[14:13]}; |
assign pri1 = {1'b0, ch1_csr[14:13]}; |
assign pri2 = {1'b0, ch2_csr[14:13]}; |
350,37 → 356,37
always @(posedge clk) |
req_r <= #1 req_i & ~ack_o; |
|
assign valid[0] = ch0_csr[`CH_EN] & (ch0_csr[`MODE] ? (req_r[0] & !ack_o[0]) : 1'b1); |
assign valid[1] = ch1_csr[`CH_EN] & (ch1_csr[`MODE] ? (req_r[1] & !ack_o[1]) : 1'b1); |
assign valid[2] = ch2_csr[`CH_EN] & (ch2_csr[`MODE] ? (req_r[2] & !ack_o[2]) : 1'b1); |
assign valid[3] = ch3_csr[`CH_EN] & (ch3_csr[`MODE] ? (req_r[3] & !ack_o[3]) : 1'b1); |
assign valid[4] = ch4_csr[`CH_EN] & (ch4_csr[`MODE] ? (req_r[4] & !ack_o[4]) : 1'b1); |
assign valid[5] = ch5_csr[`CH_EN] & (ch5_csr[`MODE] ? (req_r[5] & !ack_o[5]) : 1'b1); |
assign valid[6] = ch6_csr[`CH_EN] & (ch6_csr[`MODE] ? (req_r[6] & !ack_o[6]) : 1'b1); |
assign valid[7] = ch7_csr[`CH_EN] & (ch7_csr[`MODE] ? (req_r[7] & !ack_o[7]) : 1'b1); |
assign valid[8] = ch8_csr[`CH_EN] & (ch8_csr[`MODE] ? (req_r[8] & !ack_o[8]) : 1'b1); |
assign valid[9] = ch9_csr[`CH_EN] & (ch9_csr[`MODE] ? (req_r[9] & !ack_o[9]) : 1'b1); |
assign valid[10] = ch10_csr[`CH_EN] & (ch10_csr[`MODE] ? (req_r[10] & !ack_o[10]) : 1'b1); |
assign valid[11] = ch11_csr[`CH_EN] & (ch11_csr[`MODE] ? (req_r[11] & !ack_o[11]) : 1'b1); |
assign valid[12] = ch12_csr[`CH_EN] & (ch12_csr[`MODE] ? (req_r[12] & !ack_o[12]) : 1'b1); |
assign valid[13] = ch13_csr[`CH_EN] & (ch13_csr[`MODE] ? (req_r[13] & !ack_o[13]) : 1'b1); |
assign valid[14] = ch14_csr[`CH_EN] & (ch14_csr[`MODE] ? (req_r[14] & !ack_o[14]) : 1'b1); |
assign valid[15] = ch15_csr[`CH_EN] & (ch15_csr[`MODE] ? (req_r[15] & !ack_o[15]) : 1'b1); |
assign valid[16] = ch16_csr[`CH_EN] & (ch16_csr[`MODE] ? (req_r[16] & !ack_o[16]) : 1'b1); |
assign valid[17] = ch17_csr[`CH_EN] & (ch17_csr[`MODE] ? (req_r[17] & !ack_o[17]) : 1'b1); |
assign valid[18] = ch18_csr[`CH_EN] & (ch18_csr[`MODE] ? (req_r[18] & !ack_o[18]) : 1'b1); |
assign valid[19] = ch19_csr[`CH_EN] & (ch19_csr[`MODE] ? (req_r[19] & !ack_o[19]) : 1'b1); |
assign valid[20] = ch20_csr[`CH_EN] & (ch20_csr[`MODE] ? (req_r[20] & !ack_o[20]) : 1'b1); |
assign valid[21] = ch21_csr[`CH_EN] & (ch21_csr[`MODE] ? (req_r[21] & !ack_o[21]) : 1'b1); |
assign valid[22] = ch22_csr[`CH_EN] & (ch22_csr[`MODE] ? (req_r[22] & !ack_o[22]) : 1'b1); |
assign valid[23] = ch23_csr[`CH_EN] & (ch23_csr[`MODE] ? (req_r[23] & !ack_o[23]) : 1'b1); |
assign valid[24] = ch24_csr[`CH_EN] & (ch24_csr[`MODE] ? (req_r[24] & !ack_o[24]) : 1'b1); |
assign valid[25] = ch25_csr[`CH_EN] & (ch25_csr[`MODE] ? (req_r[25] & !ack_o[25]) : 1'b1); |
assign valid[26] = ch26_csr[`CH_EN] & (ch26_csr[`MODE] ? (req_r[26] & !ack_o[26]) : 1'b1); |
assign valid[27] = ch27_csr[`CH_EN] & (ch27_csr[`MODE] ? (req_r[27] & !ack_o[27]) : 1'b1); |
assign valid[28] = ch28_csr[`CH_EN] & (ch28_csr[`MODE] ? (req_r[28] & !ack_o[28]) : 1'b1); |
assign valid[29] = ch29_csr[`CH_EN] & (ch29_csr[`MODE] ? (req_r[29] & !ack_o[29]) : 1'b1); |
assign valid[30] = ch30_csr[`CH_EN] & (ch30_csr[`MODE] ? (req_r[30] & !ack_o[30]) : 1'b1); |
assign valid[0] = ch0_csr[`WDMA_CH_EN] & (ch0_csr[`WDMA_MODE] ? (req_r[0] & !ack_o[0]) : 1'b1); |
assign valid[1] = ch1_csr[`WDMA_CH_EN] & (ch1_csr[`WDMA_MODE] ? (req_r[1] & !ack_o[1]) : 1'b1); |
assign valid[2] = ch2_csr[`WDMA_CH_EN] & (ch2_csr[`WDMA_MODE] ? (req_r[2] & !ack_o[2]) : 1'b1); |
assign valid[3] = ch3_csr[`WDMA_CH_EN] & (ch3_csr[`WDMA_MODE] ? (req_r[3] & !ack_o[3]) : 1'b1); |
assign valid[4] = ch4_csr[`WDMA_CH_EN] & (ch4_csr[`WDMA_MODE] ? (req_r[4] & !ack_o[4]) : 1'b1); |
assign valid[5] = ch5_csr[`WDMA_CH_EN] & (ch5_csr[`WDMA_MODE] ? (req_r[5] & !ack_o[5]) : 1'b1); |
assign valid[6] = ch6_csr[`WDMA_CH_EN] & (ch6_csr[`WDMA_MODE] ? (req_r[6] & !ack_o[6]) : 1'b1); |
assign valid[7] = ch7_csr[`WDMA_CH_EN] & (ch7_csr[`WDMA_MODE] ? (req_r[7] & !ack_o[7]) : 1'b1); |
assign valid[8] = ch8_csr[`WDMA_CH_EN] & (ch8_csr[`WDMA_MODE] ? (req_r[8] & !ack_o[8]) : 1'b1); |
assign valid[9] = ch9_csr[`WDMA_CH_EN] & (ch9_csr[`WDMA_MODE] ? (req_r[9] & !ack_o[9]) : 1'b1); |
assign valid[10] = ch10_csr[`WDMA_CH_EN] & (ch10_csr[`WDMA_MODE] ? (req_r[10] & !ack_o[10]) : 1'b1); |
assign valid[11] = ch11_csr[`WDMA_CH_EN] & (ch11_csr[`WDMA_MODE] ? (req_r[11] & !ack_o[11]) : 1'b1); |
assign valid[12] = ch12_csr[`WDMA_CH_EN] & (ch12_csr[`WDMA_MODE] ? (req_r[12] & !ack_o[12]) : 1'b1); |
assign valid[13] = ch13_csr[`WDMA_CH_EN] & (ch13_csr[`WDMA_MODE] ? (req_r[13] & !ack_o[13]) : 1'b1); |
assign valid[14] = ch14_csr[`WDMA_CH_EN] & (ch14_csr[`WDMA_MODE] ? (req_r[14] & !ack_o[14]) : 1'b1); |
assign valid[15] = ch15_csr[`WDMA_CH_EN] & (ch15_csr[`WDMA_MODE] ? (req_r[15] & !ack_o[15]) : 1'b1); |
assign valid[16] = ch16_csr[`WDMA_CH_EN] & (ch16_csr[`WDMA_MODE] ? (req_r[16] & !ack_o[16]) : 1'b1); |
assign valid[17] = ch17_csr[`WDMA_CH_EN] & (ch17_csr[`WDMA_MODE] ? (req_r[17] & !ack_o[17]) : 1'b1); |
assign valid[18] = ch18_csr[`WDMA_CH_EN] & (ch18_csr[`WDMA_MODE] ? (req_r[18] & !ack_o[18]) : 1'b1); |
assign valid[19] = ch19_csr[`WDMA_CH_EN] & (ch19_csr[`WDMA_MODE] ? (req_r[19] & !ack_o[19]) : 1'b1); |
assign valid[20] = ch20_csr[`WDMA_CH_EN] & (ch20_csr[`WDMA_MODE] ? (req_r[20] & !ack_o[20]) : 1'b1); |
assign valid[21] = ch21_csr[`WDMA_CH_EN] & (ch21_csr[`WDMA_MODE] ? (req_r[21] & !ack_o[21]) : 1'b1); |
assign valid[22] = ch22_csr[`WDMA_CH_EN] & (ch22_csr[`WDMA_MODE] ? (req_r[22] & !ack_o[22]) : 1'b1); |
assign valid[23] = ch23_csr[`WDMA_CH_EN] & (ch23_csr[`WDMA_MODE] ? (req_r[23] & !ack_o[23]) : 1'b1); |
assign valid[24] = ch24_csr[`WDMA_CH_EN] & (ch24_csr[`WDMA_MODE] ? (req_r[24] & !ack_o[24]) : 1'b1); |
assign valid[25] = ch25_csr[`WDMA_CH_EN] & (ch25_csr[`WDMA_MODE] ? (req_r[25] & !ack_o[25]) : 1'b1); |
assign valid[26] = ch26_csr[`WDMA_CH_EN] & (ch26_csr[`WDMA_MODE] ? (req_r[26] & !ack_o[26]) : 1'b1); |
assign valid[27] = ch27_csr[`WDMA_CH_EN] & (ch27_csr[`WDMA_MODE] ? (req_r[27] & !ack_o[27]) : 1'b1); |
assign valid[28] = ch28_csr[`WDMA_CH_EN] & (ch28_csr[`WDMA_MODE] ? (req_r[28] & !ack_o[28]) : 1'b1); |
assign valid[29] = ch29_csr[`WDMA_CH_EN] & (ch29_csr[`WDMA_MODE] ? (req_r[29] & !ack_o[29]) : 1'b1); |
assign valid[30] = ch30_csr[`WDMA_CH_EN] & (ch30_csr[`WDMA_MODE] ? (req_r[30] & !ack_o[30]) : 1'b1); |
|
always @(posedge clk) |
ndr_r <= #1 nd_i & req_i; |
399,97 → 405,97
|
// Ack outputs for HW handshake mode |
always @(posedge clk) |
ack_o[0] <= #1 (ch_sel == 5'h0) & ch0_csr[`MODE] & de_ack; |
ack_o[0] <= #1 (ch_sel == 5'h0) & ch0_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[1] <= #1 (ch_sel == 5'h1) & ch1_csr[`MODE] & de_ack; |
ack_o[1] <= #1 (ch_sel == 5'h1) & ch1_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[2] <= #1 (ch_sel == 5'h2) & ch2_csr[`MODE] & de_ack; |
ack_o[2] <= #1 (ch_sel == 5'h2) & ch2_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[3] <= #1 (ch_sel == 5'h3) & ch3_csr[`MODE] & de_ack; |
ack_o[3] <= #1 (ch_sel == 5'h3) & ch3_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[4] <= #1 (ch_sel == 5'h4) & ch4_csr[`MODE] & de_ack; |
ack_o[4] <= #1 (ch_sel == 5'h4) & ch4_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[5] <= #1 (ch_sel == 5'h5) & ch5_csr[`MODE] & de_ack; |
ack_o[5] <= #1 (ch_sel == 5'h5) & ch5_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[6] <= #1 (ch_sel == 5'h6) & ch6_csr[`MODE] & de_ack; |
ack_o[6] <= #1 (ch_sel == 5'h6) & ch6_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[7] <= #1 (ch_sel == 5'h7) & ch7_csr[`MODE] & de_ack; |
ack_o[7] <= #1 (ch_sel == 5'h7) & ch7_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[8] <= #1 (ch_sel == 5'h8) & ch8_csr[`MODE] & de_ack; |
ack_o[8] <= #1 (ch_sel == 5'h8) & ch8_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[9] <= #1 (ch_sel == 5'h9) & ch9_csr[`MODE] & de_ack; |
ack_o[9] <= #1 (ch_sel == 5'h9) & ch9_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[10] <= #1 (ch_sel == 5'ha) & ch10_csr[`MODE] & de_ack; |
ack_o[10] <= #1 (ch_sel == 5'ha) & ch10_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[11] <= #1 (ch_sel == 5'hb) & ch11_csr[`MODE] & de_ack; |
ack_o[11] <= #1 (ch_sel == 5'hb) & ch11_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[12] <= #1 (ch_sel == 5'hc) & ch12_csr[`MODE] & de_ack; |
ack_o[12] <= #1 (ch_sel == 5'hc) & ch12_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[13] <= #1 (ch_sel == 5'hd) & ch13_csr[`MODE] & de_ack; |
ack_o[13] <= #1 (ch_sel == 5'hd) & ch13_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[14] <= #1 (ch_sel == 5'he) & ch14_csr[`MODE] & de_ack; |
ack_o[14] <= #1 (ch_sel == 5'he) & ch14_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[15] <= #1 (ch_sel == 5'hf) & ch15_csr[`MODE] & de_ack; |
ack_o[15] <= #1 (ch_sel == 5'hf) & ch15_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[16] <= #1 (ch_sel == 5'h10) & ch16_csr[`MODE] & de_ack; |
ack_o[16] <= #1 (ch_sel == 5'h10) & ch16_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[17] <= #1 (ch_sel == 5'h11) & ch17_csr[`MODE] & de_ack; |
ack_o[17] <= #1 (ch_sel == 5'h11) & ch17_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[18] <= #1 (ch_sel == 5'h12) & ch18_csr[`MODE] & de_ack; |
ack_o[18] <= #1 (ch_sel == 5'h12) & ch18_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[19] <= #1 (ch_sel == 5'h13) & ch19_csr[`MODE] & de_ack; |
ack_o[19] <= #1 (ch_sel == 5'h13) & ch19_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[20] <= #1 (ch_sel == 5'h14) & ch20_csr[`MODE] & de_ack; |
ack_o[20] <= #1 (ch_sel == 5'h14) & ch20_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[21] <= #1 (ch_sel == 5'h15) & ch21_csr[`MODE] & de_ack; |
ack_o[21] <= #1 (ch_sel == 5'h15) & ch21_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[22] <= #1 (ch_sel == 5'h16) & ch22_csr[`MODE] & de_ack; |
ack_o[22] <= #1 (ch_sel == 5'h16) & ch22_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[23] <= #1 (ch_sel == 5'h17) & ch23_csr[`MODE] & de_ack; |
ack_o[23] <= #1 (ch_sel == 5'h17) & ch23_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[24] <= #1 (ch_sel == 5'h18) & ch24_csr[`MODE] & de_ack; |
ack_o[24] <= #1 (ch_sel == 5'h18) & ch24_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[25] <= #1 (ch_sel == 5'h19) & ch25_csr[`MODE] & de_ack; |
ack_o[25] <= #1 (ch_sel == 5'h19) & ch25_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[26] <= #1 (ch_sel == 5'h1a) & ch26_csr[`MODE] & de_ack; |
ack_o[26] <= #1 (ch_sel == 5'h1a) & ch26_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[27] <= #1 (ch_sel == 5'h1b) & ch27_csr[`MODE] & de_ack; |
ack_o[27] <= #1 (ch_sel == 5'h1b) & ch27_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[28] <= #1 (ch_sel == 5'h1c) & ch28_csr[`MODE] & de_ack; |
ack_o[28] <= #1 (ch_sel == 5'h1c) & ch28_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[29] <= #1 (ch_sel == 5'h1d) & ch29_csr[`MODE] & de_ack; |
ack_o[29] <= #1 (ch_sel == 5'h1d) & ch29_csr[`WDMA_MODE] & de_ack; |
|
always @(posedge clk) |
ack_o[30] <= #1 (ch_sel == 5'h1e) & ch30_csr[`MODE] & de_ack; |
ack_o[30] <= #1 (ch_sel == 5'h1e) & ch30_csr[`WDMA_MODE] & de_ack; |
|
// Channel Select |
always @(posedge clk or negedge rst) |
1236,7 → 1242,7
.advance( next_ch ) |
); |
|
`ifdef PRI_4 |
`ifdef WDMA_PRI_4 |
// RR Arbiter for priority 2 |
wb_dma_ch_arb u3( |
.clk( clk ), |
1255,7 → 1261,7
); |
`endif |
|
`ifdef PRI_8 |
`ifdef WDMA_PRI_8 |
// RR Arbiter for priority 2 |
wb_dma_ch_arb u3( |
.clk( clk ), |
1307,7 → 1313,7
`endif |
|
// Ground unused outputs |
`ifdef PRI_8 |
`ifdef WDMA_PRI_8 |
// Do nothing |
`else |
assign gnt_p4 = 0; |
1314,7 → 1320,7
assign gnt_p5 = 0; |
assign gnt_p6 = 0; |
assign gnt_p7 = 0; |
`ifdef PRI_4 |
`ifdef WDMA_PRI_4 |
// Do nothing |
`else |
assign gnt_p2 = 0; |
/trunk/rtl/verilog/wb_dma_defines.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_defines.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_defines.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.2 2001/06/05 10:22:37 rudi |
// |
// |
65,147 → 71,148
`timescale 1ns / 10ps |
|
// Identify how many channels are in this implementation |
`define CH_COUNT 4 |
`define WDMA_CH_COUNT 4 |
|
`define HAVE_CH1 1 |
`define HAVE_CH2 1 |
`define HAVE_CH3 1 |
`define WDMA_HAVE_CH1 1 |
`define WDMA_HAVE_CH2 1 |
`define WDMA_HAVE_CH3 1 |
|
/* |
`define HAVE_CH4 1 |
`define HAVE_CH5 1 |
`define HAVE_CH6 1 |
`define HAVE_CH7 1 |
`define HAVE_CH8 1 |
`define HAVE_CH9 1 |
`define HAVE_CH10 1 |
`define HAVE_CH11 1 |
`define HAVE_CH12 1 |
`define HAVE_CH13 1 |
`define HAVE_CH14 1 |
`define HAVE_CH15 1 |
`define HAVE_CH16 1 |
`define HAVE_CH17 1 |
`define HAVE_CH18 1 |
`define HAVE_CH19 1 |
`define HAVE_CH20 1 |
`define HAVE_CH21 1 |
`define HAVE_CH22 1 |
`define HAVE_CH23 1 |
`define HAVE_CH24 1 |
`define HAVE_CH25 1 |
`define HAVE_CH26 1 |
`define HAVE_CH27 1 |
`define HAVE_CH28 1 |
`define HAVE_CH29 1 |
`define HAVE_CH30 1 |
`define WDMA_HAVE_CH4 1 |
`define WDMA_HAVE_CH5 1 |
`define WDMA_HAVE_CH6 1 |
`define WDMA_HAVE_CH7 1 |
`define WDMA_HAVE_CH8 1 |
`define WDMA_HAVE_CH9 1 |
`define WDMA_HAVE_CH10 1 |
`define WDMA_HAVE_CH11 1 |
`define WDMA_HAVE_CH12 1 |
`define WDMA_HAVE_CH13 1 |
`define WDMA_HAVE_CH14 1 |
`define WDMA_HAVE_CH15 1 |
`define WDMA_HAVE_CH16 1 |
`define WDMA_HAVE_CH17 1 |
`define WDMA_HAVE_CH18 1 |
`define WDMA_HAVE_CH19 1 |
`define WDMA_HAVE_CH20 1 |
`define WDMA_HAVE_CH21 1 |
`define WDMA_HAVE_CH22 1 |
`define WDMA_HAVE_CH23 1 |
`define WDMA_HAVE_CH24 1 |
`define WDMA_HAVE_CH25 1 |
`define WDMA_HAVE_CH26 1 |
`define WDMA_HAVE_CH27 1 |
`define WDMA_HAVE_CH28 1 |
`define WDMA_HAVE_CH29 1 |
`define WDMA_HAVE_CH30 1 |
*/ |
|
`define HAVE_ARS0 1 |
`define HAVE_ARS1 1 |
`define HAVE_ARS2 1 |
`define HAVE_ARS3 1 |
`define HAVE_ARS4 1 |
`define HAVE_ARS5 1 |
`define HAVE_ARS6 1 |
`define HAVE_ARS7 1 |
`define HAVE_ARS8 1 |
`define HAVE_ARS9 1 |
`define HAVE_ARS10 1 |
`define HAVE_ARS11 1 |
`define HAVE_ARS12 1 |
`define HAVE_ARS13 1 |
`define HAVE_ARS14 1 |
`define HAVE_ARS15 1 |
`define HAVE_ARS16 1 |
`define HAVE_ARS17 1 |
`define HAVE_ARS18 1 |
`define HAVE_ARS19 1 |
`define HAVE_ARS20 1 |
`define HAVE_ARS21 1 |
`define HAVE_ARS22 1 |
`define HAVE_ARS23 1 |
`define HAVE_ARS24 1 |
`define HAVE_ARS25 1 |
`define HAVE_ARS26 1 |
`define HAVE_ARS27 1 |
`define HAVE_ARS28 1 |
`define HAVE_ARS29 1 |
`define HAVE_ARS30 1 |
`define WDMA_HAVE_ARS0 1 |
`define WDMA_HAVE_ARS1 1 |
`define WDMA_HAVE_ARS2 1 |
`define WDMA_HAVE_ARS3 1 |
`define WDMA_HAVE_ARS4 1 |
`define WDMA_HAVE_ARS5 1 |
`define WDMA_HAVE_ARS6 1 |
`define WDMA_HAVE_ARS7 1 |
`define WDMA_HAVE_ARS8 1 |
`define WDMA_HAVE_ARS9 1 |
`define WDMA_HAVE_ARS10 1 |
`define WDMA_HAVE_ARS11 1 |
`define WDMA_HAVE_ARS12 1 |
`define WDMA_HAVE_ARS13 1 |
`define WDMA_HAVE_ARS14 1 |
`define WDMA_HAVE_ARS15 1 |
`define WDMA_HAVE_ARS16 1 |
`define WDMA_HAVE_ARS17 1 |
`define WDMA_HAVE_ARS18 1 |
`define WDMA_HAVE_ARS19 1 |
`define WDMA_HAVE_ARS20 1 |
`define WDMA_HAVE_ARS21 1 |
`define WDMA_HAVE_ARS22 1 |
`define WDMA_HAVE_ARS23 1 |
`define WDMA_HAVE_ARS24 1 |
`define WDMA_HAVE_ARS25 1 |
`define WDMA_HAVE_ARS26 1 |
`define WDMA_HAVE_ARS27 1 |
`define WDMA_HAVE_ARS28 1 |
`define WDMA_HAVE_ARS29 1 |
`define WDMA_HAVE_ARS30 1 |
|
`define HAVE_ED0 1 |
`define HAVE_ED1 1 |
`define HAVE_ED2 1 |
`define HAVE_ED3 1 |
`define HAVE_ED4 1 |
`define HAVE_ED5 1 |
`define HAVE_ED6 1 |
`define HAVE_ED7 1 |
`define HAVE_ED8 1 |
`define HAVE_ED9 1 |
`define HAVE_ED10 1 |
`define HAVE_ED11 1 |
`define HAVE_ED12 1 |
`define HAVE_ED13 1 |
`define HAVE_ED14 1 |
`define HAVE_ED15 1 |
`define HAVE_ED16 1 |
`define HAVE_ED17 1 |
`define HAVE_ED18 1 |
`define HAVE_ED19 1 |
`define HAVE_ED20 1 |
`define HAVE_ED21 1 |
`define HAVE_ED22 1 |
`define HAVE_ED23 1 |
`define HAVE_ED24 1 |
`define HAVE_ED25 1 |
`define HAVE_ED26 1 |
`define HAVE_ED27 1 |
`define HAVE_ED28 1 |
`define HAVE_ED29 1 |
`define HAVE_ED30 1 |
`define WDMA_HAVE_ED0 1 |
`define WDMA_HAVE_ED1 1 |
`define WDMA_HAVE_ED2 1 |
`define WDMA_HAVE_ED3 1 |
`define WDMA_HAVE_ED4 1 |
`define WDMA_HAVE_ED5 1 |
`define WDMA_HAVE_ED6 1 |
`define WDMA_HAVE_ED7 1 |
`define WDMA_HAVE_ED8 1 |
`define WDMA_HAVE_ED9 1 |
`define WDMA_HAVE_ED10 1 |
`define WDMA_HAVE_ED11 1 |
`define WDMA_HAVE_ED12 1 |
`define WDMA_HAVE_ED13 1 |
`define WDMA_HAVE_ED14 1 |
`define WDMA_HAVE_ED15 1 |
`define WDMA_HAVE_ED16 1 |
`define WDMA_HAVE_ED17 1 |
`define WDMA_HAVE_ED18 1 |
`define WDMA_HAVE_ED19 1 |
`define WDMA_HAVE_ED20 1 |
`define WDMA_HAVE_ED21 1 |
`define WDMA_HAVE_ED22 1 |
`define WDMA_HAVE_ED23 1 |
`define WDMA_HAVE_ED24 1 |
`define WDMA_HAVE_ED25 1 |
`define WDMA_HAVE_ED26 1 |
`define WDMA_HAVE_ED27 1 |
`define WDMA_HAVE_ED28 1 |
`define WDMA_HAVE_ED29 1 |
`define WDMA_HAVE_ED30 1 |
|
`define HAVE_CBUF0 1 |
`define HAVE_CBUF1 1 |
`define HAVE_CBUF2 1 |
`define HAVE_CBUF3 1 |
`define HAVE_CBUF4 1 |
`define HAVE_CBUF5 1 |
`define HAVE_CBUF6 1 |
`define HAVE_CBUF7 1 |
`define HAVE_CBUF8 1 |
`define HAVE_CBUF9 1 |
`define HAVE_CBUF10 1 |
`define HAVE_CBUF11 1 |
`define HAVE_CBUF12 1 |
`define HAVE_CBUF13 1 |
`define HAVE_CBUF14 1 |
`define HAVE_CBUF15 1 |
`define HAVE_CBUF16 1 |
`define HAVE_CBUF17 1 |
`define HAVE_CBUF18 1 |
`define HAVE_CBUF19 1 |
`define HAVE_CBUF20 1 |
`define HAVE_CBUF21 1 |
`define HAVE_CBUF22 1 |
`define HAVE_CBUF23 1 |
`define HAVE_CBUF24 1 |
`define HAVE_CBUF25 1 |
`define HAVE_CBUF26 1 |
`define HAVE_CBUF27 1 |
`define HAVE_CBUF28 1 |
`define HAVE_CBUF29 1 |
`define HAVE_CBUF30 1 |
`define WDMA_HAVE_CBUF0 1 |
`define WDMA_HAVE_CBUF1 1 |
`define WDMA_HAVE_CBUF2 1 |
`define WDMA_HAVE_CBUF3 1 |
`define WDMA_HAVE_CBUF4 1 |
`define WDMA_HAVE_CBUF5 1 |
`define WDMA_HAVE_CBUF6 1 |
`define WDMA_HAVE_CBUF7 1 |
`define WDMA_HAVE_CBUF8 1 |
`define WDMA_HAVE_CBUF9 1 |
`define WDMA_HAVE_CBUF10 1 |
`define WDMA_HAVE_CBUF11 1 |
`define WDMA_HAVE_CBUF12 1 |
`define WDMA_HAVE_CBUF13 1 |
`define WDMA_HAVE_CBUF14 1 |
`define WDMA_HAVE_CBUF15 1 |
`define WDMA_HAVE_CBUF16 1 |
`define WDMA_HAVE_CBUF17 1 |
`define WDMA_HAVE_CBUF18 1 |
`define WDMA_HAVE_CBUF19 1 |
`define WDMA_HAVE_CBUF20 1 |
`define WDMA_HAVE_CBUF21 1 |
`define WDMA_HAVE_CBUF22 1 |
`define WDMA_HAVE_CBUF23 1 |
`define WDMA_HAVE_CBUF24 1 |
`define WDMA_HAVE_CBUF25 1 |
`define WDMA_HAVE_CBUF26 1 |
`define WDMA_HAVE_CBUF27 1 |
`define WDMA_HAVE_CBUF28 1 |
`define WDMA_HAVE_CBUF29 1 |
`define WDMA_HAVE_CBUF30 1 |
|
// The two define statements below select the number of priorities |
// that the DMA engine supports. |
// if PRI_8 is defined, 8 levels of priorities are supported. If PRI_4 |
// is defined then 4 levels of priorities are supported. If neither is |
// defined then two levels of priorities are supported. |
// PRI_4 and PRI_8 should never be both defined at the same time. |
//`define PRI_8 1 |
`define PRI_4 1 |
// if WDMA_PRI_8 is defined, 8 levels of priorities are supported. If |
// WDMA_PRI_4 is defined then 4 levels of priorities are supported. |
// If neither is defined then two levels of priorities are supported. |
// WDMA_PRI_4 and WDMA_PRI_8 should never be both defined at the same |
// time. |
|
//`define WDMA_PRI_8 1 |
`define WDMA_PRI_4 1 |
|
// This define selects how the slave interface determines if |
// the internal register file or pass through mode are selected. |
216,23 → 223,22
// the higher will be the initial delay when pass-through mode is selected. |
// Here we look at the top 8 address bit. If they are all 1, the |
// register file is selected. Use this with caution !!! |
`define REG_SEL (wb_addr_i[31:24] == 8'hff) |
`define WDMA_REG_SEL (wb_addr_i[31:24] == 8'hff) |
|
|
// CSR Bits |
`define CH_EN 0 |
`define DST_SEL 1 |
`define SRC_SEL 2 |
`define INC_DST 3 |
`define INC_SRC 4 |
`define MODE 5 |
`define ARS 6 |
`define USE_ED 7 |
`define WRB 8 |
`define STOP 9 |
`define BUSY 10 |
`define DONE 11 |
`define ERR 12 |
`define ED_EOL 20 |
`define WDMA_CH_EN 0 |
`define WDMA_DST_SEL 1 |
`define WDMA_SRC_SEL 2 |
`define WDMA_INC_DST 3 |
`define WDMA_INC_SRC 4 |
`define WDMA_MODE 5 |
`define WDMA_ARS 6 |
`define WDMA_USE_ED 7 |
`define WDMA_WRB 8 |
`define WDMA_STOP 9 |
`define WDMA_BUSY 10 |
`define WDMA_DONE 11 |
`define WDMA_ERR 12 |
`define WDMA_ED_EOL 20 |
|
|
/trunk/rtl/verilog/wb_dma_ch_rf.v
37,10 → 37,10
|
// CVS Log |
// |
// $Id: wb_dma_ch_rf.v,v 1.1 2001-07-29 08:57:02 rudi Exp $ |
// $Id: wb_dma_ch_rf.v,v 1.2 2001-08-15 05:40:30 rudi Exp $ |
// |
// $Date: 2001-07-29 08:57:02 $ |
// $Revision: 1.1 $ |
// $Date: 2001-08-15 05:40:30 $ |
// $Revision: 1.2 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
47,6 → 47,12
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.1 2001/07/29 08:57:02 rudi |
// |
// |
// 1) Changed Directory Structure |
// 2) Added restart signal (REST) |
// |
// Revision 1.3 2001/06/14 08:50:01 rudi |
// |
// Changed Module Name to match file name. |
199,7 → 205,7
ch_err, ch_done, ch_busy, 1'b0, ch_csr_r[8:1], ch_enable}; |
assign ch_txsz = {5'h0, ch_chk_sz_r, ch_sz_inf, 3'h0, ch_tot_sz_r}; |
|
assign ch_enable = ch_csr_r[0] & (HAVE_CBUF ? !ch_dis : 1'b1); |
assign ch_enable = ch_csr_r[`WDMA_CH_EN] & (HAVE_CBUF ? !ch_dis : 1'b1); |
|
//////////////////////////////////////////////////////////////////// |
// |
219,7 → 225,7
assign sw_pointer_we = wb_rf_we & (wb_rf_adr[7:3] == CH_ADR) & (wb_rf_adr[2:0] == 3'h7); |
|
assign ch_done_we = (((ch_sel==CH_NO) & dma_done_all) | ndnr) & |
(ch_csr[`USE_ED] ? ch_eol : !ch_csr[`ARS]); |
(ch_csr[`WDMA_USE_ED] ? ch_eol : !ch_csr[`WDMA_ARS]); |
assign chunk_done_we = (ch_sel==CH_NO) & dma_done; |
assign ch_err_we = (ch_sel==CH_NO) & dma_err; |
assign ch_csr_dewe = de_csr_we & (ch_sel==CH_NO); |
233,7 → 239,7
always @(posedge clk) |
ch_rl <= #1 HAVE_ARS & ( |
(rest_en & dma_rest) | |
((ch_sel==CH_NO) & dma_done_all & ch_csr[`ARS] & !ch_csr[`USE_ED]) |
((ch_sel==CH_NO) & dma_done_all & ch_csr[`WDMA_ARS] & !ch_csr[`WDMA_USE_ED]) |
); |
|
// --------------------------------------------------- |
256,7 → 262,7
else |
if(HAVE_ED) |
begin |
if(ch_csr_dewe) ch_eol <= #1 de_csr[`ED_EOL]; |
if(ch_csr_dewe) ch_eol <= #1 de_csr[`WDMA_ED_EOL]; |
else |
if(ch_done_we) ch_eol <= #1 1'b0; |
end |
287,7 → 293,7
if(ch_csr_we) ch_csr_r <= #1 wb_rf_din[8:0]; |
else |
begin |
if(ch_done_we) ch_csr_r[`CH_EN] <= #1 1'b0; |
if(ch_done_we) ch_csr_r[`WDMA_CH_EN] <= #1 1'b0; |
if(ch_csr_dewe) ch_csr_r[4:1] <= #1 de_csr[19:16]; |
end |
|
295,7 → 301,7
always @(posedge clk or negedge rst) |
if(!rst) ch_done <= #1 1'b0; |
else |
if(ch_csr_we) ch_done <= #1 !wb_rf_din[`CH_EN]; |
if(ch_csr_we) ch_done <= #1 !wb_rf_din[`WDMA_CH_EN]; |
else |
if(ch_done_we) ch_done <= #1 1'b1; |
|
305,7 → 311,7
|
// stop bit |
always @(posedge clk) |
ch_stop <= #1 ch_csr_we & wb_rf_din[`STOP]; |
ch_stop <= #1 ch_csr_we & wb_rf_din[`WDMA_STOP]; |
|
// error bit |
always @(posedge clk or negedge rst) |
371,13 → 377,7
{ch_chk_sz_r, ch_tot_sz_r} <= #1 ch_txsz_s; |
|
// txsz shadow register |
/* |
always @(posedge clk) |
if((ch_txsz_we | (rest_en & ch_txsz_dewe & de_fetch_descr) ) |
& HAVE_ARS) ch_txsz_s <= #1 {wb_rf_din[26:16], wb_rf_din[11:0]}; |
*/ |
|
always @(posedge clk) |
if(HAVE_ARS) |
begin |
|
387,9 → 387,6
ch_txsz_s[11:0] <= #1 de_txsz[11:0]; |
end |
|
|
|
|
// Infinite Size indicator |
always @(posedge clk) |
if(ch_txsz_we) ch_sz_inf <= #1 wb_rf_din[15]; |
404,13 → 401,7
if(ch_rl) ch_adr0_r <= #1 ch_adr0_s; |
|
// Adr0 shadow register |
/* |
always @(posedge clk) |
if((ch_adr0_we | (rest_en & ch_adr0_dewe & de_fetch_descr) ) |
& HAVE_ARS) ch_adr0_s <= #1 wb_rf_din[31:2]; |
*/ |
|
always @(posedge clk) |
if(HAVE_ARS) |
begin |
if(ch_adr0_we) ch_adr0_s <= #1 wb_rf_din[31:2]; |
419,7 → 410,6
ch_adr0_s <= #1 de_adr0[31:2]; |
end |
|
|
// --------------------------------------------------- |
// AM0 |
always @(posedge clk or negedge rst) |
437,13 → 427,7
if(ch_rl) ch_adr1_r <= #1 ch_adr1_s; |
|
// Adr1 shadow register |
/* |
always @(posedge clk) |
if((ch_adr1_we | (rest_en & ch_adr1_dewe & de_fetch_descr) ) |
& HAVE_ARS) ch_adr1_s <= #1 wb_rf_din[31:2]; |
*/ |
|
always @(posedge clk) |
if(HAVE_ARS) |
begin |
if(ch_adr1_we) ch_adr1_s <= #1 wb_rf_din[31:2]; |
/trunk/doc/dma_doc.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/sim/rtl_sim/bin/Makefile
2,7 → 2,7
all: sim |
|
SHELL = /bin/sh |
MS="-s" |
MS=-s |
|
########################################################################## |
# |
58,12 → 58,12
$(_TARGETS_) $(_TB_) |
|
simw: |
@$(MAKE) -s sim ACCESS="-ACCESS +r" WAVES="-DEFINE WAVES" |
@$(MAKE) $(MS) sim ACCESS="-ACCESS +r" WAVES="-DEFINE WAVES" |
|
sim: |
@echo "" |
@echo "----- Running NCVLOG ... ----------" |
$(MAKE) $(MS) vlog \ |
@$(MAKE) $(MS) vlog \ |
TARGETS="$(_TARGETS_)" \ |
TB="$(_TB_)" \ |
INCDIR=$(INCDIR) \ |
70,11 → 70,11
WAVES="$(WAVES)" |
@echo "" |
@echo "----- Running NCELAB ... ----------" |
$(MAKE) $(MS) elab \ |
@$(MAKE) $(MS) elab \ |
ACCESS="$(ACCESS)" TOP=$(_TOP_) |
@echo "" |
@echo "----- Running NCSIM ... ----------" |
$(MAKE) $(MS) ncsim TOP=$(_TOP_) |
@$(MAKE) $(MS) ncsim TOP=$(_TOP_) |
@echo "" |
|
hal: |