VHDL: помощь в понимании временных шагов/состояний и параллелизма.

Обычно я программист на С#/Java, и у меня все еще возникают проблемы с полным пониманием описания оборудования.

У меня есть регистр, который загружает значение. После этого компаратор сравнивает вывод регистра со значением «16». Если значение меньше или равно, я перехожу к State_0, если оно больше, я перехожу к State_3.

У меня есть процесс «controlsignals», работающий одновременно с моим процессом с состоянием. Для моих управляющих сигналов я знаю, что я должен установить разрешение для регистра на высокий уровень, когда я нахожусь в State_2, поэтому:

controlsignals: PROCESS (Tstep_Q)
BEGIN
    .... initialisation ...
    CASE Tstep_Q IS
    .... other states ....
    WHEN T2 => --define signals in time step T2
        enRegister = '1';

Для моей таблицы состояний:

statetable: PROCESS (Tstep_Q, regOutput)
BEGIN
    CASE Tstep_Q IS
        .... other states ....
        WHEN T2 => 
            IF ((regOutput - 16) > 0) 
                THEN Tstep_D <= T3;
            ELSE Tstep_D <= T0;
            END IF;

И ближе к концу моего кода у меня есть:

fsmflipflops: PROCESS (Clock)
BEGIN
    IF Clock'EVENT AND Clock = '1' THEN
        Tstep_Q <= Tstep_D;
    END IF;
END PROCESS;

reg: regn PORT MAP (somevalue, enReg, Clock, regOutput);

Поскольку моя таблица состояний и мои управляющие сигналы являются параллельными блоками, меня смущает... сначала включу ли я регистр, а затем запущу компаратор, чтобы определить мое следующее состояние, как я хочу, чтобы моя схема работала (поскольку таблица состояний чувствительна к regOutput )? Или было бы безопаснее создать новое состояние после T2, где у меня есть компаратор? Заранее спасибо.


person technokrat    schedule 23.10.2016    source источник
comment
Вы не показали ни объявлений, ни указанной тактовой частоты, ни предполагаемой цели вашего кода. Все это влияет на то, сколько вы можете сделать за один тактовый цикл от переднего фронта тактового сигнала до Tstep_Q и задержки RegOutput, чтобы вычесть 16 и проверить знак результата, выбрав значение для настройки Tstep_D до Tstep_D. Не зная тактовой частоты, целевой платформы реализации и ширины, вы получите мнения и вы сможете найти ответы путем пробного синтеза на целевой платформе. Какая часть пути задержки имеет весь такт с отдельным состоянием?   -  person    schedule 23.10.2016


Ответы (1)


Параллелизм компаратора

Представьте, что сразу после фронта тактового сигнала сигнал состояния был обновлен. У вас есть один тактовый период для сравнения и установки следующего состояния.

Ваш statetable постоянно оценивается.

Время enRegister

Выполнение сравнения в T2 имеет смысл только в том случае, если вы можете прочитать вывод регистра в том же тактовом цикле, когда вы устанавливаете разрешение. Это может быть проблемой, но ваш вопрос не содержит информации, чтобы проверить это.

Список чувствительности для таблицы состояния

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

Похоже, вы работаете с приличной ссылкой и хорошо структурируете свой код. Я подозреваю, что список чувствительности - это действительно проблема, с которой вы столкнулись, вызывая странное поведение в симуляции, поэтому я буду краток и позволю вам попытаться это исправить.

person Casperrw    schedule 24.10.2016