Настройка данных до нарастающего фронта — как лучше всего?

Я новичок, играю с очень простой оперативной памятью с одним портом (фактически на FPGA).

Его время «чтения» - стандартная штука -

i) Адрес на входе ОЗУ фиксируется по первому нарастающему фронту тактового сигнала (назовем этот фронт «единицей»).

ii) Данные, хранящиеся по этому адресу, затем появляются на выходе ОЗУ при следующем нарастающем фронте («два»)

Теперь, очевидно, для шага «i» мне нужно убедиться, что мой адрес настроен и стабилен до (и в течение времени удержания после) нарастающего фронта «один».

Мой простой вопрос: какова нормальная практика, когда это делать?

Я мог бы настроить адрес на полный нарастающий фронт (край «ноль»), прежде чем он потребуется для фиксации на краю «один», но почему-то это кажется неэффективным, поскольку кажется, что я использую как минимум 3 нарастающих фронта, чтобы получить данные из моего БАРАН.

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

Что лучше? Я неправильно понял что-то основное?

Ответы (1)

FPGA обычно разрабатываются с нулевым временем удержания.

Это означает, что вы можете установить адрес в тактовом цикле № 1, а ОЗУ выдаст нужные данные в такте № 2. Если адрес изменится при переходе к циклу 2, это не нарушит время удержания (поскольку минимальное время удержания равно 0).

Я мог бы настроить адрес на полный нарастающий фронт (край «ноль»), прежде чем он потребуется для фиксации на краю «один», но почему-то это кажется неэффективным, поскольку кажется, что я использую как минимум 3 нарастающих фронта, чтобы получить данные из моего БАРАН.

Это в основном то, что я говорю делать.

Существует задержка в 2 цикла для установки адреса и чтения вывода, но пропускная способность потенциально равна одному чтению за цикл, потому что вы можете менять адрес каждый цикл и получать новые данные каждый цикл.

Это действительно полезно Фотон. Спасибо за ответ