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

Subversion Repositories aemb

[/] [aemb/] [branches/] [AEMB2_712/] [rtl/] [verilog/] [aeMB_core.v] - Diff between revs 22 and 25

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

Rev 22 Rev 25
Line 1... Line 1...
/*
/*
 * $Id: aeMB_core.v,v 1.4 2007-04-25 22:15:04 sybreon Exp $
 * $Id: aeMB_core.v,v 1.5 2007-04-27 00:23:55 sybreon Exp $
 *
 *
 * AEMB 32-bit Microblaze Compatible Core
 * AEMB 32-bit Microblaze Compatible Core
 * Copyright (C) 2006 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
 * Copyright (C) 2004-2007 Shawn Tan Ser Ngiap <shawn.tan@aeste.net>
 *
 *
 * This library is free software; you can redistribute it and/or modify it
 * This library is free software; you can redistribute it and/or
 * under the terms of the GNU Lesser General Public License as published by
 * modify it under the terms of the GNU Lesser General Public License
 * the Free Software Foundation; either version 2.1 of the License,
 * as published by the Free Software Foundation; either version 2.1 of
 * or (at your option) any later version.
 * the License, or (at your option) any later version.
 *
 *
 * This library is distributed in the hope that it will be useful, but
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * License for more details.
 * Lesser General Public License for more details.
 *
 *
 * You should have received a copy of the GNU Lesser General Public License
 * You should have received a copy of the GNU Lesser General Public
 * along with this library; if not, write to the Free Software Foundation, Inc.,
 * License along with this library; if not, write to the Free Software
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 
 * USA
 *
 *
 * DESCRIPTION
 * DESCRIPTION
 * Microblaze compatible, WISHBONE compliant hardware core. This core is
 * Microblaze compatible, WISHBONE compliant hardware core. This core is
 * capable of executing software compile for EDK 2.1 using GCC. It has the
 * capable of executing software compile for EDK 2.1 using GCC. It has the
 * capability of handling interrupts as well as exceptions.
 * capability of handling interrupts as well as exceptions.
 *
 *
 * HISTORY
 * HISTORY
 * $Log: not supported by cvs2svn $
 * $Log: not supported by cvs2svn $
 
 * Revision 1.4  2007/04/25 22:15:04  sybreon
 
 * Added support for 8-bit and 16-bit data types.
 
 *
 * Revision 1.3  2007/04/11 04:30:43  sybreon
 * Revision 1.3  2007/04/11 04:30:43  sybreon
 * Added pipeline stalling from incomplete bus cycles.
 * Added pipeline stalling from incomplete bus cycles.
 * Separated sync and async portions of code.
 * Separated sync and async portions of code.
 *
 *
 * Revision 1.2  2007/04/04 06:13:23  sybreon
 * Revision 1.2  2007/04/04 06:13:23  sybreon
Line 56... Line 60...
   output [31:0] dwb_dat_o;              // From regfile of aeMB_regfile.v
   output [31:0] dwb_dat_o;              // From regfile of aeMB_regfile.v
   output [3:0]          dwb_sel_o;              // From aslu of aeMB_aslu.v
   output [3:0]          dwb_sel_o;              // From aslu of aeMB_aslu.v
   output               dwb_stb_o;              // From decode of aeMB_decode.v
   output               dwb_stb_o;              // From decode of aeMB_decode.v
   output               dwb_we_o;               // From decode of aeMB_decode.v
   output               dwb_we_o;               // From decode of aeMB_decode.v
   output [ISIZ-1:0]     iwb_adr_o;              // From fetch of aeMB_fetch.v
   output [ISIZ-1:0]     iwb_adr_o;              // From fetch of aeMB_fetch.v
   output               iwb_stb_o;              // From decode of aeMB_decode.v
   output               iwb_stb_o;              // From fetch of aeMB_fetch.v
   // End of automatics
   // End of automatics
   /*AUTOINPUT*/
   /*AUTOINPUT*/
   // Beginning of automatic inputs (from unused autoinst inputs)
   // Beginning of automatic inputs (from unused autoinst inputs)
   input                dwb_ack_i;              // To control of aeMB_control.v
   input                dwb_ack_i;              // To control of aeMB_control.v
   input [31:0]          dwb_dat_i;              // To regfile of aeMB_regfile.v
   input [31:0]          dwb_dat_i;              // To regfile of aeMB_regfile.v
Line 83... Line 87...
   wire [3:0]            rDWBSEL;                // From aslu of aeMB_aslu.v
   wire [3:0]            rDWBSEL;                // From aslu of aeMB_aslu.v
   wire                 rDWBSTB;                // From decode of aeMB_decode.v
   wire                 rDWBSTB;                // From decode of aeMB_decode.v
   wire                 rDWBWE;                 // From decode of aeMB_decode.v
   wire                 rDWBWE;                 // From decode of aeMB_decode.v
   wire [1:0]            rFSM;                   // From control of aeMB_control.v
   wire [1:0]            rFSM;                   // From control of aeMB_control.v
   wire [15:0]           rIMM;                   // From decode of aeMB_decode.v
   wire [15:0]           rIMM;                   // From decode of aeMB_decode.v
   wire                 rIWBSTB;                // From decode of aeMB_decode.v
   wire                 rIWBSTB;                // From fetch of aeMB_fetch.v
   wire                 rLNK;                   // From decode of aeMB_decode.v
   wire                 rLNK;                   // From decode of aeMB_decode.v
   wire [1:0]            rMXALU;                 // From decode of aeMB_decode.v
   wire [1:0]            rMXALU;                 // From decode of aeMB_decode.v
   wire [1:0]            rMXLDST;                // From decode of aeMB_decode.v
   wire [1:0]            rMXLDST;                // From decode of aeMB_decode.v
   wire [1:0]            rMXSRC;                 // From decode of aeMB_decode.v
   wire [1:0]            rMXSRC;                 // From decode of aeMB_decode.v
   wire [1:0]            rMXTGT;                 // From decode of aeMB_decode.v
   wire [1:0]            rMXTGT;                 // From decode of aeMB_decode.v
   wire [5:0]            rOPC;                   // From decode of aeMB_decode.v
   wire [5:0]            rOPC;                   // From decode of aeMB_decode.v
   wire [31:0]           rPC;                    // From fetch of aeMB_fetch.v
   wire [31:0]           rPC;                    // From fetch of aeMB_fetch.v
   wire [4:0]            rRA;                    // From decode of aeMB_decode.v
   wire [4:0]            rRA;                    // From decode of aeMB_decode.v
   wire [4:0]            rRB;                    // From decode of aeMB_decode.v
   wire [4:0]            rRB;                    // From decode of aeMB_decode.v
   wire [4:0]            rRD;                    // From decode of aeMB_decode.v
   wire [4:0]            rRD;                    // From decode of aeMB_decode.v
   wire [4:0]            rRD_;                   // From decode of aeMB_decode.v
 
   wire [31:0]           rREGA;                  // From regfile of aeMB_regfile.v
   wire [31:0]           rREGA;                  // From regfile of aeMB_regfile.v
   wire [31:0]           rREGB;                  // From regfile of aeMB_regfile.v
   wire [31:0]           rREGB;                  // From regfile of aeMB_regfile.v
   wire [31:0]           rRESULT;                // From aslu of aeMB_aslu.v
   wire [31:0]           rRESULT;                // From aslu of aeMB_aslu.v
   wire                 rRWE;                   // From decode of aeMB_decode.v
   wire                 rRWE;                   // From decode of aeMB_decode.v
   wire [31:0]           rSIMM;                  // From decode of aeMB_decode.v
   wire [31:0]           rSIMM;                  // From decode of aeMB_decode.v
   wire [31:0]           sDWBDAT;                // From regfile of aeMB_regfile.v
   wire [31:0]           sDWBDAT;                // From regfile of aeMB_regfile.v
   // End of automatics
   // End of automatics
 
 
 
   // INSTANTIATIONS /////////////////////////////////////////////////////////////////
 
 
   aeMB_regfile #(DSIZ)
   aeMB_regfile #(DSIZ)
     regfile (/*AUTOINST*/
     regfile (/*AUTOINST*/
              // Outputs
              // Outputs
              .dwb_dat_o                (dwb_dat_o[31:0]),
              .dwb_dat_o                (dwb_dat_o[31:0]),
              .rREGA                    (rREGA[31:0]),
              .rREGA                    (rREGA[31:0]),
Line 117... Line 122...
              .rDWBSTB                  (rDWBSTB),
              .rDWBSTB                  (rDWBSTB),
              .rDWBWE                   (rDWBWE),
              .rDWBWE                   (rDWBWE),
              .rRA                      (rRA[4:0]),
              .rRA                      (rRA[4:0]),
              .rRB                      (rRB[4:0]),
              .rRB                      (rRB[4:0]),
              .rRD                      (rRD[4:0]),
              .rRD                      (rRD[4:0]),
              .rRD_                     (rRD_[4:0]),
 
              .rRESULT                  (rRESULT[31:0]),
              .rRESULT                  (rRESULT[31:0]),
              .rFSM                     (rFSM[1:0]),
              .rFSM                     (rFSM[1:0]),
              .rPC                      (rPC[31:0]),
              .rPC                      (rPC[31:0]),
              .rOPC                     (rOPC[5:0]),
              .rOPC                     (rOPC[5:0]),
              .rDWBSEL                  (rDWBSEL[3:0]),
              .rDWBSEL                  (rDWBSEL[3:0]),
Line 134... Line 138...
 
 
   aeMB_fetch #(ISIZ)
   aeMB_fetch #(ISIZ)
     fetch (/*AUTOINST*/
     fetch (/*AUTOINST*/
            // Outputs
            // Outputs
            .iwb_adr_o                  (iwb_adr_o[ISIZ-1:0]),
            .iwb_adr_o                  (iwb_adr_o[ISIZ-1:0]),
 
            .iwb_stb_o                  (iwb_stb_o),
            .rPC                        (rPC[31:0]),
            .rPC                        (rPC[31:0]),
 
            .rIWBSTB                    (rIWBSTB),
            // Inputs
            // Inputs
            .iwb_dat_i                  (iwb_dat_i[31:0]),
            .iwb_dat_i                  (iwb_dat_i[31:0]),
            .nclk                       (nclk),
            .nclk                       (nclk),
            .nrst                       (nrst),
            .nrst                       (nrst),
            .nrun                       (nrun),
            .nrun                       (nrun),
Line 203... Line 209...
             .rMXSRC                    (rMXSRC[1:0]),
             .rMXSRC                    (rMXSRC[1:0]),
             .rMXTGT                    (rMXTGT[1:0]),
             .rMXTGT                    (rMXTGT[1:0]),
             .rRA                       (rRA[4:0]),
             .rRA                       (rRA[4:0]),
             .rRB                       (rRB[4:0]),
             .rRB                       (rRB[4:0]),
             .rRD                       (rRD[4:0]),
             .rRD                       (rRD[4:0]),
             .rRD_                      (rRD_[4:0]),
 
             .rOPC                      (rOPC[5:0]),
             .rOPC                      (rOPC[5:0]),
             .rIMM                      (rIMM[15:0]),
             .rIMM                      (rIMM[15:0]),
             .rDWBSTB                   (rDWBSTB),
             .rDWBSTB                   (rDWBSTB),
             .rDWBWE                    (rDWBWE),
             .rDWBWE                    (rDWBWE),
             .rIWBSTB                   (rIWBSTB),
 
             .rDLY                      (rDLY),
             .rDLY                      (rDLY),
             .rLNK                      (rLNK),
             .rLNK                      (rLNK),
             .rBRA                      (rBRA),
             .rBRA                      (rBRA),
             .rRWE                      (rRWE),
             .rRWE                      (rRWE),
             .rMXLDST                   (rMXLDST[1:0]),
             .rMXLDST                   (rMXLDST[1:0]),
             .iwb_stb_o                 (iwb_stb_o),
 
             .dwb_stb_o                 (dwb_stb_o),
             .dwb_stb_o                 (dwb_stb_o),
             .dwb_we_o                  (dwb_we_o),
             .dwb_we_o                  (dwb_we_o),
             // Inputs
             // Inputs
             .sDWBDAT                   (sDWBDAT[31:0]),
             .sDWBDAT                   (sDWBDAT[31:0]),
             .rDWBSEL                   (rDWBSEL[3:0]),
             .rDWBSEL                   (rDWBSEL[3:0]),

powered by: WebSVN 2.1.0

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