Facebook
From Ivory Camel, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 65
  1. `include "defines.vh"
  2. module signal_generation_unit (
  3.         input  wire  [`STAGE_COUNT-1:0] pipeline_stage,
  4.         input  wire [`OPCODE_COUNT-1:0] opcode_type,
  5.         input  wire  [`GROUP_COUNT-1:0] opcode_group,
  6.         output wire [`SIGNAL_COUNT-1:0] signals
  7.     );
  8.  
  9.     /* Control signals */
  10.  
  11.     /* Register interface logic */
  12.          /* TODO 4: STS */
  13.          
  14.          /* TODO 7: register reads */
  15.     assign signals
  16.          [`CONTROL_REG_RR_READ] =
  17.             (pipeline_stage == `STAGE_ID) &&
  18.             (opcode_group[`GROUP_ALU_TWO_OP] || opcode_group[`GROUP_REGISTER] || opcode_group[`GROUP_STORE]
  19.                                         || opcode_group[`GROUP_LOAD_INDIRECT]);
  20.     assign signals[`CONTROL_REG_RR_WRITE] = 0;
  21.     assign signals[`CONTROL_REG_RD_READ] =
  22.             (pipeline_stage == `STAGE_ID) &&
  23.             (opcode_group[`GROUP_ALU] || opcode_group[`GROUP_STORE_INDIRECT]
  24.                                 ||opcode_group[`GROUP_LOAD_INDIRECT]);
  25.     assign signals[`CONTROL_REG_RD_WRITE] =
  26.                                 /* TODO 3: LDI */
  27.                                 /* TODO 5,6,7: register writes */
  28.             (pipeline_stage == `STAGE_WB) &&
  29.             (opcode_group[`GROUP_ALU] || opcode_group[`GROUP_LOAD]
  30.                                 || opcode_group[`GROUP_REGISTER] || opcode_group[`GROUP_STORE_DIRECT]);
  31.        
  32.     /* Memory interface logic */
  33.          /* TODO 5,6: LOADs */
  34.     assign signals[`CONTROL_MEM_READ] =
  35.            (pipeline_stage == `STAGE_MEM) &&
  36.            (opcode_group[`GROUP_LOAD]);
  37.          /* TODO 4: STS
  38.          inspectati bus_interface_unit.v */
  39.     assign signals[`CONTROL_MEM_WRITE] =
  40.            (pipeline_stage == `STAGE_MEM) &&
  41.            opcode_group[`GROUP_STORE];
  42. endmodule