March 13th, 2020

QuatCore

Разгоняем QuatCore до 25 МГц, часть 4

Пора текстовые описания части 2 и части 3 "скомпилировать" в что-то похожее на принципиальную схему.

Это "фиктивная" схема, просто я понял, что "рисовать" в том же квартусе мне проще, чем в пэйнте, и даже на бумажке :)

Кстати, забавно, что квартус допускает модуль, не имеющий ни одного ВЫХОДНОГО пина (а значит, вещь в себе, никак не влияющая на схему в целом), и даже модуль ВООБЩЕ БЕЗ ПИНОВ! Спорим, вы ТАКОГО ещё не видели :)

Collapse )

Похоже на правду... Теперь нужно реальные модули подправить - и попробовать запустить на том же "аффинном алгоритме"...

UPD. Для модуля MemSrc есть существенная разница между входами stall и discard. Когда поступает stall=1, мы можем быть уверены, что когда он сбросится в ноль, это будет ТА ЖЕ САМАЯ КОМАНДА, поскольку конвейер был остановлен. А значит, те данные, что мы приготовили - те, что нужно. Если же discard=1, то да, мы имеем право подавать на выход всё что захотим. Но главное, когда снова будет discard=0 - мы не можем быть уверены, что прочитали ровно то, что от нас просили, поэтому нужно будет снова установить stall_req=1 и выдать данные только на следующем такте.

Именно поэтому мы не стали эти сигналы объединять по ИЛИ, как сделали на стороне DestAddr.

Да, мозги продолжают плавиться.
QuatCore

Разгоняем QuatCore до 25 МГц, часть 5

Пора что ль за реальное "железо" браться, в смысле, верилоговско-схематические модули :)

И начать с самого весёлого, единого в трёх лицах QuatCorePC (источник, получатель и главная движущая сила):


Как всегда, стараемся внести минимальные изменения, хотя это может аукнуться, когда чего-то не учтём. Но думаю, во время отладки ВСЕХ написанных для QuatCore программ (да, целых 10 :)) все косяки всплывут.

Collapse )

Надеюсь, самое страшное уже позади. Остальные модули не столь злы. Хотя на отладке, чувствую, хлебну ещё горя.