根据ISE的language templates里我找到了并行转串行的代码:
parameter piso_shift = <shift_width>; reg [piso_shift-2:0] <reg_name>; reg <output>; always @(posedge <clock>) if (<load_signal>) begin <reg_name> <= <input>[piso_shift-1:1]; <output> <= <input>[0]; end else begin <reg_name> <= {1'b0 <reg_name>[piso_shift-2:1]}; <output> <= <reg_name>[0]; end