| ////////////////////////////////////////////////////////////////// |
| // // |
| // Parameters file for Amber 2 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) 2010 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; |
| |
| |