Код
module serial_2_parallel (clock, reset, serial_data_inp, parallel_data_out);
input wire clock, reset, serial_data_inp;
output wire [3:0] parallel_data_out;
reg [3:0] parallel_data;
reg [1:0] count;
assign parallel_data_out = (count == 'b00) ? parallel_data : parallel_data_out;
always @(posedge clock or negedge reset) begin
if(reset)
begin
count <= 'b00;
parallel_data <= 'd0;
end
else
begin
count <= count + 'd1;
parallel_data <= {serial_data_inp, parallel_data[3:1]};
end
end
endmodule
input wire clock, reset, serial_data_inp;
output wire [3:0] parallel_data_out;
reg [3:0] parallel_data;
reg [1:0] count;
assign parallel_data_out = (count == 'b00) ? parallel_data : parallel_data_out;
always @(posedge clock or negedge reset) begin
if(reset)
begin
count <= 'b00;
parallel_data <= 'd0;
end
else
begin
count <= count + 'd1;
parallel_data <= {serial_data_inp, parallel_data[3:1]};
end
end
endmodule
Вот только в туже голову не приходит как добавить в эту схему следующий функционал.
К источнику последовательных данных прилагается сигнал ser_valid, который определяет какой бит можно считывать, а какой нет.
Теперь мне нужно накопить 4 "правильных" бита и выдать их на параллельную шину, указав при этом, что выходные данные готовы - сигнал par_valid.
Причем сигнал par_valid должен длиться 1 такт не зависимо от того приходят на вход новые данные или нет. Помогите кто чем может.