OpenCores
URL https://opencores.org/ocsvn/or1k-cf/or1k-cf/trunk

Subversion Repositories or1k-cf

[/] [or1k-cf/] [trunk/] [src/] [wb.cf] - Rev 6

Go to most recent revision | Compare with Previous | Blame | View Log

(*
     Register writeback unit

     Copyright 2004 Ken Rose
     All rights reserved
*)

-T

is

component T +MD +ALU +IR +WriteSelect +MA +SPR -WD
with
  Byte Half
is

{display '0' ({vector_of_string "Insn in WB is " $} '++' {hex_of_vector IR $})}
  Half <- MA'[1] '==' '1' 'then'  MD'[15:0]
      'else'                      MD'[31:16]

  Byte <- {mux MA'[1:0] [MD'[31:24] MD'[23:16] MD'[15:8] MD'[7:0]] $}

  (* Control for writeback mux.  Must match decode
       "0000"   ALU output
       "0001"   Zero-extended memory word
       "0010"   Sign-extended memory word
       "0011"   Zero-extended memory byte
       "0100"   Sign-extended memory byte
       "0101"   Zero-extended memory halfword
       "0110"   Sign-extended memory halfword
       "0111"   Immediate data in high half
       "1000"   Data from SPR
  *)
  {display '0' ({vector_of_string "Memory address is " $} '++' {hex_of_vector MA $})}
  WD <- {mux WriteSelect [ALU 
                           MD
                           MD
                           (('0' '#' 24) '++' Byte)
                           ((Byte'[7] '#' 24) '++' Byte)
                           (('0' '#' 16) '++' Half)
                           ((Half'[15] '#' 16) '++' Half)
                           (IR'[15:0] '++' ('0' '#' 16))
                           SPR
                           ] $}
end

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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