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

Subversion Repositories amber

[/] [amber/] [trunk/] [hw/] [vlog/] [amber25/] [a25_localparams.vh] - Diff between revs 16 and 82

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

Rev 16 Rev 82
Line 1... Line 1...
 
//////////////////////////////////////////////////////////////////
 
//                                                              //
 
//  Parameters file for Amber 25 Core                           //
 
//                                                              //
 
//  This file is part of the Amber project                      //
 
//  http://www.opencores.org/project,amber                      //
 
//                                                              //
 
//  Description                                                 //
 
//  Holds general parameters that are used is several core      //
 
//  modules                                                     //
 
//                                                              //
 
//  Author(s):                                                  //
 
//      - Conor Santifort, csantifort.amber@gmail.com           //
 
//                                                              //
 
//////////////////////////////////////////////////////////////////
 
//                                                              //
 
// Copyright (C) 2011 Authors and OPENCORES.ORG                 //
 
//                                                              //
 
// 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 source file is free software; you can redistribute it   //
 
// and/or modify it under the terms of the GNU Lesser General   //
 
// Public License as published by the Free Software Foundation; //
 
// either version 2.1 of the License, or (at your option) any   //
 
// later version.                                               //
 
//                                                              //
 
// This source is distributed in the hope that it will be       //
 
// useful, but WITHOUT ANY WARRANTY; without even the implied   //
 
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
 
// PURPOSE.  See the GNU Lesser General Public License for more //
 
// details.                                                     //
 
//                                                              //
 
// You should have received a copy of the GNU Lesser General    //
 
// Public License along with this source; if not, download it   //
 
// from http://www.opencores.org/lgpl.shtml                     //
 
//                                                              //
 
//////////////////////////////////////////////////////////////////
 
 
 
 
 
// Instruction Types
 
localparam [3:0]    REGOP       = 4'h0, // Data processing
 
                    MULT        = 4'h1, // Multiply
 
                    SWAP        = 4'h2, // Single Data Swap
 
                    TRANS       = 4'h3, // Single data transfer
 
                    MTRANS      = 4'h4, // Multi-word data transfer
 
                    BRANCH      = 4'h5, // Branch
 
                    CODTRANS    = 4'h6, // Co-processor data transfer
 
                    COREGOP     = 4'h7, // Co-processor data operation
 
                    CORTRANS    = 4'h8, // Co-processor register transfer
 
                    SWI         = 4'h9; // software interrupt
 
 
 
 
 
// Opcodes
 
localparam [3:0] AND = 4'h0,        // Logical AND
 
                 EOR = 4'h1,        // Logical Exclusive OR
 
                 SUB = 4'h2,        // Subtract
 
                 RSB = 4'h3,        // Reverse Subtract
 
                 ADD = 4'h4,        // Add
 
                 ADC = 4'h5,        // Add with Carry
 
                 SBC = 4'h6,        // Subtract with Carry
 
                 RSC = 4'h7,        // Reverse Subtract with Carry
 
                 TST = 4'h8,        // Test  (using AND operator)
 
                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
 
                 CMP = 4'ha,       // Compare (using Subtract operator)
 
                 CMN = 4'hb,       // Compare Negated
 
                 ORR = 4'hc,       // Logical OR
 
                 MOV = 4'hd,       // Move
 
                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
 
                 MVN = 4'hf;       // Move NOT
 
 
 
// Condition Encoding
 
localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
 
                 NE  = 4'h1,        // Not equal        / Z clear
 
                 CS  = 4'h2,        // Carry set        / C set
 
                 CC  = 4'h3,        // Carry clear      / C clear
 
                 MI  = 4'h4,        // Minus            / N set
 
                 PL  = 4'h5,        // Plus             / N clear
 
                 VS  = 4'h6,        // Overflow         / V set
 
                 VC  = 4'h7,        // No overflow      / V clear
 
                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
 
                 LS  = 4'h9,        // Unsigned lower
 
                                    // or same          / C clear or Z set
 
                 GE  = 4'ha,        // Signed greater 
 
                                    // than or equal    / N == V
 
                 LT  = 4'hb,        // Signed less than / N != V
 
                 GT  = 4'hc,        // Signed greater
 
                                    // than             / Z == 0, N == V
 
                 LE  = 4'hd,        // Signed less than
 
                                    // or equal         / Z == 1, N != V
 
                 AL  = 4'he,        // Always
 
                 NV  = 4'hf;        // Never
 
 
 
// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
 
 
 
// Shift Types
 
localparam [1:0] LSL = 2'h0,
 
                 LSR = 2'h1,
 
                 ASR = 2'h2,
 
                 RRX = 2'h3,
 
                 ROR = 2'h3;
 
 
 
// Modes
 
localparam [1:0] SVC  =  2'b11,  // Supervisor
 
                 IRQ  =  2'b10,  // Interrupt
 
                 FIRQ =  2'b01,  // Fast Interrupt
 
                 USR  =  2'b00;  // User
 
 
 
// One-Hot Mode encodings
 
localparam [5:0] OH_USR  = 0,
 
                 OH_IRQ  = 1,
 
                 OH_FIRQ = 2,
 
                 OH_SVC  = 3;
 
 
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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