Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вывод изображения и DMA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
0.50
Здравствуйте!
Очень надеюсь на помощь знающих людей, так как с ПЛИС(Cyclone II) работаю всего ничего, а разобраться нужно.

Так вот, стоит задача организовать вывод изображения (для начала) с SD карты на VGA-монитор. С "чтение с карты --> запись в буфер (внеш. RAM)" вроде проблем нет, а вот с пересылкой данных из буфера в модуль VGA-контроллера возникают вопросы. Допустим в качестве DMA выступает SGDMA:
1. Буферная RAM имеет длину слова 16 бит, но дальше используются блоки по 8 бит (R3G3B2). Как поступить в таком случае - а)поставить на выходе Avalon-ST мастера SGDMA дополнительный буфер (16->8), либо б)соответствующим конфигурированием дескрипторов SGDMA заставить читать память по одному адресу два раза подряд? Рационально ли это?
2. Модуль RAM имеет задержку чтения 2 такта, как в таком случае организовать непрерывный поток данных дальше в ресемплер (скрин SOPC Buider'a внизу)? FIFO, иной буфер? Как вообще такие задачи решаются?
3. Есть ли у кого-то пример использования SGDMA? А то в хендбуке больше спецификация.

Основная тактовая - 50 МГц, для VGA - 25 МГц

Подскажите, пожалуйста, а то уже мозги плавятся..
vadimuzzz
Цитата(0.50 @ Aug 25 2011, 21:10) *
либо б)соответствующим конфигурированием дескрипторов SGDMA заставить читать память по одному адресу два раза подряд? Рационально ли это?

нет, не стоит делать шину уже, чем у памяти. посмотрите еще в сторону Avalon-ST адаптеров, там можно ширину шины менять
Цитата
2. Модуль RAM имеет задержку чтения 2 такта, как в таком случае организовать непрерывный поток данных дальше в ресемплер (скрин SOPC Buider'a внизу)? FIFO, иной буфер? Как вообще такие задачи решаются?

пример: http://www.alterawiki.com/wiki/Modular_SGD...eo_Frame_Buffer
Цитата
3. Есть ли у кого-то пример использования SGDMA? А то в хендбуке больше спецификация.

смотрите в описании HAL-API, там все функции для работы с SGDMA описаны
alexPec
Цитата(0.50 @ Aug 25 2011, 18:10) *
1. Буферная RAM имеет длину слова 16 бит, но дальше используются блоки по 8 бит (R3G3B2). Как поступить в таком случае - а)поставить на выходе Avalon-ST мастера SGDMA дополнительный буфер (16->8), либо б)соответствующим конфигурированием дескрипторов SGDMA заставить читать память по одному адресу два раза подряд? Рационально ли это?
2. Модуль RAM имеет задержку чтения 2 такта, как в таком случае организовать непрерывный поток данных дальше в ресемплер (скрин SOPC Buider'a внизу)? FIFO, иной буфер? Как вообще такие задачи решаются?
3. Есть ли у кого-то пример использования SGDMA? А то в хендбуке больше спецификация.


1. Я из сопца выводил всю шину (16 бит), а дальше вычитывал с этой шины с удвоенной скоростью частотой по сравнению с SGDMA. Синхронизировал по сигналу SOP

2,3. Вам надо примеры альтеровские посмотреть, например для DK-N2EVAL-3C25N, там дисплей есть аж 800х600

0.50
Возвращаясь к теме после небольшого "отпуска"...
Спасибо за ответы.

Теперь вопрос по Avalon-ST. Как я понял, VGA-контроллер сбрасывает внутренний сигнал ready в моменты "гашения луча" и приостанавливает приём. Каким образом отвечает на это источник данных (в данном случае это куча мелких преобразователей после SGDMA)? Просто приостанавливает обработку вне зависимости от моих желаний либо накапливает данные в каком-то внутреннем буфере? Или может эта задача ложится на плечи разработчика?
vadimuzzz
передатчик Avalon-ST смотрит сигнал ready приемника, транзакция считается состоявшейся при условии одновременной лог. 1 по сигналам ready и valid. если приемник заглох надолго, то лог. 0 на сигнале ready распространяется по всей цепочке преобразователей и в конце дойдет до контроллера DMA. почитайте спеки на Avalon, там вполне доступно объяснено все
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.