* WIP: APS cumulative update
* Update How FPGA works.md
* Перенос раздела "Последовательностная логика" в отдельный док
* Исправление картинки
* Исправление оформления индексов
* Переработка раздела Vivado Basics
* Добавление картинки в руководство по созданию проекта
* Исправление ссылок в анализе rtl
* Обновление изображения в sequential logic
* Исправление ссылок в bug hunting
* Исправление ссылок
* Рефактор руководства по прошивке ПЛИС
* Mass update
* Update fig_10
* Restore fig_02
* Переработка лабораторных работ, связанных с памятью
Существенно переработаны ЛР3 и ЛР7:
Из ЛР3 убрано задание реализовать память данных. Эта память
использовалась только студентами ИВТ и только в рамках одной лабы.
В итоге использовалась готовая память, и ничего не мешает использовать
ее с самого начала.
Задание по реализации памяти инструкций также претерпело изменения.
Теперь код памяти инструкций предоставляется сразу. Это объясняется тем,
что код модуля состоит в общем-то из 4х строк, на которые тратится
слишком много времени (с учетом добавления тестбенча и проверок).
Кроме того, использование готового кода позволяет дать модуль чуть
посложнее (с параметризацией размера).
По итогу правок, третья лабораторная работа превращается чисто в
лабораторную по написанию регистрового файла, что должно положительно
сказаться на кривой сложности лаб. После второй лабы происходит слишком
резкий скачок в объемах работы.
Соответственно, в связи с тем, что память данных больше не делается на
третьей лабе, дополнительная ЛР по памяти данных с byte enable
необходимо перенести до реализации тракта данных.
* ЛР3, 5, 6. Правки из ревью
* ЛР7. Добавление иллюстраций
В методичке был люфт по поводу способов реализации запроса на чтение:
- только по сигналу mem_req_i (в этом случае запрос на чтение производился при любом значении сигнала mem_we_i);
- при одновременном выполнении mem_req_i == 1 и mem_we_i == 0.
В тестбенче был пропущен кейс на чтение из нулевого регистра до какой-либо записи в регистровый файл из-за чего не обнаруживалась ошибка, когда нулевой регистр принимал значение 0 только в случае записи любого значения по адресу ноль.
Closes#21.
Относительные ссылки заменены абсолютными.
Это сделано по причине того, что board_files не являются частью
электронной книги. Из-за этого, открытие ссылок, ведущих на board_files
из книги вело на 404.
Раньше в вивадо была проблема с использованием mem-файлов.
Они нормально моделировались, но при этом не использовались в
синтезе, пока им не выставишь тип "Memory Initialization File".
Однако с выставлением этого типа файл нельзя было открыть в
вивадо (и даже поменять тип этого файла).
Поэтому, все файлы в курсе носили расширение .txt, чтобы их можно
было легко открыть в любом другом редакторе, а в вивадо
выставлялся злополучный тип "Memory Initialization File" вручную.
Сейчас же, судя по всему, вивадо нормально выполняет синтез и
с "Memory File" тоже, а значит нет нужды в каком-либо изменении
типов, лишь бы файлы носили расширение .mem. При этом файлы этого
типа можно открывать и редактировать в редакторе вивадо.
Поскольку студентам не рассказывается что это за конструкция и зачем
она используется, они не прописывают таймскейл в своих модулях.
Смесь модулей с таймскейлом и без него приводит к появлению множества
предупреждений, забивающих лог.