fixed decoder
diff --git a/verilog/dv/decoder_test/decoder.sv b/verilog/dv/decoder_test/decoder.sv
index 94d8e2a..02a0a56 100644
--- a/verilog/dv/decoder_test/decoder.sv
+++ b/verilog/dv/decoder_test/decoder.sv
@@ -13,36 +13,20 @@
 module decoder (input logic [31:0] target,

                     output logic [255:0] fullTarget);

 

-	logic [3:0] sizeTens;

-    logic [3:0] sizeOnes;

-    logic [255:0] decoded;

-    integer spacing;

-    integer leftBuffer;

+	logic [7:0] shift_amount;

+    logic [255:0] temp_reg;

     integer i;

     initial begin

-        sizeTens=target[31:28];

-        sizeOnes=target[27:24];

 

-        //IDK if this is legal

-        spacing  = sizeTens*16+sizeOnes;

+        shift_amount=target[31:24];

 

-        leftBuffer = 32-spacing;

-

-        //Pad left side based on first 2 bytes

-        for(i=255;i>254-leftBuffer;i--)

-            decoded[i] = 0;

+        for(i = 23;i>-1;i--)

+            temp_reg[232+i]=target[i];

         

-        //Set value within middle of target

-        i=0;

-        while(i<24) begin

-            decoded[255-leftBuffer-25+i] = target[i];

-            i++;

-        end

-        //Pad the rest

-        for(i=255-leftBuffer-26;i>-1;i--)

-            decoded[i]=0;

+        for(i = 231;i>-1;i--)

+            temp_reg[i]=0;

 

-        fullTarget = decoded;

+        assign fullTarget = temp_reg >> shift_amount;

     end

 

 

diff --git a/verilog/rtl/decoder.sv b/verilog/rtl/decoder.sv
index 9564e49..02a0a56 100644
--- a/verilog/rtl/decoder.sv
+++ b/verilog/rtl/decoder.sv
@@ -7,31 +7,27 @@
  *

  * Used to transform a 32 bit target into a 256 bit target using math magic.

  *

- *

  *-------------------------------------------------------------

  */

 

-module decoder #(input logic [31:0] target,

+module decoder (input logic [31:0] target,

                     output logic [255:0] fullTarget);

 

-	logic [3:0] sizeTens;

-    logic [3:0] sizeOnes;

+	logic [7:0] shift_amount;

+    logic [255:0] temp_reg;

+    integer i;

+    initial begin

 

-    sizeTens<=target[31:28];

-    sizeOnes<=target[27:24];

+        shift_amount=target[31:24];

 

-    //IDK if this is legal

-    integer spacing  = sizeTens*16+sizeOnes;

+        for(i = 23;i>-1;i--)

+            temp_reg[232+i]=target[i];

+        

+        for(i = 231;i>-1;i--)

+            temp_reg[i]=0;

 

-    integer leftBuffer = 32-spacing;

-

-    //Todo figure out how to set all these values to 0

-    fullTarget[255:255-leftBuffer] = 0;

-    

-    //Todo figure out how to set all these values to target[23:0]

-    fullTarget[255-leftBuffer-1:255-leftBuffer-25] = target[23:0];

-

-    fullTarget[255-leftBuffer-26:0]=0;

+        assign fullTarget = temp_reg >> shift_amount;

+    end

 

 

 endmodule