July 28th, 2021

QuatCore

DMA для QuatCore

Вот фрагмент схемы нашего "процессорного ядра" QuatCore:


Справа сверху "притаилась" оперативная память. На той ПЛИС, что у меня есть сейчас (5576ХС4Т) и той, что хотел бы применить в лётном изделии (5576ХС6Т) полноценной двухпортовой памяти нет. Максимум - можно одновременно осуществлять чтение на один адрес и запись на другой адрес, при условии, что адреса не совпадают (если совпадают, то на выход пойдёт только что записанное значение, конкретно в этих ПЛИС, если они ведут себя аналогично Flex10k до последних мелочей). Но я пока и эту возможность не использовал из-за своей исключительной жадности: это бы потребовало два отдельных формирователя эффективного адреса, а они довольно толстые (выбрать базовый регистр, выбрать первый индексный, второй индексный регистры - и всё сложить).

Впрочем, эта жадность могла мне выйти боком: один формирователь, что у меня, должен "работать за двоих", т.е на его входе стоит мультиплексор, выбирающий, из какой половины команды взять биты, из SrcAddr или из DestAddr.

Сейчас адрес используется ровно один. Кроме него, на оперативную память поступают 16 бит для записи, напрямую из шины данных, сигнал WREN (WRite ENable), а выход отправляется в модуль QuatCoreMem, где стоит мультиплексор, срабатывающий на "квадратные скобки" в мнемонике команды. Если они стоят - значит нам нужно значение из памяти, коммутируем его. Если нет - значение одного из регистров (X,Y,Z,SP), выдадим его.

Теперь бы как-нибудь к этой же памяти подключить "провода" D,Q, MemWrReq, MemRdReq и MemReady из протокольного контроллера МКО, желательно малой кровью... Обеспечить ему пресловутый Прямой Доступ к Памяти, или Direct Memory Access (DMA)...

Collapse )

Схема "верхнего уровня":


Барабанная дробь... Синтезируется в 1704 ЛЭ (перед фиттером), 1732 ЛЭ (после фиттера). Timing Analyzer: все требования выполнены, предельная частота 26,04 МГц!

Как-то слишком просто... Я ожидал, что будет эдак 20 МГц, и ещё неделю-другую надо будет "конвейер перебирать", чтобы вернуться к родным 25 МГц. Какая-то жуткая подлянка затаилась и ждёт своего часу.

Ну ладно, с завтрашнего дня начинаю отладку. Разрозненные части, наконец-то, собираются в целое.