blob: 0a8c4c4afb0ba1bd4aa91735f51dd21a7df4efc9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
// serial to parallel converter
// Learning:
// I don't like this.
// I think I need a signal / way to say "I'm finished"?
// or generally, an enable pin.
//
module ser_to_par #(
parameter SHIFT_WIDTH = 8
) (
input rst_i,
input clk_i,
input dat_valid_i,
input dat_i,
output reg[(SHIFT_WIDTH - 1):0] dat_o,
// ???
output dat_valid_o
);
always @(posedge clk_i or negedge rst_i) begin
if (!rst_i) begin
dat_o <= 8'b0;
end else if(dat_valid_i) begin
// shift into highest bit first, so it is subsequently shifted down
dat_o[SHIFT_WIDTH - 1] <= dat_i;
dat_o[(SHIFT_WIDTH - 2):0] <= dat_o[(SHIFT_WIDTH - 1):1];
end
end
endmodule
|