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

Subversion Repositories wb_dma

[/] [wb_dma/] [trunk/] [rtl/] [verilog/] [wb_dma_ch_rf.v] - Diff between revs 10 and 13

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 10 Rev 13
Line 35... Line 35...
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
 
 
//  CVS Log
//  CVS Log
//
//
//  $Id: wb_dma_ch_rf.v,v 1.3 2001-10-19 04:35:04 rudi Exp $
//  $Id: wb_dma_ch_rf.v,v 1.4 2001-10-30 02:06:17 rudi Exp $
//
//
//  $Date: 2001-10-19 04:35:04 $
//  $Date: 2001-10-30 02:06:17 $
//  $Revision: 1.3 $
//  $Revision: 1.4 $
//  $Author: rudi $
//  $Author: rudi $
//  $Locker:  $
//  $Locker:  $
//  $State: Exp $
//  $State: Exp $
//
//
// Change History:
// Change History:
//               $Log: not supported by cvs2svn $
//               $Log: not supported by cvs2svn $
 
//               Revision 1.3  2001/10/19 04:35:04  rudi
 
//
 
//               - Made the core parameterized
 
//
//               Revision 1.2  2001/08/15 05:40:30  rudi
//               Revision 1.2  2001/08/15 05:40:30  rudi
//
//
//               - Changed IO names to be more clear.
//               - Changed IO names to be more clear.
//               - Uniquifyed define names to be core specific.
//               - Uniquifyed define names to be core specific.
//               - Added Section 3.10, describing DMA restart.
//               - Added Section 3.10, describing DMA restart.
Line 200... Line 204...
// Aliases
// Aliases
//
//
 
 
assign ch_adr0          = CH_EN ? {ch_adr0_r, 2'h0}   : 32'h0;
assign ch_adr0          = CH_EN ? {ch_adr0_r, 2'h0}   : 32'h0;
assign ch_adr1          = CH_EN ? {ch_adr1_r, 2'h0}   : 32'h0;
assign ch_adr1          = CH_EN ? {ch_adr1_r, 2'h0}   : 32'h0;
assign ch_am0           = CH_EN ? {ch_am0_r, 4'h0}    : 32'h0;
assign ch_am0           = (CH_EN & HAVE_CBUF) ? {ch_am0_r, 4'h0}    : 32'hffff_fff0;
assign ch_am1           = CH_EN ? {ch_am1_r, 4'h0}    : 32'h0;
assign ch_am1           = (CH_EN & HAVE_CBUF) ? {ch_am1_r, 4'h0}    : 32'hffff_fff0;
assign sw_pointer       = CH_EN ? {sw_pointer_r,2'h0} : 32'h0;
assign sw_pointer       = (CH_EN & HAVE_CBUF) ? {sw_pointer_r,2'h0} : 32'h0;
 
 
assign pointer          = CH_EN ? {pointer_r, 3'h0, ptr_valid} : 32'h0;
assign pointer          = CH_EN ? {pointer_r, 3'h0, ptr_valid} : 32'h0;
assign pointer_s        = CH_EN ? {pointer_sr, 4'h0}  : 32'h0;
assign pointer_s        = CH_EN ? {pointer_sr, 4'h0}  : 32'h0;
assign ch_csr           = CH_EN ? {9'h0, int_src_r, ch_csr_r3, rest_en, ch_csr_r2,
assign ch_csr           = CH_EN ? {9'h0, int_src_r, ch_csr_r3, rest_en, ch_csr_r2,
                                        ch_err, ch_done, ch_busy, 1'b0, ch_csr_r[8:1], ch_enable} : 32'h0;
                                        ch_err, ch_done, ch_busy, 1'b0, ch_csr_r[8:1], ch_enable} : 32'h0;
Line 385... Line 389...
                else
                else
                if(ch_csr_re)           int_src_r[0] <= #1 1'b0;
                if(ch_csr_re)           int_src_r[0] <= #1 1'b0;
           end
           end
 
 
// Interrupt Output
// Interrupt Output
assign int = |(int_src_r & ch_csr_r3);
assign int = |(int_src_r & ch_csr_r3) & CH_EN;
 
 
// ---------------------------------------------------
// ---------------------------------------------------
// TXZS
// TXZS
always @(posedge clk)
always @(posedge clk)
        if(CH_EN)
        if(CH_EN)
Line 447... Line 451...
// ---------------------------------------------------
// ---------------------------------------------------
// AM0
// AM0
always @(posedge clk or negedge rst)
always @(posedge clk or negedge rst)
        if(!rst)                        ch_am0_r <= #1 28'hfffffff;
        if(!rst)                        ch_am0_r <= #1 28'hfffffff;
        else
        else
        if(ch_am0_we & HAVE_CBUF)       ch_am0_r <= #1 wb_rf_din[31:4];
        if(ch_am0_we)           ch_am0_r <= #1 wb_rf_din[31:4];
 
 
// ---------------------------------------------------
// ---------------------------------------------------
// ADR1
// ADR1
always @(posedge clk)
always @(posedge clk)
        if(CH_EN)
        if(CH_EN)
Line 491... Line 495...
// Software Pointer Match logic
// Software Pointer Match logic
 
 
assign cmp_adr = ch_csr[2] ? ch_adr1[30:2] : ch_adr0[30:2];
assign cmp_adr = ch_csr[2] ? ch_adr1[30:2] : ch_adr0[30:2];
 
 
always @(posedge clk)
always @(posedge clk)
        ch_dis <= #1 (CH_EN & HAVE_CBUF) ? ((sw_pointer[30:2] == cmp_adr) & sw_pointer[31]) : 1'b0;
        ch_dis <= #1 CH_EN & HAVE_CBUF & (sw_pointer[30:2] == cmp_adr) & sw_pointer[31];
 
 
endmodule
endmodule
 
 
 
 
module wb_dma_ch_rf_dummy(clk, rst,
module wb_dma_ch_rf_dummy(clk, rst,

powered by: WebSVN 2.1.0

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