blob: 94d8e2a6ae31a5db73bb0ba79f9c0236a1c1c957 [file] [log] [blame]
`default_nettype none
`timescale 1 ns / 10 ps
/*
*-------------------------------------------------------------
*
* decoder
*
* Used to transform a 32 bit target into a 256 bit target using math magic.
*
*-------------------------------------------------------------
*/
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;
integer i;
initial begin
sizeTens=target[31:28];
sizeOnes=target[27:24];
//IDK if this is legal
spacing = sizeTens*16+sizeOnes;
leftBuffer = 32-spacing;
//Pad left side based on first 2 bytes
for(i=255;i>254-leftBuffer;i--)
decoded[i] = 0;
//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;
fullTarget = decoded;
end
endmodule