Реализация задержки в конечном автомате VHDL

Я пишу конечный автомат, который управляет потоком данных от чипа, устанавливая и считывая чтение/запись. Мои часы работают на частоте 27 МГц, что дает период 37 нс. Однако спецификация чипа, с которым я общаюсь, требует, чтобы я удерживал сигнал «запрос на чтение» не менее 50 нс. Конечно, это невозможно сделать за один цикл, так как мой период составляет 37 нс.

Я подумал, что могу создать дополнительное состояние, которое ничего не делает, но помечает следующее состояние как то, в котором я фактически завершаю чтение, следовательно, добавляю еще одну задержку периода (это означает, что я держу «запрос на чтение» в течение 74 нс), но это не звучит как хорошая практика.

Другой вариант, возможно, состоит в том, чтобы использовать счетчик, но мне интересно, есть ли еще один вариант, который я еще не посетил?

Как реализовать задержку в автомате, если состояние должно длиться дольше одного такта?

Спасибо!

T1 должно быть больше 50 нс(T1 должно быть больше 50 нс) Пожалуйста, см. здесь полное техническое описание.


person deed02392    schedule 25.10.2012    source источник


Ответы (1)


Задержки надежно выполнимы только с помощью часов - добавление дополнительного «тика» либо через дополнительное состояние, либо с использованием счетчика в существующем состоянии, на мой взгляд, вполне приемлемо. Счетчик может быть более гибким, если вы повторно используете тот же конечный автомат с более медленным внешним чипом (или если вы используете другую тактовую частоту для питания FPGA) - вы можете просто изменить максимальное количество вместо добавления нескольких «ждите» состояния конечного автомата.

person Martin Thompson    schedule 25.10.2012
comment
Это обнадеживает, я добавлял дополнительные состояния ожидания и думал, что это кажется немного нелепым, но я полагаю, что это имеет смысл, если вам нужен только один тик. Счетчик, вероятно, является лучшей идеей, но даже сложность счетчиков может быть необходима для изменения в зависимости от приложения. - person deed02392; 26.10.2012