Сгенерируйте HDL для конечных автоматов Мура и мучнистого

Stateflow® моделирование поддержки графиков трех типов машины состояний:

  • Классика (значение по умолчанию)

  • Мучнистый

  • Мур

Для генерации HDL-кода используйте Мучнистый, или Мур вводят машину состояний. Мучнистый и машина состояний Мура отличаются этими способами.

  • Выход Мучнистого конечного автомата является функцией текущего состояния и входных параметров.

  • Выход конечного автомата Мура является функцией текущего состояния только.

Основные преимущества использования Мучнистого или графики Мура как альтернатива Классическим графикам:

  • Графики Мура могут сгенерировать более эффективный код, чем Классические графики.

  • Во время компиляции, Мучнистый и графики Мура подтверждены для соответствия к их формальным определениям и семантическим правилам, и о нарушениях сообщают.

Чтобы узнать больше об инструкциях по генерации HDL-кода для графиков, смотрите блок Chart (Stateflow).

Откройте hdlcoder_fsm_mealy_moore модель для примера, который показывает как графикам Мура и модели Mealy.

Сгенерируйте HDL-код для конечного автомата Мура

При генерации HDL-кода для графика, который моделирует конечный автомат Мура, применяются эти условия.

  • График должен удовлетворить общие требования генерации кода как описано в блоке Chart (Stateflow).

  • Действия должны произойти в состояниях только. Эти действия должны быть не помечены.

    Действия Мура должны быть сопоставлены с состояниями, потому что выходной расчет зависит только от состояний, не входа. Настройка активных состояний на временном шаге t определяет выход. Если S состояния активно, когда график будит во время t, затем S состояния способствует выходу, остается ли состояние активным во время t+1.

  • Не вызывайте Simulink® функции.

    Это ограничение предотвращает выход от в зависимости от входа способами, которые затрудняют для генератора HDL-кода, чтобы проверить.

  • Если вы отключаете параметр Initialize Outputs Every Time Chart Wakes Up, сгенерированный HDL-код включает дополнительные регистры выходных значений конечного автомата.

Этот рисунок показывает диаграмму Stateflow конечного автомата Мура, который использует MATLAB® как язык действия.

Сгенерируйте HDL для мучнистого конечного автомата

При генерации HDL-кода для графика, который моделирует Мучнистый конечный автомат, применяются эти условия.

  • График должен удовлетворить общие требования генерации кода как описано в блоке Chart (Stateflow).

  • Действия должны быть сопоставлены с внутренними и внешними переходами только.

  • Если вы отключаете параметр Initialize Outputs Every Time Chart Wakes Up, сгенерированный HDL-код включает дополнительные регистры выходных значений конечного автомата.

Мучнистые действия сопоставлены с переходами. В Мучнистых машинах выходной расчет управляется изменением входных значений. Зависимость выхода на входе является фундаментальным фактором различения между формальными определениями машин Мили и Мура. Требование, чтобы результат действий переходов был до некоторой степени стилистическим, а не требуемый, чтобы осуществить Мучнистую семантику. Поскольку условиями перехода являются, в основном, входные условия в любом типе машины, выходной расчет в конечном счете следует за входными условиями в любом типе.

Этот рисунок показывает пример графика что модели Мучнистый конечный автомат с помощью MATLAB в качестве языка действия.

Этим кодом является Verilog® код сгенерирован для диаграммы Мили.

  always @(posedge clk or posedge reset)
    begin : Mealy_Chart_1_process
      if (reset == 1'b1) begin
        is_Mealy_Chart <= is_Mealy_Chart_IN_S0;
      end
      else begin
        if (enb) begin
          is_Mealy_Chart <= is_Mealy_Chart_next;
        end
      end
    end

  always @(is_Mealy_Chart, u) begin
    is_Mealy_Chart_next = is_Mealy_Chart;
    y_1 = 2'b00;
    case ( is_Mealy_Chart)
      is_Mealy_Chart_IN_S0 :
        begin
          if (u == 8'sb00000001) begin
            y_1 = 2'b00;
            is_Mealy_Chart_next = is_Mealy_Chart_IN_S1;
          end
        end
      is_Mealy_Chart_IN_S1 :
        begin
          if (u == 8'sb00000001) begin
            y_1 = 2'b01;
            is_Mealy_Chart_next = is_Mealy_Chart_IN_S2;
          end
        end
      is_Mealy_Chart_IN_S2 :
        begin
          if (u == 8'sb00000001) begin
            y_1 = 2'b10;
            is_Mealy_Chart_next = is_Mealy_Chart_IN_S3;
          end
        end
      default :
        begin
          if (u == 8'sb00000001) begin
            y_1 = 2'b11;
            is_Mealy_Chart_next = is_Mealy_Chart_IN_S0;
          end
        end
    endcase
  end

  assign y = y_1;

Инициализируйте Выходные параметры, которые будит каждая временная диаграмма

Мучнистый и графики Мура имеют опцию, чтобы возвратить выходные сигналы в их начальные значения, когда сигналы не управляются состоянием или переходом. Выберите параметр Initialize Outputs Every Time Chart Wakes Up, чтобы включить это поведение. Если вы очищаете этот параметр, сгенерированный HDL-код включает дополнительные регистры, чтобы сохранить выходные значения конечного автомата.

Этот рисунок показывает простой график Мура с двумя состояниями и одним выходом. Выход установлен в 1 в A состояния, и начальным значением выхода является 4.

Когда вы выбираете параметр Initialize Outputs Every Time Chart Wakes Up, выходное значение возвращается к 4 если конечный автомат не находится в A состояния. A состояния устанавливает выход на 1. Когда вы очищаете параметр Initialize Outputs Every Time Chart Wakes Up, выходное значение остается в 1 после того, как машина проходит через A состояния, и не возвращается к 4.

Этот рисунок показывает код Verilog, сгенерированный для этого графика Мура с выбранным Initialize Outputs Every Time Chart Wakes Up и затем с очищенным.

Эта таблица показывает использование ресурсов этих двух машин Мура, синтезируемых для Xilinx® Vivado® Устройство Virtex 7. Когда вы очищаете Initialize Outputs Every Time Chart Wakes Up, сгенерированный HDL-код включает дополнительные регистры для состояния вывода.

РесурсВыбранный Initialize Outputs Every Time Chart Wakes UpОчищенный Initialize Outputs Every Time Chart Wakes Up
LUTs1820
Регистры13
DSPS00
Блокируйте RAM00

Смотрите также

(Stateflow)

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте