Избегайте разворачивания цикла для выполнения последовательной передачи данных в Verilog

Мне нужно последовательно выполнить набор кодов в Verilog. Проблема в том, что я пытался создать цикл, используя цикл for / generate for loop. В цикле for я твердо верю, что развертывание цикла происходит и все происходит параллельно. Не могли бы вы подсказать мне, как реализовать последовательное выполнение цикла for, чтобы я мог применить ту же концепцию для выполнения повторяющегося процесса? Или есть какой-либо другой метод, который можно использовать для реализации последовательной процедуры? Я использую процесс передачи нескольких байтов данных с помощью UART.


person Researchimage    schedule 23.11.2017    source источник
comment
Verilog - это параллельный язык. Единственное, что выполняется последовательно, - это операторы внутри блока always. Сами блоки always выполняются по желанию. То же самое для внутренней части генерируемого блока. Вы выбрали неправильный язык. В Verilog вам нужно все синхронизировать с флопами, чтобы выполнять последовательные действия.   -  person Serge    schedule 23.11.2017
comment
Я не уверен в этом, но, судя по вашему описанию, кажется, что вы говорите не об оборудовании, а о программном обеспечении. Если это правда, то Verilog может быть не идеальным языком для этого.   -  person Karan Shah    schedule 25.11.2017


Ответы (1)


Обычным методом аппаратной реализации последовательной процедуры является построение конечного автомата с оператором case.

  integer state, next_state;
  parameter S0 = 0, S1 = 1, S2 = 2;
  always @(posedge clock) state <= next_state;
  always @(*)
     case(state)
       S0: begin
           // ... code for sequence 0
           next_state = S1;
           end
      S1: begin
           // ... code for sequence 1
           next_state = S2;
           end
      S2: begin
           // ... code for sequence 2
           next_state = S0;
           end
      endcase

Но для передачи данных это очень неэффективное использование оборудования. Думайте о своих данных как об автомобиле на заводском конвейере. Несмотря на то, что автомобиль проходит последовательные этапы производства, каждый этап завода проходит повторяющуюся серию одних и тех же этапов на разных автомобилях, причем каждый этап работает параллельно. Вот как вы должны описывать свое оборудование для инструмента синтеза. Сейчас начинают появляться некоторые инструменты, которые берут последовательное описание и распараллеливают его, но сейчас они далеко не общедоступны.

person dave_59    schedule 23.11.2017