1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-01-30 02:32:53 +08:00
oh/common/hdl/oh_par2ser.v
Andreas Olofsson 3168228174 Adding functionality for various modules
(Work in progress, not tested)
2016-01-10 13:33:31 -05:00

57 lines
1.3 KiB
Verilog

//convert parallel vector to serial stream
module oh_par2ser (/*AUTOARG*/
// Inputs
clk, din, load, dout
);
//###############################################################
//# Interface
//###############################################################
input clk; //sampling clock
input [DW-1:0] din; //parallel data
input load; //load parallel data
output dout; //serial output data
parameter DW = 64; //width of converter
parameter TYPE = "LSB"; //LSB, transfer din[0] first
//MSB, transfer dinb[DW-1] first
//###############################################################
//# BODY
//###############################################################
reg [DW-1:0] shiftreg;
generate
if(TYPE=="MSB")
begin
assign dout = shiftreg[DW-1];
always @ (posedge clk)
if(load)
shiftreg[DW-1:0] = din[DW-1:0];
else
shiftreg[DW-1:0] = {shiftreg[DW-2:0],1'b0};
end
else
begin
assign dout = shiftreg[0];
always @ (posedge clk)
if(load)
shiftreg[DW-1:0] = din[DW-1:0];
else
shiftreg[DW-1:0] = {1'b0,shiftreg[DW-1:1]};
end
endgenerate
endmodule // oh_par2ser