Перейти к содержанию
    

Интеграция VGA с DMA в систему с NIOS

Из примеров от кита DE1 вытащил модуль VGA с DMA и FIFO (VGA.zip)

Интегрировал его в систему(SOPC.JPG) - платка разработано отдельно

(http://njnmnp.narod.ru/proj/video/video.html - на сайте narod.ru похоже вирус. :-(

при доступе по ФТП его не видно в HTML странице при просмотре чере эксплорер в конце добавляется скрипт. Или это у меня что-то завелось? )

 

Есть проблемы со срывом синхронизации.

Опустошается буфер FIFO.

Память программ и видеобуфер(куча) в SDRAM, по этому процессор и мастер VGA(DMA) конкурируют за доступ к SDRAM.

 

Проявляется проблема при выводе изображения с SD карточки в видео буфер.

 

Можно исхитрится и перестановкой операторов добится заливки изображения без срыва синхронизации, так как у процессора есть кеш.

Но это конечно же не решение проблемы.

 

Как правильно организовать подкачку из видео памяти?

 

Тут написано что нужно задействовать режим пакетной (Burst) передачи

 

http://forum.niosforum.com/forum/index.php...amp;#entry10311

 

В руководстве по шине Avalon есть описание сигналов и принципов работы.

 

Нету примерчика целиком :-(

На сколько я понял из документации SDRAM не поддерживает Burst передачу.

 

Получается если использовать стандартныме компоненты SOPC то, нужно цеплять отдельный компонент DMA и помтоянно перепрограммировать его по прерыванию?

 

Совсем запутался. Понедельник день тяжелый ;-)

VGA.zip

post-5454-1220874275_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из примеров от кита DE1 вытащил модуль VGA с DMA и FIFO (VGA.zip)

Интегрировал его в систему(SOPC.JPG) - платка разработано отдельно

(http://njnmnp.narod.ru/proj/video/video.html - на сайте narod.ru похоже вирус. :-(

при доступе по ФТП его не видно в HTML странице при просмотре чере эксплорер в конце добавляется скрипт. Или это у меня что-то завелось? )

 

Есть проблемы со срывом синхронизации.

Опустошается буфер FIFO.

Память программ и видеобуфер(куча) в SDRAM, по этому процессор и мастер VGA(DMA) конкурируют за доступ к SDRAM.

 

Проявляется проблема при выводе изображения с SD карточки в видео буфер.

 

Можно исхитрится и перестановкой операторов добится заливки изображения без срыва синхронизации, так как у процессора есть кеш.

Но это конечно же не решение проблемы.

 

Как правильно организовать подкачку из видео памяти?

 

Тут написано что нужно задействовать режим пакетной (Burst) передачи

 

http://forum.niosforum.com/forum/index.php...amp;#entry10311

 

В руководстве по шине Avalon есть описание сигналов и принципов работы.

 

Нету примерчика целиком :-(

На сколько я понял из документации SDRAM не поддерживает Burst передачу.

 

Получается если использовать стандартныме компоненты SOPC то, нужно цеплять отдельный компонент DMA и помтоянно перепрограммировать его по прерыванию?

 

Совсем запутался. Понедельник день тяжелый ;-)

 

Закончил с корректировкой ТУ на зделие, вернулся к своим баранам.

Или правильнее - баран вернулся в стадо к своим? ;-)

 

Контроллер SDRAM на шине Avalon поддерживает конвеерное чтение

Тут нашел пример мастера который поддерживает конвеерное чтение

http://www.altera.com/support/examples/nio...WT.oss=template

 

По теории для конвеерной передачи нужно захватывать шину на все время обмена.

В документацию на шину Avalon указано, что шина захватывается сигналом arbiterlock.

Но в описании и на изображении масера этого сигнала нету.

 

На сайте Altera слово "arbiterlock" находится только в одном документе - руководстве на шину Avalon.

Не понятно как захватывается шина?

 

Поиск по гуглу "arbiterlock" дает всего 8 ссылок.

Another way you can implement a priority scheme is to use large burst counts. If your master has a maximum burst count of 16 that means it'll get access for 16 word accesses. Arbitration loss will not happen in the middle of a burst because the 'arbiterlock' signal is used during a burst. The arbiterlock signal is generated by SOPC Builder but you can also manually add it to any custom master you create. To learn more about it see the Avalon-MM interface specification.

 

Из текста ясно, что когда используется burst обмен, то при генерации системы автоматически добавляется arbiterlock.

Это совпадает с указаным в руководстве на шину.

 

В примере по ссылке не используется arbiterlock.

Склоняюсь к мысли что система(SOPC Builder) сама его добавит.

 

Но как она определяет, что нужно добавлять?

 

Посмотрел по диаграммам (рис 3.11) из руководства на шину

http://www.altera.com/literature/manual/mnl_avalon_spec.pdf

Тоже не понятно :-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

arbiterloak - достаточно новый функционал. Выставляете его, и никто не сможет прервать ваш обмен. Очень полезная штука, как раз для фрэймбуфера. По идее должно расходоваться меньше логики на арбитраж, чем при использовании burst режима из-за отсутствия необходимости выполнять выравнивание burst'ов и лишнего арбитража.

 

Наиболее правильный способ разгрузить шину при отрисовке содержимого памяти - поставить fifo на 1-2 строки, это позволит существенно ускорить выборку данных из памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, во-первых, запись/чтение в SDRAM надо окружить FIFOшками. Но это, как я понимаю, сделано.

Во-вторых, поставьте в клеточках у SDRAM (data_master и VGA m1) вместо 2 и 1, по 32 скажем...

 

Вопрос, а с SD откуда взяли, тоже из примеров или что-то свое? По какой документации с ней разбирались?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, во-первых, запись/чтение в SDRAM надо окружить FIFOшками. Но это, как я понимаю, сделано.

Во-вторых, поставьте в клеточках у SDRAM (data_master и VGA m1) вместо 2 и 1, по 32 скажем...

 

Вопрос, а с SD откуда взяли, тоже из примеров или что-то свое? По какой документации с ней разбирались?

 

Запись в SDRAM делаю процессором напрямую - то есть если SDRAM занята то процессор будет простаивать.

 

В VGA контроллере FIFO на 1024х32бит.

Я правда поленился исследовать, продолжается ли подкачка в оперативку после конца кадра до начала следующего.

 

По поводу чисел в клеточках.

Я так понял, что это приоритет доступа, а не число непрерываемых транзакций.

Где бы об этом почитать?

 

SD я включил в режиме SPI.

У альтеры есть примеры, но в них манипуляция стандартными PIO в ручном режиме.

По этому я переделал стандартный модуль на переменную скорость.

Для чтения идентификаторов карточки CIS, нужна пониженая до 400КГц скорость тактирования.

Только для чтения, можно использовать с жестко заданой высокой скоростью.

FAT фат прикрутил от своего(точнее переделаного мной) проекта для АРМ

http://www.evodbg.com/index.php?option=com...0&Itemid=49

http://evodbg.com/doc/mp3last.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понял, что это приоритет доступа, а не число непрерываемых транзакций. Где бы об этом почитать?

Это гарантированное кол-во непрерываемых циклов непрерывного доступа. В шине avalon используется кольцевой циклический(карусельный,round-robin) арбитраж.

Читать как обычно - в документации на шину :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это гарантированное кол-во непрерываемых циклов непрерывного доступа. В шине avalon используется кольцевой циклический(карусельный,round-robin) арбитраж.

Читать как обычно - в документации на шину smile.gif

 

+1

Подключите SignalTab, там поглядите...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...