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

Subversion Repositories Aquarius

[/] [Aquarius/] [trunk/] [verilog/] [defines.v] - Rev 12

Compare with Previous | Blame | View Log

//======================================================
// Aquarius Project
//    SuperH-2 ISA Compatible RISC CPU
//------------------------------------------------------
// Module      : `define Definition
//------------------------------------------------------
// File        : define.v
// Library     : none
// Description : A definition of Constant Value
// Simulator   : Icarus Verilog (Cygwin)
// Synthesizer : Xilinx XST (Windows XP)
// Author      : Thorn Aitch
//------------------------------------------------------
// Revision Number : 1
// Date of Change  : 15th April 2002
// Creator         : Thorn Aitch
// Description     : Initial Design
//------------------------------------------------------
// Revision Number : 2
// Date of Change  : 30th April 2003
// Modifier        : Thorn Aitch
// Description     : Release Version 1.0
//======================================================
// Copyright (C) 2002-2003, Thorn Aitch
//
// Designs can be altered while keeping list of
// modifications "the same as in GNU" No money can
// be earned by selling the designs themselves, but
// anyone can get money by selling the implementation
// of the design, such as ICs based on some cores, 
// boards based on some schematics or Layouts, and
// even GUI interfaces to text mode drivers.
// "The same as GPL SW" Any update to the design
// should be documented and returned to the design. 
// Any derivative work based on the IP should be free
// under OpenIP License. Derivative work means any
// update, change or improvement on the design. 
// Any work based on the design can be either made
// free under OpenIP license or protected by any other
// license. Work based on the design means any work uses
// the OpenIP Licensed core as a building black without
// changing anything on it with any other blocks to
// produce larger design.  There is NO WARRANTY on the
// functionality or performance of the design on the
// real hardware implementation.
// On the other hand, the SuperH-2 ISA (Instruction Set
// Architecture) executed by Aquarius is rigidly
// the property of Renesas Corp. Then you have all 
// responsibility to judge if there are not any 
// infringements to Renesas's rights regarding your 
// Aquarius adoption into your design. 
// By adopting Aquarius, the user assumes all 
// responsibility for its use.
// This project may cause any damages around you, for 
// example, loss of properties, data, money, profits,
// life, or business etc. By adopting this source, 
// the user assumes all responsibility for its use.
//======================================================
 
//------------------
// Simulation Timing
//------------------
`define HALF_CYCLE 25
`define CYCLE      50
`define STROBE     49
 
//-------------
// ALU Function
//-------------
`define ALU_NOP      5'b00000    // Z=0
`define ALU_THRUX    5'b00001    // Z=X
`define ALU_THRUY    5'b00010    // Z=Y
`define ALU_THRUW    5'b00011    // Z=W
 
`define ALU_ADD      5'b00100    // Z=X+Y
`define ALU_ADDC     5'b00101    // Z=X+Y, T<-Carry
`define ALU_ADDV     5'b00110    // Z=X+Y, T<-Overflow
`define ALU_INCX     5'b00111    // Z=X+1 
`define ALU_INCX2    5'b01000    // Z=X+2 
`define ALU_INCX4    5'b01001    // Z=X+4
`define ALU_ADDCN    5'b01010    // Z=X+CONST
`define ALU_ADDR0    5'b01011    // Z=X+R0(if necessary, forwarding from WBUS)
`define ALU_ADDXFC   5'b01100    // Z=(X & FC) + Y
`define ALU_SWAPW    5'b01101    // Z=SWAPW(Y)
`define ALU_SWAPB    5'b01110    // Z=SWAPB(Y)
`define ALU_DIV      5'b01111    // DIV1 Function
 
`define ALU_EXTUB    5'b10000    // Z=EXTUB(Y)
`define ALU_EXTUW    5'b10001    // Z=EXTUW(Y)
`define ALU_EXTSB    5'b10010    // Z=EXTSB(Y)
`define ALU_EXTSW    5'b10011    // Z=EXTSW(Y)
 
`define ALU_SUB      5'b10100    // Z=X-Y
`define ALU_SUBC     5'b10101    // Z=X-Y, T<-Carry
`define ALU_SUBV     5'b10110    // Z=X-Y, T<-Overflow
`define ALU_DECX     5'b10111    // Z=X-1
`define ALU_DECX2    5'b11000    // Z=X-2
`define ALU_DECX4    5'b11001    // Z=X-4
 
`define ALU_XTRCT    5'b11010    // Z=XTRCT(X,Y)
`define ALU_TAS      5'b11011    // Z=X & 32'h00000080                  
 
`define ALU_AND      5'b11100    // Z=X&Y
`define ALU_XOR      5'b11101    // Z=X|Y
`define ALU_OR       5'b11110    // Z=Z^Y
`define ALU_NOT      5'b11111    // Z=~Y
 
//-----------------
// Compare Function
//-----------------
`define CMPEQ   3'b000  // equal
`define CMPHS   3'b010  // higher or same (unsigned)
`define CMPGE   3'b011  // grater or equal(signed)
`define CMPHI   3'b110  // higher than    (unsigned)
`define CMPGT   3'b111  // grater than    (signed)
`define CMPPL   3'b101  // plus (not 0)   (signed)
`define CMPPZ   3'b001  // plus or zero   (signed)
`define CMPSTR  3'b100  // equal at least 1 byte
 
//-----------------
// Shifter Function
//-----------------
//corresponding to instruction bit5,4,3,2,0
`define SHLL   5'b00000
`define SHAL   5'b10000
`define SHLR   5'b00001
`define SHAR   5'b10001
`define ROTL   5'b00010
`define ROTCL  5'b10010
`define ROTR   5'b00011
`define ROTCR  5'b10011
`define SHLL2  5'b00100
`define SHLL8  5'b01100
`define SHLL16 5'b10100
`define SHLR2  5'b00101
`define SHLR8  5'b01101
`define SHLR16 5'b10101
 
//----------------
// SR bit Position
//----------------
`define T   0       // SR[T]
`define S   1       // SR[S]
`define I0  4       // SR[I0], SR[I3:I0]
`define I1  5       // SR[I1], SR[I3:I0]
`define I2  6       // SR[I2], SR[I3:I0]
`define I3  7       // SR[I3], SR[I3:I0]
`define Q   8       // SR[Q]
`define M   9       // SR[M]
 
//------------------------------------------
// Decode Unit : Instruction State Parameter
//------------------------------------------
`define POWERON_RESET 16'hF700 // Instruction Sequence Code for Power on Reset
`define NO_EVT         3'b111
`define MRES           3'b110
`define DMAERR         3'b011
`define CPUERR         3'b010
`define NMI            3'b001
`define IRQ            3'b000
`define SLOT_ILGL     16'hFE06
`define GNRL_ILGL     16'hFF04
 
//---------------------------------------------
// Memory Access Unit : State Number Assignment
//---------------------------------------------
`define  S_IDLE       3'h0 // 000
`define  S_IFEX       3'h1 // 001 external bus   IF
`define  S_MAEX       3'h2 // 010 external bus   MA
`define  S_MAEX_IFPD  3'h3 // 011 external bus   MA
`define  S_IDLE_IFKP  3'h4 // 100 
`define  S_IFIN       3'h5 // 101 
`define  S_MAEX_IFKP  3'h6 // 110 external bus   MA
`define  S_MAEX_IFIN  3'h7 // 111 external bus   MA
 
//------------------------------------------
// Multiplier Unit : State Number Assignment
//------------------------------------------
`define NOP         4'b0000
`define DMULSL      4'b0001
`define DMULSL2     4'b0010
`define DMULUL      4'b0011
`define DMULUL2     4'b0100
`define MACL0       4'b0101
`define MACL2       4'b0110
`define MACLS       4'b0111
`define MACLS2      4'b1000
`define MACW        4'b1001
`define MACWS       4'b1010
`define MULL        4'b1011
`define MULL2       4'b1100
`define MULSW       4'b1101
`define MULUW       4'b1110
 
 
//======================================================
// End of Module
//======================================================

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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