RHnd 0 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Читаю мануалы на SOPC и NIOSII Software и как-то запутался. Ситуация такая: нам надо сделать фифо, которое заполняется снаружи, а при заполнении до определенного процента срабатывает прерывание, и эти данные по DMA перегоняются в SDRAM. Теперь пошли вопросы: 1) При разработке фифо как компонента для SOPC, есть ли разница - делать его внуренним или внешним (по отношению к SOPС)? Т.е. из SOPC наружу будут торчать либо выводы фифо, либо авалон-шины. Мне кажется, что принципиального значения иметь не будет. 2) Когда я сделаю этот элемент, то надо ли мне будет под NIOS писать для него драйвер? Или он увидится каким-то стандартным образом? Например, как память? Но если как память, то, получается, что память размером в одно слово, которое меняется на каждый новый запрос? Так? 3) При ответе на второй вопрос, возникает третий. DMA как делать, как переферия-> память или как память->память? 4) Блин, ОЧЕНЬ хочу пример разработки компонента SOPC, аналогичного фифо, плюс его последующее использование а NIOS. А то мануалы читаю, голова уже пухнет, а систематизироваться оно все как-то не хочет. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Читаю мануалы на SOPC и NIOSII Software и как-то запутался. Ситуация такая: нам надо сделать фифо, которое заполняется снаружи, а при заполнении до определенного процента срабатывает прерывание, и эти данные по DMA перегоняются в SDRAM. Теперь пошли вопросы: 1) При разработке фифо как компонента для SOPC, есть ли разница - делать его внуренним или внешним (по отношению к SOPС)? Т.е. из SOPC наружу будут торчать либо выводы фифо, либо авалон-шины. Мне кажется, что принципиального значения иметь не будет. 2) Когда я сделаю этот элемент, то надо ли мне будет под NIOS писать для него драйвер? Или он увидится каким-то стандартным образом? Например, как память? Но если как память, то, получается, что память размером в одно слово, которое меняется на каждый новый запрос? Так? 3) При ответе на второй вопрос, возникает третий. DMA как делать, как переферия-> память или как память->память? 4) Блин, ОЧЕНЬ хочу пример разработки компонента SOPC, аналогичного фифо, плюс его последующее использование а NIOS. А то мануалы читаю, голова уже пухнет, а систематизироваться оно все как-то не хочет. :) может поможет nios forum Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Определитесь кто будем мастером при передаче данных от вашего модуля в память. Мастером может быть DMA контроллер или ваш модуль может при заполнении самостоятельно скинуть данные без участия процессора и dma контроллера. Для быстрой работы с SDRAM ваше устройство должно поддерживать burst режим. В противном случае будет низкая эффективность(особенно с sdram). Вы можете завести ваше устройство как внутрь системы, так и сделать для нее выходы, но в любом случае вам надо создавать компонент. В NIOSII нет разделения периферия/память - всё в одной куче лежит. Для общения с вашим модулем можно создать файловый интерфейс или просто использовать функции HAL. Если вы будете использовать элементы языка C для общения с периферией всегда устанавливайте 32 бит для обхода кэша данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHnd 0 6 июня, 2007 Опубликовано 6 июня, 2007 (изменено) · Жалоба может поможет nios forum Ссылка не рабочая :( Или это был линк на ниосфорум вообще? Определитесь кто будем мастером при передаче данных от вашего модуля в память. Мастером может быть DMA контроллер или ваш модуль может при заполнении самостоятельно скинуть данные без участия процессора и dma контроллера. Такой вариант в голову не приходил. Т.е., добавить Master port к компоненту и подключить его к SDRAM-Controller? Сдается мне, это сложнее будет сделать. :( Тем более процессор там все равно нужен будет для последующей обработки. Но идея хорошая. Для быстрой работы с SDRAM ваше устройство должно поддерживать burst режим. В противном случае будет низкая эффективность(особенно с sdram). мне надо-то буквально 4MB/s, даже меньше. Сейчас задача хоть как-то сделать, а потом можно будет дорабатывать и burst и еще чего. Или лучше сразу делать? В NIOSII нет разделения периферия/память - всё в одной куче лежит. Читаю software Devalopment Handbook - разные режимы настройки DMA для переферия->память и память->память. Для общения с вашим модулем можно создать файловый интерфейс или просто использовать функции HAL. Т.е. просто обращаться как к памяти не получится? :( Изменено 6 июня, 2007 пользователем RHnd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Ссылка не рабочая :( Или это был линк на ниосфорум вообще? рабочая, зарегестрируйтесь там. Такой вариант в голову не приходил. Т.е., добавить Master port к компоненту и подключить его к SDRAM-Controller? Сдается мне, это сложнее будет сделать. :( Тем более процессор там все равно нужен будет для последующей обработки. Но идея хорошая. Да. Без процессора удобнее - на момент прихода прерывания данные уже лежат там, где надо :) мне надо-то буквально 4MB/s, даже меньше. Сейчас задача хоть как-то сделать, а потом можно будет дорабатывать и burst и еще чего. Или лучше сразу делать? Лучше сразу. У вас на SDRAM не только ПУ сидит, а еще и процессор. Так для доступа к произвольной ячейке памяти будет 5-6 тактов(в зависимости от настроек), а в burst режиме - 5 тактов+ кол-во слов для записи(для выровненных данных). Эти задачи решает контроллер dma. У avalon очень простой интерфейс. Если вам DMA нужен только для этих целей - проще самому мастером стать, он делается за 15 минут. Читаю software Devalopment Handbook - разные режимы настройки DMA для переферия->память и память->память. Я не вдавался в подробности его работы, т.к. не использовал. Т.е. просто обращаться как к памяти не получится? :( Получится, только не стоит забывать про кэш. Его надо обходить установкой старшего бита адреса (BASE+0x80000000) или использованием специальных инструкций/макросов. При общении в вашими данными тоже не стоит забывать про него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHnd 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Лучше сразу. У вас на SDRAM не только ПУ сидит, а еще и процессор. Так для доступа к произвольной ячейке памяти будет 5-6 тактов(в зависимости от настроек), а в burst режиме - 5 тактов+ кол-во слов для записи(для выровненных данных). Так ведь у процессора свой мастер, свое общение с SDRAM Controller, там все должно поддерживаться. Или я чего-то не понимаю? Эти задачи решает контроллер dma. У avalon очень простой интерфейс. Если вам DMA нужен только для этих целей - проще самому мастером стать, он делается за 15 минут. Очень заманчиво. Надо будет попробовать. Т.е. на компоненте мастерпорт, он подключин к контроллеру SDRAM, пишет туда данные. Так же slave-port, подключенный к ниосу и дающий ему прерывание при окончании кадра (а так же размеры кадра и т.п.). Ниос же пока данные кадра полностью не перепишутся в SDRAM, вообще ничего не делает. Симпатично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Так ведь у процессора свой мастер, свое общение с SDRAM Controller, там все должно поддерживаться. Или я чего-то не понимаю? Так, только память они делят между собой по очереди и увеличение времени работы с памятью внешним устройством может привести к уменьшению быстродействия программы. Очень заманчиво. Надо будет попробовать. Т.е. на компоненте мастерпорт, он подключин к контроллеру SDRAM, пишет туда данные. Так же slave-port, подключенный к ниосу и дающий ему прерывание при окончании кадра (а так же размеры кадра и т.п.). Ниос же пока данные кадра полностью не перепишутся в SDRAM, вообще ничего не делает. Симпатично. да, так. мне тоже так понравилось - процессор не отвлекается по пустякам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться