Я пытаюсь понять тайминги записи в память для FPGa 7-й серии, используя пользовательский интерфейс для контроллера памяти, созданного MIG (работающего на скорости 4:1).
Я использую документацию ug586. от Ксилиникса. Особенно я пытаюсь понять рисунок 1:77, который воспроизводится здесь:
Насколько я понимаю, для первых нескольких циклов app_addr
app_en
app_wdf_data
app_wdf_wren
и app_wdf_end
правильно утверждаются, и данные записываются. Смотрите синие линии.
Интересный момент наступает в (1), где app_rdy
сбрасывается, что означает, что контроллер памяти занят. В этот момент app_addr
удерживается по тому же адресу (2) до тех пор, пока app_rdy
не будет повторно подтверждено по адресу (6). Все имеет смысл до сих пор.
Что меня смущает, так это то, что написано на адрес a30
? Возможные варианты: данные (3), (4) или (5). Диаграмма и логика подразумевают, что (3) записывается в a30
(см. розовую пунктирную линию). Но я не могу понять, почему. Глядя на рисунок 1-75 в документах, вы можете дать данные для записи на один такт раньше, но данные в (3) на 2 такта раньше по сравнению с тем, когда app_rdy
повторно включается на нарастающем фронте тактового сигнала в (7). Так что остается либо (4), либо (5). Но ни один из них, похоже, не имеет смысла в этой демонстрации. Так что же написано в a30
и как мне это обработать?
(Мне также интересно, что написано на последующих адресах, но как только я пойму a30
, я смогу понять и их)