1 битовый поток в Verilog

У меня есть 6 газовых датчиков, которые подключены к плате Arduino uno, которую я использую в качестве АЦП. Выход каждого датчика будет представлять собой число от 0 до 1023. Данные передаются из Arduino в ПЛИС Altera для обработки.

Я посылаю двоичную форму числа на выходной вывод Arduino (последовательные данные) и, получая сигнал "записи" от ПЛИС, эти данные будут последовательно передаваться на входной порт ПЛИС с частотой примерно 10 кГц (период 0,1 мс).

Как восстановить исходный номер в ПЛИС после последовательной передачи?

1 ответ

Решение

Чтобы преобразовать последовательный в параллельный, вам нужен какой-то способ определить конец или начало последовательности. Что-то вроде следующего должно помочь вам начать:

input            clk;
input            end_of_sequence;
input            sdata;
output reg [9:0] result;
//10 bit transmission

reg [9:0] pdata;

always @(posedge clk) begin
  // Shift serial data in
  pdata <= {pdata[8:0, sdata};
end

always @(posedge clk) begin
  if (end_of_sequence ) begin
    // at end of shifted data store the full parallel word
    result <= pdata;
  end
end
Другие вопросы по тегам