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

Subversion Repositories quark

[/] [quark/] [trunk/] [05_HDLConstruction/] [01_OldArchitecture_ReferenceOnly/] [ControlUnit/] [ControlUnit.v] - Rev 10

Compare with Previous | Blame | View Log

////////////////////////////////////////////////
// @file  ControlUnit.v
// @brief Control Unit of Quantum Processor
// @date  9/28/2014
////////////////////////////////////////////////
 
module ControlUnit (
  input         Clock,
  input         Reset,
  input  [0:7]  BusDataIn,
  input  [0:15] AluResult,
  output        IncrementPC,
  output        WritePC,
  output        WriteEnable,
  output [0:7]  BusDataOut,
  output [0:7]  NewPC,
  output [0:7]  AluInstruction,
  output [0:7]  AluInput1,
  output [0:7]  AluInput2,
  output [0:7]  REGA,
  output [0:7]  REGB,
  output [0:7]  REGC,
  output [0:7]  REGX,
  output [0:7]  REGY,
  output [0:7]  REGZ
  );
 
  wire [0:15] ExecuteCode;
  wire [0:7]  Opcode;
  wire [0:7]  FetchTemporalReg1;
  wire [0:7]  FetchTemporalReg2;
  wire [0:7]  FetchTemporalReg3;
  wire        RequestDecode;
  wire        DecodeIsBusy;
  wire        LockPC;
  wire        PCIsNotLocked;
  wire        IncrementPC1;
  wire        ExecuteIsBusy;
  wire        RequestExecute;
  wire        MemoryIsCorrupted;
  wire        RequestUnlockPC;
 
  FetchUnit FetchUnit(
    .Clock             (Clock),
    .Reset             (Reset),
    .DecodeIsBusy      (DecodeIsBusy),
    .RequestUnlockPC   (RequestUnlockPC),
    .BusDataIn         (BusDataIn),
    .Opcode            (Opcode),
    .FetchTemporalReg1 (FetchTemporalReg1),
    .FetchTemporalReg2 (FetchTemporalReg2),
    .FetchTemporalReg3 (FetchTemporalReg3),
    .RequestDecode     (RequestDecode),
    .LockPC            (LockPC),
    .PCIsNotLocked     (PCIsNotLocked),
    .IncrementPC       (IncrementPC1)
  );
 
  DecodeUnit DecodeUnit(
    .Clock             (Clock),
    .Reset             (Reset),
    .RequestDecode     (RequestDecode),
    .ExecuteIsBusy     (ExecuteIsBusy),
    .Opcode            (Opcode),
    .FetchTemporalReg1 (FetchTemporalReg1),
    .FetchTemporalReg2 (FetchTemporalReg2),
    .FetchTemporalReg3 (FetchTemporalReg3),
    .ExecuteCode       (ExecuteCode),
    .DecodeIsBusy      (DecodeIsBusy),
    .RequestExecute    (RequestExecute),
    .MemoryIsCorrupted (MemoryIsCorrupted)
  );
 
  ExecuteUnit ExecuteUnit(
    .Clock             (Clock),
    .Reset             (Reset),
    .RequestExecute    (RequestExecute),
    .AluResult         (AluResult),
    .ExecuteCode       (ExecuteCode),
    .FetchTemporalReg1 (FetchTemporalReg1),
    .FetchTemporalReg2 (FetchTemporalReg2),
    .FetchTemporalReg3 (FetchTemporalReg3),
    .REGA              (REGA),
    .REGB              (REGB),
    .REGC              (REGC),
    .REGX              (REGX),
    .REGY              (REGY),
    .REGZ              (REGZ),
    .AluInput1         (AluInput1),
    .AluInput2         (AluInput2),
    .AluInstruction    (AluInstruction),
    .BusDataOut        (BusDataOut),
    .NewPC             (NewPC),
    .WritePC           (WritePC),
    .ExecuteIsBusy     (ExecuteIsBusy),
    .RequestUnlockPC   (RequestUnlockPC),
    .WriteEnable       (WriteEnable)
  );
 
  assign IncrementPC = PCIsNotLocked & IncrementPC1;
endmodule
 
////////////////////////////////////////////////
// EOF
////////////////////////////////////////////////
 

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.