Serial to Parallel and Parallel to Serial conversion
Serial to Parallel conversion is common in designs where the clock runs at slower frequency than the incoming serial stream. To maintain the throughput, the serial data is converted to parallel data. Similarly, high speed parallel data can be converted to serial stream before output from a chip - as it is very hard to manage skew between different data lines.
We will look at verilog implementation of a simple serial to parallel converter and a parallel to serial converter in this post.
CODE:
-
module serial_to_parallel ( parallel_out, serial_in, shift_enable, clock, reset_n);
-
-
parameter SIZE = 4;
-
output [SIZE-1] parallel_out;
-
input serial_in;
-
input shift_enable;
-
input clock;
-
input reset_n;
-
-
reg [SIZE-1] parallel_out;
-
-
always @(posedge clock or negedge reset_n) begin
-
if (~reset_n)
-
parallel_out <= 0;
-
else if (shift_enable)
-
parallel_out <= {serial_in, parallel_out[SIZE-1:1]};
-
end
-
-
endmodule
CODE:
Sphere: Related Content-
module parallel_2_serial (serial_out, parallel_in, load_enable,shift_enable, clock, reset_n);
-
-
parameter SIZE=5;
-
output serial_out;
-
input clock;
-
input reset_n;
-
input load_enable;
-
input shift_enable;
-
input [SIZE-1:0] parallel_in;
-
-
reg [SIZE-1:0] parallel_r;
-
-
always @(posedge clock or negedge reset_n) begin
-
if (~reset_n)
-
parallel_r <= 0;
-
else if (load_enable)
-
parallel_r <= parallel_in;
-
else if (shift_enable)
-
parallel_r <= {1'b0, parallel_r[SIZE-1:1]};
-
end
-
assign serial_out = parallel_r[0];
-
endmodule