1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-02-07 06:44:09 +08:00
oh/common/hdl/oh_ser2par.v
2020-01-28 18:12:57 -05:00

30 lines
1.1 KiB
Verilog

//#############################################################################
//# Purpose: Serial to Parallel Converter #
//#############################################################################
//# Author: Andreas Olofsson #
//# License: MIT (see LICENSE file in OH! repository) #
//#############################################################################
module oh_ser2par #(parameter PW = 64, // parallel packet width
parameter SW = 1, // serial packet width
parameter CW = $clog2(PW/SW) // serialization factor (for counter)
)
(
input clk, // sampling clock
input [SW-1:0] din, // serial data
output reg [PW-1:0] dout, // parallel data
input lsbfirst, // lsb first order
input shift // shift the shifter
);
reg [CW-1:0] count;
wire [PW-1:0] shiftdata;
always @ (posedge clk)
if(shift & lsbfirst)
dout[PW-1:0] <= {din[SW-1:0],dout[PW-1:SW]};
else if(shift)
dout[PW-1:0] <= {dout[PW-SW-1:0],din[SW-1:0]};
endmodule // oh_ser2par