module nibble_swap_task (
input [7:0] x,
output reg [7:0] y
);
task swap_nibbles;
input [7:0] xin;
output [3:0] hi;
output [3:0] lo;
begin
hi = xin[7:4];
lo = xin[3:0];
end
endtask
reg [3:0] hi_n, lo_n;
always @* begin
swap_nibbles(x, hi_n, lo_n);
y = {lo_n, hi_n};
end
endmodule
hi and lo)—that’s why tasks are handy for small unpack/repack jobs.always @*, no #/@/wait.x[7:4] is the high nibble, x[3:0] is the low nibble.