nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Тестируем "абсолютный" QuatCore

То есть, без относительных адресов, при том со всей подключённой периферией. Так выглядит "вычислительное ядро" (в центре композиции), к которому подключён видеообработчик (GPU, слева), селектор ввода-вывода, приёмопередатчик SPI, мультиплексор SPI на 3 устройства (связано с тем, что авторы отладочной платы "на всякий случай" вывели разные устройства на разные ножки ПЛИС, иначе можно было бы иметь общие SCK, MISO и MOSI, а индивидуальные только nCS), передатчик UART, контроллер ЖК-экранчика и контроллер SRAM:



Правда, сейчас мы всё это великолепие воткнули в данную "отладочную схему":


где вся эта периферия не задействована, да и программа к ней пока не обращается - записывает результаты в память - и убегает в бесконечный цикл.

В таком виде оно всё синтезируется в 1227 ЛЭ, хотя здесь явно синтезатор не дурак - обнаруживает толпу неподключённых выходов и вырезает незадействованную логику налево и направо. Предельная частота по результатам Timing Analyzer составляет 27,93 МГц - это мне нравится!

Когда симуляция завершилась, мне показали то место, на котором я закончил в прошлый раз:


Выглядит очень многообещающе!


Адреса команд немного сменились, поскольку я добавил код, перетаскивающий все оставшиеся элементы из списка ActivePoints в AllPoints. Он здесь тоже выполняется, хотя ему достаётся "примитивный частный случай", когда в списке ActivePoints ловить уже нечего.

Но что радует: времени на обработку ушло ровно столько же, и только здесь мы перешли в бесконечный цикл, которым "заканчивается" наша программа.

Давайте ещё глянем на дамп памяти:


Что-то до боли знакомое! Единственная разница - в [SP] - там раньше лежал адрес 0xC00C, из которого брался только младший байт 0x0C. В этот раз там лежит 0x8C52. Посмотрим, как мы использовали стек последний раз, это как раз в добавленном коде:

52  8879              @@Transfer:     ZAcc        RoundZero
53  83D8                          SUB     [Y+k]           ;если [Y+k]=NULL, значит пора закругляться
54  F325                          [SP++]  @@Transfer
55  B83D                          JL      ListOp
56  89FF                          NOP     [--SP]      ;раз не было вызова - возвращаем стек в исходное состояние                      


Мы занесли в стек метку @@Transfer, это адрес 0x52. Да, младший байт совпадает, а на старший нам плевать.


Что-то мне подсказывает, что всё хорошо :)

Теперь начнём в несколько этапов перебираться на "железо". Сначала - добавим в программу вывод параметров точек в UART. Затем - отладим это с "генератором тестового изображения" на 4 МГц. Затем - на 25 МГц. Затем - заставить записывать кадр в SRAM и по запросу выдавать его по UART. И наконец - то же самое, но с РЕАЛЬНЫМ изображением с камеры. Хотелось бы к пятнице успеть :)
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments