Line 10... |
Line 10... |
//// ////
|
//// ////
|
//// Downloaded from: http://www.opencores.org/cores/mem_ctrl/ ////
|
//// Downloaded from: http://www.opencores.org/cores/mem_ctrl/ ////
|
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
//// ////
|
//// ////
|
//// Copyright (C) 2000 Rudolf Usselmann ////
|
//// Copyright (C) 2000-2002 Rudolf Usselmann ////
|
|
//// www.asics.ws ////
|
//// rudi@asics.ws ////
|
//// rudi@asics.ws ////
|
//// ////
|
//// ////
|
//// This source file may be used and distributed without ////
|
//// This source file may be used and distributed without ////
|
//// restriction provided that this copyright statement is not ////
|
//// restriction provided that this copyright statement is not ////
|
//// removed from the file and that any derivative work contains ////
|
//// removed from the file and that any derivative work contains ////
|
Line 36... |
Line 37... |
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
|
|
// CVS Log
|
// CVS Log
|
//
|
//
|
// $Id: mc_wb_if.v,v 1.5 2001-12-11 02:47:19 rudi Exp $
|
// $Id: mc_wb_if.v,v 1.6 2002-01-21 13:08:52 rudi Exp $
|
//
|
//
|
// $Date: 2001-12-11 02:47:19 $
|
// $Date: 2002-01-21 13:08:52 $
|
// $Revision: 1.5 $
|
// $Revision: 1.6 $
|
// $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.5 2001/12/11 02:47:19 rudi
|
|
//
|
|
// - Made some changes not to expect clock during reset ...
|
|
//
|
// Revision 1.4 2001/11/29 02:16:28 rudi
|
// Revision 1.4 2001/11/29 02:16:28 rudi
|
//
|
//
|
//
|
//
|
// - More Synthesis cleanup, mostly for speed
|
// - More Synthesis cleanup, mostly for speed
|
// - Several bug fixes
|
// - Several bug fixes
|
Line 209... |
Line 214... |
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
//
|
//
|
// WB Ack
|
// WB Ack
|
//
|
//
|
|
|
|
wire wb_err_d;
|
|
|
|
// Ack no longer asserted when wb_err is asserted
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
if(rst) wb_ack_o <= #1 1'b0;
|
if(rst) wb_ack_o <= #1 1'b0;
|
else wb_ack_o <= #1 `MC_MEM_SEL ? mem_ack :
|
else wb_ack_o <= #1 `MC_MEM_SEL ? mem_ack & !wb_err_d :
|
`MC_REG_SEL & wb_cyc_i & wb_stb_i & !wb_ack_o;
|
`MC_REG_SEL & wb_cyc_i & wb_stb_i & !wb_ack_o;
|
|
|
|
assign wb_err_d = wb_cyc_i & wb_stb_i & (par_err | err | wp_err);
|
|
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
if(rst) wb_err <= #1 1'b0;
|
if(rst) wb_err <= #1 1'b0;
|
else wb_err <= #1 wb_cyc_i & wb_stb_i & `MC_MEM_SEL &
|
else wb_err <= #1 `MC_MEM_SEL & wb_err_d & !wb_err;
|
(par_err | err | wp_err) & !wb_err;
|
|
|
|
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
//
|
//
|
// Memory Wait Logic
|
// Memory Wait Logic
|
//
|
//
|