Initial commit
This commit is contained in:
23
Experiments/Shared/Ext.v
Normal file
23
Experiments/Shared/Ext.v
Normal file
@@ -0,0 +1,23 @@
|
||||
module Ext(
|
||||
input [31:0] DataIn,
|
||||
input [1:0] ExtOp,
|
||||
output [31:0] DataOut
|
||||
);
|
||||
wire [31:0] imm12, imm16, imm20, imm26;
|
||||
assign imm12 = {{20{DataIn[21]}}, DataIn[21:10]};
|
||||
assign imm16 = {{14{DataIn[25]}}, DataIn[25:10], 2'b0};
|
||||
assign imm20 = {DataIn[24:5], 12'b0};
|
||||
assign imm26 = {{4{DataIn[9]}}, DataIn[9:0], DataIn[25:10], 2'b0};
|
||||
|
||||
reg [31:0] temp_DataOut;
|
||||
always @(*) begin
|
||||
case (ExtOp)
|
||||
2'b00: temp_DataOut = imm12;
|
||||
2'b01: temp_DataOut = imm16;
|
||||
2'b10: temp_DataOut = imm20;
|
||||
2'b11: temp_DataOut = imm26;
|
||||
default: temp_DataOut = 32'hxxxxxxxx;
|
||||
endcase
|
||||
end
|
||||
assign DataOut = temp_DataOut;
|
||||
endmodule
|
||||
Reference in New Issue
Block a user