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

Subversion Repositories wbif_68k

[/] [wbif_68k/] [trunk/] [rtl/] [verilog/] [dragonball_wbmaster.v] - Diff between revs 2 and 4

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

Rev 2 Rev 4
Line 32... Line 32...
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
 
 
//  CVS Log
//  CVS Log
//
//
//  $Id: dragonball_wbmaster.v,v 1.1.1.1 2002-12-03 09:02:31 rherveille Exp $
//  $Id: dragonball_wbmaster.v,v 1.2 2002-12-22 16:09:33 rherveille Exp $
//
//
//  $Date: 2002-12-03 09:02:31 $
//  $Date: 2002-12-22 16:09:33 $
//  $Revision: 1.1.1.1 $
//  $Revision: 1.2 $
//  $Author: rherveille $
//  $Author: rherveille $
//  $Locker:  $
//  $Locker:  $
//  $State: Exp $
//  $State: Exp $
//
//
 
// Change History:
 
//               $Log: not supported by cvs2svn $
 
//
 
 
 
 
 
 
//
//
// This core converts a 16bit DragonBall bus interface into a 16bit
// This core converts a 16bit DragonBall bus interface into a 16bit
Line 52... Line 55...
 
 
// synopsys translate_off
// synopsys translate_off
`include "timescale.v"
`include "timescale.v"
// synopsys translate_on
// synopsys translate_on
 
 
module dragonix_wbmaster(
module dragonball_wbmaster(
  clk, reset_n,
  clk, reset_n,
  a, cs_n, d, lwe_n, uwe_n, oe_n, dtack_n, berr,
  a, cs_n, d, lwe_n, uwe_n, oe_n, dtack_n, berr,
  clk_o, rst_o, cyc_o, stb_o, adr_o, sel_o, we_o, dat_o, dat_i, ack_i, err_i
  clk_o, rst_o, cyc_o, stb_o, adr_o, sel_o, we_o, dat_o, dat_i, ack_i, err_i
);
);
 
 
Line 100... Line 103...
 
 
  reg            cyc_o, stb_o;
  reg            cyc_o, stb_o;
  reg [adr_hi:1] adr_o;
  reg [adr_hi:1] adr_o;
  reg [     1:0] sel_o;
  reg [     1:0] sel_o;
  reg            we_o;
  reg            we_o;
  reg [    15:0] dat_o;
 
  reg            dtack;
  reg            dtack;
 
  reg [    15:0] sdat_i;
 
 
  wire cs  = !cs_n & !(ack_i | err_i | dtack);   // generate active high chip select signal
  wire cs  = !cs_n & !(ack_i | err_i | dtack);   // generate active high chip select signal
  wire lwe = !lwe_n;                             // generate active high lo_write_enable signal
  wire lwe = !lwe_n;                             // generate active high lo_write_enable signal
  wire uwe = !uwe_n;                             // generate active high hi_write_enable signal
  wire uwe = !uwe_n;                             // generate active high hi_write_enable signal
  wire oe  = !oe_n;                              // generate active high output enable signal
  wire oe  = !oe_n;                              // generate active high output enable signal
Line 121... Line 124...
          cyc_o <= #1 1'b0;
          cyc_o <= #1 1'b0;
          stb_o <= #1 1'b0;
          stb_o <= #1 1'b0;
          adr_o <= #1 {{adr_hi-1}{1'b0}};
          adr_o <= #1 {{adr_hi-1}{1'b0}};
          sel_o <= #1 2'b00;
          sel_o <= #1 2'b00;
          we_o  <= #1 1'b0;
          we_o  <= #1 1'b0;
          dat_o <= #1 16'h0;
 
          dtack <= #1 1'b0;
          dtack <= #1 1'b0;
 
                  sdat_i <= #1 16'h0;
      end
      end
    else
    else
      begin
      begin
          cyc_o <= #1 cs;                        // assert cyc_o when CS asserted
          cyc_o <= #1 cs;                        // assert cyc_o when CS asserted
          stb_o <= #1 cs;                        // assert stb_o when CS asserted
          stb_o <= #1 cs;                        // assert stb_o when CS asserted
Line 134... Line 137...
          adr_o <= #1 a;                         // address == external address
          adr_o <= #1 a;                         // address == external address
          sel_o <= #1 oe ? 2'b11 : {uwe, lwe};   // generate select lines;
          sel_o <= #1 oe ? 2'b11 : {uwe, lwe};   // generate select lines;
                                                 // read (oe asserted): SEL[1:0] = '11'
                                                 // read (oe asserted): SEL[1:0] = '11'
                                                 // write (oe negated): SEL[1:0] = 'uwe, lwe'
                                                 // write (oe negated): SEL[1:0] = 'uwe, lwe'
          we_o  <= #1 uwe | lwe;                 // write == uwe OR lwe asserted
          we_o  <= #1 uwe | lwe;                 // write == uwe OR lwe asserted
          dat_o <= #1 d;                         // dat_o == external data
 
 
 
          dtack <= ack_i & !dtack;               // generate DTACK signal
          dtack  <= #1 ack_i & !dtack;           // generate DTACK signal
 
 
 
                  sdat_i <= #1 dat_i;                    // synchronize dat_i
      end
      end
 
 
  assign d       = (cs & oe) ? dat_i : 16'hzzzz; // generate databus tri-state buffers
  assign dat_o   = d;                            // dat_o==external databus (not synchronised!!)
 
 
 
  assign d       = (~cs_n & oe) ? sdat_i : 16'hzzzz; // generate databus tri-state buffers
  assign dtack_n = !dtack;                       // generate active low DTACK signal
  assign dtack_n = !dtack;                       // generate active low DTACK signal
 
 
endmodule
endmodule
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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