URL
https://opencores.org/ocsvn/wbif_68k/wbif_68k/trunk
Subversion Repositories wbif_68k
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 5 to Rev 6
- ↔ Reverse comparison
Rev 5 → Rev 6
/tags/initial/rtl/verilog/dragonball_wbmaster.v
File deleted
/trunk/rtl/verilog/dragonball_wbmaster.v
File deleted
/wbif_68k/trunk/rtl/verilog/dragonball_wbmaster.v
0,0 → 1,157
///////////////////////////////////////////////////////////////////// |
//// //// |
//// OpenCores/Dragonix DragonBall/68K to WISHBONE Interface //// |
//// //// |
//// Author: Richard Herveille //// |
//// richard@asics.ws //// |
//// www.asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2002 Richard Herveille //// |
//// richard@asics.ws //// |
//// //// |
//// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
// CVS Log |
// |
// $Id: dragonball_wbmaster.v,v 1.3 2003-01-09 16:46:14 rherveille Exp $ |
// |
// $Date: 2003-01-09 16:46:14 $ |
// $Revision: 1.3 $ |
// $Author: rherveille $ |
// $Locker: $ |
// $State: Exp $ |
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// Revision 1.2 2002/12/22 16:09:33 rherveille |
// Timing enhancement bug fixes |
// |
// |
|
|
|
// |
// This core converts a 16bit DragonBall bus interface into a 16bit |
// WISHBONE Master interface |
// |
|
// synopsys translate_off |
`include "timescale.v" |
// synopsys translate_on |
|
module dragonball_wbmaster( |
clk, reset_n, |
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 |
); |
|
// |
// Parameters |
// |
parameter adr_hi = 9; |
|
|
// |
// Inputs & outputs |
// |
|
// Motorola 68K bus |
input clk; // master clock |
input reset_n; // asynchronous active low reset |
input [adr_hi:1] a; // address inputs |
input cs_n; // active low wishbone range chip select |
inout [ 15:0] d; // data in-out |
input lwe_n, uwe_n; // active low lower-write enable, upper write enable |
input oe_n; // active low output enable signal |
output dtack_n; // active low data acknowledge |
output berr; // bus error |
|
// 16bit, 8bit granular WISHBONE bus master |
output clk_o; // clock |
output rst_o; // reset (asynchronous active low) |
output cyc_o; // cycle |
output stb_o; // strobe (cycle and strobe are the same signal) |
output [adr_hi:1] adr_o; // address |
output [ 1:0] sel_o; // select line (16bit bus ==> 2 select lines) |
output we_o; // write enable |
output [ 15:0] dat_o; // data output |
input [ 15:0] dat_i; // data input |
input ack_i; // normal bus termination |
input err_i; // abnormal bus termination (bus error) |
|
// |
// Module body |
// |
|
reg cyc_o, stb_o; |
reg [adr_hi:1] adr_o; |
reg [ 1:0] sel_o; |
reg we_o; |
reg dtack; |
reg [ 15:0] sdat_i; |
|
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 uwe = !uwe_n; // generate active high hi_write_enable signal |
wire oe = !oe_n; // generate active high output enable signal |
|
assign clk_o = clk; // wishbone clock == external clock |
assign rst_o = reset_n; // reset == external reset |
|
assign berr = err_i; |
|
always @(posedge clk or negedge reset_n) |
if (!reset_n) |
begin |
cyc_o <= #1 1'b0; |
stb_o <= #1 1'b0; |
adr_o <= #1 {{adr_hi-1}{1'b0}}; |
sel_o <= #1 2'b00; |
we_o <= #1 1'b0; |
dtack <= #1 1'b0; |
sdat_i <= #1 16'h0; |
end |
else |
begin |
cyc_o <= #1 cs; // assert cyc_o when CS asserted |
stb_o <= #1 cs; // assert stb_o when CS asserted |
|
adr_o <= #1 a; // address == external address |
sel_o <= #1 oe ? 2'b11 : {uwe, lwe}; // generate select lines; |
// read (oe asserted): SEL[1:0] = '11' |
// write (oe negated): SEL[1:0] = 'uwe, lwe' |
we_o <= #1 uwe | lwe; // write == uwe OR lwe asserted |
|
dtack <= #1 ack_i & !dtack; // generate DTACK signal |
|
sdat_i <= #1 dat_i; // synchronize dat_i |
end |
|
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 |
|
endmodule |
|
wbif_68k/trunk
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: wbif_68k/web_uploads
===================================================================
--- wbif_68k/web_uploads (nonexistent)
+++ wbif_68k/web_uploads (revision 6)
wbif_68k/web_uploads
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: wbif_68k/branches
===================================================================
--- wbif_68k/branches (nonexistent)
+++ wbif_68k/branches (revision 6)
wbif_68k/branches
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: wbif_68k/tags/initial/rtl/verilog/dragonball_wbmaster.v
===================================================================
--- wbif_68k/tags/initial/rtl/verilog/dragonball_wbmaster.v (nonexistent)
+++ wbif_68k/tags/initial/rtl/verilog/dragonball_wbmaster.v (revision 6)
@@ -0,0 +1,148 @@
+/////////////////////////////////////////////////////////////////////
+//// ////
+//// OpenCores/Dragonix DragonBall/68K to WISHBONE Interface ////
+//// ////
+//// Author: Richard Herveille ////
+//// richard@asics.ws ////
+//// www.asics.ws ////
+//// ////
+/////////////////////////////////////////////////////////////////////
+//// ////
+//// Copyright (C) 2002 Richard Herveille ////
+//// richard@asics.ws ////
+//// ////
+//// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY ////
+//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ////
+//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ////
+//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR ////
+//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ////
+//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ////
+//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ////
+//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ////
+//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ////
+//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ////
+//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ////
+//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ////
+//// POSSIBILITY OF SUCH DAMAGE. ////
+//// ////
+/////////////////////////////////////////////////////////////////////
+
+// CVS Log
+//
+// $Id: dragonball_wbmaster.v,v 1.1.1.1 2002-12-03 09:02:31 rherveille Exp $
+//
+// $Date: 2002-12-03 09:02:31 $
+// $Revision: 1.1.1.1 $
+// $Author: rherveille $
+// $Locker: $
+// $State: Exp $
+//
+
+
+
+//
+// This core converts a 16bit DragonBall bus interface into a 16bit
+// WISHBONE Master interface
+//
+
+// synopsys translate_off
+`include "timescale.v"
+// synopsys translate_on
+
+module dragonix_wbmaster(
+ clk, reset_n,
+ 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
+);
+
+ //
+ // Parameters
+ //
+ parameter adr_hi = 9;
+
+
+ //
+ // Inputs & outputs
+ //
+
+ // Motorola 68K bus
+ input clk; // master clock
+ input reset_n; // asynchronous active low reset
+ input [adr_hi:1] a; // address inputs
+ input cs_n; // active low wishbone range chip select
+ inout [ 15:0] d; // data in-out
+ input lwe_n, uwe_n; // active low lower-write enable, upper write enable
+ input oe_n; // active low output enable signal
+ output dtack_n; // active low data acknowledge
+ output berr; // bus error
+
+ // 16bit, 8bit granular WISHBONE bus master
+ output clk_o; // clock
+ output rst_o; // reset (asynchronous active low)
+ output cyc_o; // cycle
+ output stb_o; // strobe (cycle and strobe are the same signal)
+ output [adr_hi:1] adr_o; // address
+ output [ 1:0] sel_o; // select line (16bit bus ==> 2 select lines)
+ output we_o; // write enable
+ output [ 15:0] dat_o; // data output
+ input [ 15:0] dat_i; // data input
+ input ack_i; // normal bus termination
+ input err_i; // abnormal bus termination (bus error)
+
+ //
+ // Module body
+ //
+
+ reg cyc_o, stb_o;
+ reg [adr_hi:1] adr_o;
+ reg [ 1:0] sel_o;
+ reg we_o;
+ reg [ 15:0] dat_o;
+ reg dtack;
+
+ 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 uwe = !uwe_n; // generate active high hi_write_enable signal
+ wire oe = !oe_n; // generate active high output enable signal
+
+ assign clk_o = clk; // wishbone clock == external clock
+ assign rst_o = reset_n; // reset == external reset
+
+ assign berr = err_i;
+
+ always @(posedge clk or negedge reset_n)
+ if (!reset_n)
+ begin
+ cyc_o <= #1 1'b0;
+ stb_o <= #1 1'b0;
+ adr_o <= #1 {{adr_hi-1}{1'b0}};
+ sel_o <= #1 2'b00;
+ we_o <= #1 1'b0;
+ dat_o <= #1 16'h0;
+ dtack <= #1 1'b0;
+ end
+ else
+ begin
+ cyc_o <= #1 cs; // assert cyc_o when CS asserted
+ stb_o <= #1 cs; // assert stb_o when CS asserted
+
+ adr_o <= #1 a; // address == external address
+ sel_o <= #1 oe ? 2'b11 : {uwe, lwe}; // generate select lines;
+ // read (oe asserted): SEL[1:0] = '11'
+ // write (oe negated): SEL[1:0] = 'uwe, lwe'
+ 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
+ end
+
+ assign d = (cs & oe) ? dat_i : 16'hzzzz; // generate databus tri-state buffers
+ assign dtack_n = !dtack; // generate active low DTACK signal
+
+endmodule
+
Index: wbif_68k/tags
===================================================================
--- wbif_68k/tags (nonexistent)
+++ wbif_68k/tags (revision 6)
wbif_68k/tags
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##