module nibble_swap_task (
input [7:0] x,
output reg [7:0] y
);
// ---------- Write this task ----------
task swap_nibbles;
input [7:0] xin;
output [3:0] hi;
output [3:0] lo;
begin
// TODO: assign hi and lo from xin
hi = (xin[3:0]>xin[7:4]) ? xin[3:0]:xin[7:4];
lo = (xin[3:0]<xin[7:4]) ? xin[3:0]:xin[7:4];
end
endtask
// -------------------------------------
reg [3:0] hi_n, lo_n;
always @* begin
// TODO: call the task and build y
swap_nibbles(x,hi_n,lo_n);
y = {x[3:0],x[7:4]};
end
endmodule