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

Subversion Repositories aemb

[/] [aemb/] [branches/] [AEMB2_712/] [rtl/] [verilog/] [aeMB_ctrl.v] - Diff between revs 50 and 51

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

Rev 50 Rev 51
Line 1... Line 1...
// $Id: aeMB_ctrl.v,v 1.3 2007-11-08 14:17:47 sybreon Exp $
// $Id: aeMB_ctrl.v,v 1.4 2007-11-08 17:48:14 sybreon Exp $
//
//
// AEMB CONTROL UNIT
// AEMB CONTROL UNIT
// 
// 
// 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.3  2007/11/08 14:17:47  sybreon
 
// Parameterised optional components.
 
//
// Revision 1.2  2007/11/02 19:20:58  sybreon
// Revision 1.2  2007/11/02 19:20:58  sybreon
// Added better (beta) interrupt support.
// Added better (beta) interrupt support.
// Changed MSR_IE to disabled at reset as per MB docs.
// Changed MSR_IE to disabled at reset as per MB docs.
//
//
// Revision 1.1  2007/11/02 03:25:40  sybreon
// Revision 1.1  2007/11/02 03:25:40  sybreon
Line 34... Line 37...
   // Outputs
   // Outputs
   rMXDST, rMXSRC, rMXTGT, rMXALT, rMXALU, rRW, rDWBSTB, dwb_stb_o,
   rMXDST, rMXSRC, rMXTGT, rMXALT, rMXALU, rRW, rDWBSTB, dwb_stb_o,
   dwb_wre_o,
   dwb_wre_o,
   // Inputs
   // Inputs
   rXCE, rDLY, rIMM, rALT, rOPC, rRD, rRA, rRB, rPC, rBRA, rMSR_IE,
   rXCE, rDLY, rIMM, rALT, rOPC, rRD, rRA, rRB, rPC, rBRA, rMSR_IE,
   dwb_ack_i, gclk, grst, gena
   dwb_ack_i, iwb_ack_i, gclk, grst, gena
   );
   );
   // INTERNAL   
   // INTERNAL   
   //output [31:2] rPCLNK;
   //output [31:2] rPCLNK;
   output [1:0]  rMXDST;
   output [1:0]  rMXDST;
   output [1:0]  rMXSRC, rMXTGT, rMXALT;
   output [1:0]  rMXSRC, rMXTGT, rMXALT;
Line 58... Line 61...
   // DATA WISHBONE
   // DATA WISHBONE
   output        dwb_stb_o;
   output        dwb_stb_o;
   output        dwb_wre_o;
   output        dwb_wre_o;
   input         dwb_ack_i;
   input         dwb_ack_i;
 
 
 
   // INST WISHBONE
 
   input         iwb_ack_i;
 
 
   // SYSTEM
   // SYSTEM
   input         gclk, grst, gena;
   input         gclk, grst, gena;
 
 
   // --- DECODE INSTRUCTIONS
   // --- DECODE INSTRUCTIONS
   // TODO: Simplify
   // TODO: Simplify
Line 137... Line 143...
   reg [31:2]    rPCLNK, xPCLNK;
   reg [31:2]    rPCLNK, xPCLNK;
   reg [1:0]      rMXDST, xMXDST;
   reg [1:0]      rMXDST, xMXDST;
   reg [4:0]      rRW, xRW;
   reg [4:0]      rRW, xRW;
 
 
   wire          fSKIP = (rBRA & !rDLY);
   wire          fSKIP = (rBRA & !rDLY);
 
   wire          fDACK = !(rDWBSTB ^ dwb_ack_i);
 
 
   always @(/*AUTOSENSE*/fLOD or fSKIP or fSTR or rXCE)
   always @(/*AUTOSENSE*/fLOD or fSKIP or fSTR or iwb_ack_i or rXCE)
     if (fSKIP | |rXCE) begin
     if (fSKIP | |rXCE) begin
        /*AUTORESET*/
        /*AUTORESET*/
        // Beginning of autoreset for uninitialized flops
        // Beginning of autoreset for uninitialized flops
        xDWBSTB <= 1'h0;
        xDWBSTB <= 1'h0;
        xDWBWRE <= 1'h0;
        xDWBWRE <= 1'h0;
        // End of automatics
        // End of automatics
     end else begin
     end else begin
        xDWBSTB <= (fLOD | fSTR);
        xDWBSTB <= (fLOD | fSTR) & iwb_ack_i;
        xDWBWRE <= fSTR;
        xDWBWRE <= fSTR & iwb_ack_i;
     end
     end
 
 
   always @(/*AUTOSENSE*/fBCC or fBRU or fLOD or fRTD or fSKIP or fSTR
   always @(/*AUTOSENSE*/fBCC or fBRU or fLOD or fRTD or fSKIP or fSTR
            or rRD or rXCE)
            or rRD or rXCE)
     if (fSKIP) begin
     if (fSKIP) begin
Line 181... Line 188...
 
 
   always @(posedge gclk)
   always @(posedge gclk)
     if (grst) begin
     if (grst) begin
        /*AUTORESET*/
        /*AUTORESET*/
        // Beginning of autoreset for uninitialized flops
        // Beginning of autoreset for uninitialized flops
        rDWBSTB <= 1'h0;
 
        rDWBWRE <= 1'h0;
 
        rMXDST <= 2'h0;
        rMXDST <= 2'h0;
        rRW <= 5'h0;
        rRW <= 5'h0;
        // End of automatics
        // End of automatics
     end else if (gena) begin
     end else if (gena) begin
        //rPCLNK <= #1 xPCLNK;
        //rPCLNK <= #1 xPCLNK;
        rMXDST <= #1 xMXDST;
        rMXDST <= #1 xMXDST;
        rRW <= #1 xRW;
        rRW <= #1 xRW;
 
     end
 
 
 
   always @(posedge gclk)
 
     if (grst) begin
 
        /*AUTORESET*/
 
        // Beginning of autoreset for uninitialized flops
 
        rDWBSTB <= 1'h0;
 
        rDWBWRE <= 1'h0;
 
        // End of automatics
 
     end else if (fDACK) begin
        rDWBSTB <= #1 xDWBSTB;
        rDWBSTB <= #1 xDWBSTB;
        rDWBWRE <= #1 xDWBWRE;
        rDWBWRE <= #1 xDWBWRE;
     end
     end
 
 
 
 

powered by: WebSVN 2.1.0

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