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

Работа с PCIe мостом GN4124

Я проект как есть не компилировала - сразу вставляла кусок кода в свой. Взяла модуль Lambo и App_csr, подключила с одной стороны к ногам, с другой к фифо интерфейсу и регистрам управления.

 

 

Давайте адрес, вышлю :)

 

[email protected]

 

Ихний проект lambo после "очистки" не работает. Но если создать свой и подсунуть ихнее ядро, все нормально. И даже разводиться чуть быстрее. А вот pinto никак. А не поскажите где ошибка с StreamID. И зачем убрали DCM, что это дало? И еще, как я понял, Вы не использовали ихний DDR контроллер?

Кстати на какой ISE работаете?

Изменено пользователем Dmitrij68

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


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

Плата у нас своя, но Gennum'овское ядро впихнуть туда все-таки получилось. Поковыряться пришлось основательно, но в итоге все получилось. Если кому интересно, могу рассказать о найденных интересных местах в версии для Xilinx.

Расскажите пожалуйста.

Особенно интересно узнать, есть ли баги в проекте Pinto и работают ли их драйвера под WIN7?

 

Недавно решал подобную проблему. Windriver кроме официального сайта можно найти и в местных "закромах". Там же вроде и лицензия к нему валялась. У Вас впереди будет много проблем. Без отличного понимания как работает FPGA core (они называют это "DMA sequencer") будет Вам очень тяжко. Если же плата не от Gennum, то соответственно и ДМА машинка у Вас будет своя. А сделать и отладить такую машинку даже малость потруднее будет, чем софт написать. Но всё проходимо, проверено. Я сейчас заканчиваю возню с GN4121 - это "младший брат" GN4124. В общем всё победимо, но впереди - много трудностей...

В чём основные проблемы и трудности?

Удалось ли в проекте Pinto реализовать одновременно capture и playback?

 

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


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

В чём основные проблемы и трудности?

Удалось ли в проекте Pinto реализовать одновременно capture и playback?

1. Их машинка для работы с памятью была заточена на работу с фифошками, то есть адрес "протянуть" на память было невероятно сложно.

В моём приложении (туча разных буферов для видео и аудио) адрес был необходим как воздух, пришлось вникнуть и всё переписать.

Добавил механизм так называемых "локальных дескрипторов", то есть небольшая табличка для каждого ДМА движка (на запись и на чтение), которая описывает начальный адрес ДМА и размер ДМА в страничках со стороны локальной памяти ДДР.

2. Крайне неэффективно использовалась память для SG таблиц внутри FPGA (3*32 bit на каждую SG страничку, переделал - у меня всего 32 бита на каждую страничку таблички, при этом всё пашет под 64 битными системами). Память BRAM в моём проекте была в большом дефиците (специфика многочисленных переходов из домена в домен и большое число фифошек).

3. Механизм перехода из 32bit * 200MHz в 64bit * 100MHz мне очень не понравился, исключил все DCMки и сделал всё на 32bit 200 МГц. После некоторой оптимизации по скорости всё разводится на ура, все констрейны выполняются.

4. Всю работу с видео выкинул, вставил свои куски (так было нужно для моей задачи).

5. Для улучшения производительности между памятью DDR и DMA движком вставил фифошки (они там в любом случае были необходимы, ибо клоки - разные). Возложил на этот кусок функции кэширования - сильно помогает поднять производительность системы в целом.

6. В дальнейшем перетащил дизайн под архиетктуру Спартана6, но это уже отдельная история.

7. Да, капчур с плейбеком в моём дизайне естественно живут независимо и одновременно. Нельзя сказать что они друг на друга не влияют, так как обращаются они в итоге к одной и той же ДДР памяти. Но если скорости записи и чтения далеки от предельных это влияние минимально.

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


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

1. Их машинка для работы с памятью была заточена на работу с фифошками, то есть адрес "протянуть" на память было невероятно сложно.

В моём приложении (туча разных буферов для видео и аудио) адрес был необходим как воздух, пришлось вникнуть и всё переписать.

Добавил механизм так называемых "локальных дескрипторов", то есть небольшая табличка для каждого ДМА движка (на запись и на чтение), которая описывает начальный адрес ДМА и размер ДМА в страничках со стороны локальной памяти ДДР.

2. Крайне неэффективно использовалась память для SG таблиц внутри FPGA (3*32 bit на каждую SG страничку, переделал - у меня всего 32 бита на каждую страничку таблички, при этом всё пашет под 64 битными системами). Память BRAM в моём проекте была в большом дефиците (специфика многочисленных переходов из домена в домен и большое число фифошек).

3. Механизм перехода из 32bit * 200MHz в 64bit * 100MHz мне очень не понравился, исключил все DCMки и сделал всё на 32bit 200 МГц. После некоторой оптимизации по скорости всё разводится на ура, все констрейны выполняются.

4. Всю работу с видео выкинул, вставил свои куски (так было нужно для моей задачи).

5. Для улучшения производительности между памятью DDR и DMA движком вставил фифошки (они там в любом случае были необходимы, ибо клоки - разные). Возложил на этот кусок функции кэширования - сильно помогает поднять производительность системы в целом.

6. В дальнейшем перетащил дизайн под архиетктуру Спартана6, но это уже отдельная история.

7. Да, капчур с плейбеком в моём дизайне естественно живут независимо и одновременно. Нельзя сказать что они друг на друга не влияют, так как обращаются они в итоге к одной и той же ДДР памяти. Но если скорости записи и чтения далеки от предельных это влияние минимально.

Bad0512,благодарю за столь обстоятельный рассказ.

Скажите, а насколько проект pinto в исходном виде, если не вносить в него никакие изменения, решает свою задачу по риал-тайм капчуру и плейбеку для HD-video?

 

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


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

Bad0512,благодарю за столь обстоятельный рассказ.

Скажите, а насколько проект pinto в исходном виде, если не вносить в него никакие изменения, решает свою задачу по риал-тайм капчуру и плейбеку для HD-video?

В принципе решает, но насколько я помню (давно это было...) полный дуплекс в этом проекте не реализован. То есть невозможно одновременно капчурить и плейбечить HD. Что-то там надо допиливать вручную. А вообще pinto - это демонстрационный проект, поэтому в нём немало глюков, и он ограничен в функциональности. Не стОит ждать от него высокой надёжности и широкой функциональности. Цель этого проекта - показать, что в принципе капчурить и плейбечить HD на дешёвом спартанчике возможно. Всё остальное - как раз и задача разработчика, допилить этот дизайн до продажного состояния.

Ещё, насколько я помню, там нет поддержки 3G форматов. Сам код тоже местами вызывает у меня рвотные рефлексы, но это у всех по-разному.

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


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

Bad0512, а Вы не пробовали вообще без DDR обойтись для капчура и плейбека?

А что полезного вообще есть в pinto если Вы столько оттуда повыбрасывали?

Какие впечатления от самой GN4124, так ли всё работает как в доках описано, нет ли каких явных багов?

 

 

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


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

Bad0512, а Вы не пробовали вообще без DDR обойтись для капчура и плейбека?

А что полезного вообще есть в pinto если Вы столько оттуда повыбрасывали?

Какие впечатления от самой GN4124, так ли всё работает как в доках описано, нет ли каких явных багов?

Без ДДР - невозможно. Внутренней памяти мало, в реальной жизни необходимо буферировать минмум 1 секунду потока

для того, чтобы всё работало без дропов.

Полезного в дизайне от геннума - сама концепция полностью дуплексной системы, когда все три задачи (запись в ДДР,

чтение из ДДР и работа с регистрами target) пашут одновременно и независисмо. Сама структура всего дизайна весьма правильная

у них. Ну а реализация конечно индусская...

Багов явных в GN4124 я не нашёл, вроде всё пашет как заявлено.

 

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


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

Без ДДР - невозможно. Внутренней памяти мало, в реальной жизни необходимо буферировать минмум 1 секунду потока

для того, чтобы всё работало без дропов.

Буферировать минмум 1 секунду потока - это Вы имели в виду для какого видео, SD или 3G-HD?

Буфер на секунду для капчура+ буфер на секунду для плейбека = транспортная задержка между вх. и вых. видео получется 2 секунды.

Не многовато ли?

 

 

6. В дальнейшем перетащил дизайн под архиетктуру Спартана6, но это уже отдельная история.

Вы имеете в виду, что на Спартане-6 всё проще получается и без GN4124?

Хотя , конечно не надо забывать, что в Спартане-6 только PCIe x1, а в GN4124 - PCIe x4 и поэтому 3G-HD через Спартан уже не пролезет.

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


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

В документах от Gennum ( в отличии от Xilinx и Altera, которые приводят результаты даже для конкретных материнских плат ) нигде не указаны достижимые скорости передачи данных для GN4121/GN4124.

Если Вы имели дело с GN4121/GN4124, то что можете сказать по поводу достижимых скоростей?

Или же я всё же не заметил, и есть документ , где эти скорости приведены?

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


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

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

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

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

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

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

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

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

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

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