Line 1... |
Line 1... |
// $Id: aeMB_xecu.v,v 1.2 2007-11-02 19:20:58 sybreon Exp $
|
// $Id: aeMB_xecu.v,v 1.3 2007-11-03 08:34:55 sybreon Exp $
|
//
|
//
|
// AEMB MAIN EXECUTION ALU
|
// AEMB MAIN EXECUTION ALU
|
//
|
//
|
// Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
// Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
|
//
|
//
|
Line 18... |
Line 18... |
// License along with this library; if not, write to the Free Software
|
// License along with this library; if not, write to the Free Software
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
// USA
|
// USA
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.2 2007/11/02 19:20:58 sybreon
|
|
// Added better (beta) interrupt support.
|
|
// Changed MSR_IE to disabled at reset as per MB docs.
|
|
//
|
// Revision 1.1 2007/11/02 03:25:41 sybreon
|
// Revision 1.1 2007/11/02 03:25:41 sybreon
|
// New EDK 3.2 compatible design with optional barrel-shifter and multiplier.
|
// New EDK 3.2 compatible design with optional barrel-shifter and multiplier.
|
// Fixed various minor data hazard bugs.
|
// Fixed various minor data hazard bugs.
|
// Code compatible with -O0/1/2/3/s generated code.
|
// Code compatible with -O0/1/2/3/s generated code.
|
//
|
//
|
Line 50... |
Line 54... |
input [31:0] rREGA, rREGB;
|
input [31:0] rREGA, rREGB;
|
input [1:0] rMXSRC, rMXTGT;
|
input [1:0] rMXSRC, rMXTGT;
|
input [4:0] rRA;
|
input [4:0] rRA;
|
input [2:0] rMXALU;
|
input [2:0] rMXALU;
|
input rBRA, rDLY;
|
input rBRA, rDLY;
|
|
|
//input [1:0] rXCE;
|
//input [1:0] rXCE;
|
input [31:0] rSIMM;
|
input [31:0] rSIMM;
|
input [15:0] rIMM;
|
input [15:0] rIMM;
|
input [5:0] rOPC;
|
input [5:0] rOPC;
|
input [4:0] rRD;
|
input [4:0] rRD;
|
Line 241... |
Line 246... |
2'o1: xDWBSEL <= (wADD[1]) ? 4'h3 : 4'hC;
|
2'o1: xDWBSEL <= (wADD[1]) ? 4'h3 : 4'hC;
|
2'o2: xDWBSEL <= 4'hF;
|
2'o2: xDWBSEL <= 4'hF;
|
default: xDWBSEL <= 4'hX;
|
default: xDWBSEL <= 4'hX;
|
endcase // case (rOPC[1:0])
|
endcase // case (rOPC[1:0])
|
|
|
/*
|
|
case (wADD[1:0])
|
|
2'o0: case (rOPC[1:0])
|
|
2'o0: xDWBSEL <= 4'h8;
|
|
2'o1: xDWBSEL <= 4'hC;
|
|
default: xDWBSEL <= 4'hF;
|
|
endcase // case (rOPC[1:0])
|
|
2'o1: xDWBSEL <= 4'h4;
|
|
2'o2: xDWBSEL <= (rOPC[0]) ? 4'h3 : 4'h2;
|
|
2'o3: xDWBSEL <= 4'h1;
|
|
endcase // case (wADD[1:0])
|
|
*/
|
|
|
|
// --- SYNC ---
|
// --- SYNC ---
|
|
|
always @(posedge gclk)
|
always @(posedge gclk)
|
if (grst) begin
|
if (grst) begin
|
//rMSR_IE <= 1'b1;
|
|
/*AUTORESET*/
|
/*AUTORESET*/
|
// Beginning of autoreset for uninitialized flops
|
// Beginning of autoreset for uninitialized flops
|
rDWBSEL <= 4'h0;
|
rDWBSEL <= 4'h0;
|
rMSR_BE <= 1'h0;
|
rMSR_BE <= 1'h0;
|
rMSR_BIP <= 1'h0;
|
rMSR_BIP <= 1'h0;
|