mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
extend unit structural mux
This commit is contained in:
parent
7531bf1fd6
commit
19beed7866
@ -31,21 +31,17 @@
|
|||||||
`include "wally-config.vh"
|
`include "wally-config.vh"
|
||||||
|
|
||||||
module ext #(parameter WIDTH = 32) (
|
module ext #(parameter WIDTH = 32) (
|
||||||
input logic [WIDTH-1:0] A, B, // Operands
|
input logic [WIDTH-1:0] A, // Operands
|
||||||
|
input logic [1:0] ExtSelect, // B[2], B[0] of immediate
|
||||||
output logic [WIDTH-1:0] ExtResult); // Extend Result
|
output logic [WIDTH-1:0] ExtResult); // Extend Result
|
||||||
|
|
||||||
logic [WIDTH-1:0] sexthResult, zexthResult, sextbResult;
|
logic [WIDTH-1:0] sexthResult, zexthResult, sextbResult;
|
||||||
|
|
||||||
assign sexthResult = {{(WIDTH-16){A[15]}},A[15:0]};
|
assign sexthResult = {{(WIDTH-16){A[15]}},A[15:0]};
|
||||||
assign zexthResult = {{(WIDTH-16){1'b0}},A[15:0]};
|
assign zexthResult = {{(WIDTH-16){1'b0}},A[15:0]};
|
||||||
assign sextbResult = {{(WIDTH-8){A[7]}},A[7:0]};
|
assign sextbResult = {{(WIDTH-8){A[7]}},A[7:0]};
|
||||||
|
|
||||||
always_comb
|
mux3 #(WIDTH) extmux(zexthResult, sextbResult, sexthResult, ExtSelect, ExtResult);
|
||||||
case({B[2],B[0]})
|
|
||||||
2'b00: ExtResult = zexthResult;
|
|
||||||
2'b10: ExtResult = sextbResult;
|
|
||||||
2'b11: ExtResult = sexthResult;
|
|
||||||
default: ExtResult = 0;
|
|
||||||
endcase
|
|
||||||
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
@ -55,7 +55,7 @@ module zbb #(parameter WIDTH=32) (
|
|||||||
|
|
||||||
cnt #(WIDTH) cnt(.A(A), .RevA(RevA), .B(B[4:0]), .W64(W64), .CntResult(CntResult));
|
cnt #(WIDTH) cnt(.A(A), .RevA(RevA), .B(B[4:0]), .W64(W64), .CntResult(CntResult));
|
||||||
byteUnit #(WIDTH) bu(.A(A), .ByteSelect(B[0]), .ByteResult(ByteResult));
|
byteUnit #(WIDTH) bu(.A(A), .ByteSelect(B[0]), .ByteResult(ByteResult));
|
||||||
ext #(WIDTH) ext(.A(A), .B(B), .ExtResult(ExtResult));
|
ext #(WIDTH) ext(.A(A), .ExtSelect({B[2], B[0]}), .ExtResult(ExtResult));
|
||||||
|
|
||||||
|
|
||||||
assign MaxResult = (lt) ? B : A;
|
assign MaxResult = (lt) ? B : A;
|
||||||
|
Loading…
Reference in New Issue
Block a user