|
Вопрос по SOPC+NIOS, совсем запутался :( |
|
|
|
Jun 6 2007, 14:46
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Читаю мануалы на SOPC и NIOSII Software и как-то запутался. Ситуация такая: нам надо сделать фифо, которое заполняется снаружи, а при заполнении до определенного процента срабатывает прерывание, и эти данные по DMA перегоняются в SDRAM. Теперь пошли вопросы: 1) При разработке фифо как компонента для SOPC, есть ли разница - делать его внуренним или внешним (по отношению к SOPС)? Т.е. из SOPC наружу будут торчать либо выводы фифо, либо авалон-шины. Мне кажется, что принципиального значения иметь не будет. 2) Когда я сделаю этот элемент, то надо ли мне будет под NIOS писать для него драйвер? Или он увидится каким-то стандартным образом? Например, как память? Но если как память, то, получается, что память размером в одно слово, которое меняется на каждый новый запрос? Так? 3) При ответе на второй вопрос, возникает третий. DMA как делать, как переферия-> память или как память->память? 4) Блин, ОЧЕНЬ хочу пример разработки компонента SOPC, аналогичного фифо, плюс его последующее использование а NIOS.  А то мануалы читаю, голова уже пухнет, а систематизироваться оно все как-то не хочет.
|
|
|
|
|
 |
Ответов
|
Jun 6 2007, 15:19
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(RHnd @ Jun 6 2007, 18:46)  Читаю мануалы на SOPC и NIOSII Software и как-то запутался. Ситуация такая: нам надо сделать фифо, которое заполняется снаружи, а при заполнении до определенного процента срабатывает прерывание, и эти данные по DMA перегоняются в SDRAM. Теперь пошли вопросы: 1) При разработке фифо как компонента для SOPC, есть ли разница - делать его внуренним или внешним (по отношению к SOPС)? Т.е. из SOPC наружу будут торчать либо выводы фифо, либо авалон-шины. Мне кажется, что принципиального значения иметь не будет. 2) Когда я сделаю этот элемент, то надо ли мне будет под NIOS писать для него драйвер? Или он увидится каким-то стандартным образом? Например, как память? Но если как память, то, получается, что память размером в одно слово, которое меняется на каждый новый запрос? Так? 3) При ответе на второй вопрос, возникает третий. DMA как делать, как переферия-> память или как память->память? 4) Блин, ОЧЕНЬ хочу пример разработки компонента SOPC, аналогичного фифо, плюс его последующее использование а NIOS.  А то мануалы читаю, голова уже пухнет, а систематизироваться оно все как-то не хочет.  может поможет nios forum
--------------------
Cogito ergo sum
|
|
|
|
|
Jun 6 2007, 15:58
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(Postoroniy_V @ Jun 6 2007, 19:19)  Ссылка не рабочая  Или это был линк на ниосфорум вообще? Цитата(vetal @ Jun 6 2007, 19:34)  Определитесь кто будем мастером при передаче данных от вашего модуля в память. Мастером может быть DMA контроллер или ваш модуль может при заполнении самостоятельно скинуть данные без участия процессора и dma контроллера. Такой вариант в голову не приходил. Т.е., добавить Master port к компоненту и подключить его к SDRAM-Controller? Сдается мне, это сложнее будет сделать.  Тем более процессор там все равно нужен будет для последующей обработки. Но идея хорошая. Цитата(vetal @ Jun 6 2007, 19:34)  Для быстрой работы с SDRAM ваше устройство должно поддерживать burst режим. В противном случае будет низкая эффективность(особенно с sdram). мне надо-то буквально 4MB/s, даже меньше. Сейчас задача хоть как-то сделать, а потом можно будет дорабатывать и burst и еще чего. Или лучше сразу делать? Цитата(vetal @ Jun 6 2007, 19:34)  В NIOSII нет разделения периферия/память - всё в одной куче лежит. Читаю software Devalopment Handbook - разные режимы настройки DMA для переферия->память и память->память. Цитата(vetal @ Jun 6 2007, 19:34)  Для общения с вашим модулем можно создать файловый интерфейс или просто использовать функции HAL. Т.е. просто обращаться как к памяти не получится?
Сообщение отредактировал RHnd - Jun 6 2007, 15:58
|
|
|
|
|
Jun 6 2007, 16:12
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата(RHnd @ Jun 6 2007, 19:58)  Ссылка не рабочая  Или это был линк на ниосфорум вообще? рабочая, зарегестрируйтесь там. Цитата Такой вариант в голову не приходил. Т.е., добавить Master port к компоненту и подключить его к SDRAM-Controller? Сдается мне, это сложнее будет сделать.  Тем более процессор там все равно нужен будет для последующей обработки. Но идея хорошая. Да. Без процессора удобнее - на момент прихода прерывания данные уже лежат там, где надо  Цитата мне надо-то буквально 4MB/s, даже меньше. Сейчас задача хоть как-то сделать, а потом можно будет дорабатывать и burst и еще чего. Или лучше сразу делать? Лучше сразу. У вас на SDRAM не только ПУ сидит, а еще и процессор. Так для доступа к произвольной ячейке памяти будет 5-6 тактов(в зависимости от настроек), а в burst режиме - 5 тактов+ кол-во слов для записи(для выровненных данных). Эти задачи решает контроллер dma. У avalon очень простой интерфейс. Если вам DMA нужен только для этих целей - проще самому мастером стать, он делается за 15 минут. Цитата Читаю software Devalopment Handbook - разные режимы настройки DMA для переферия->память и память->память. Я не вдавался в подробности его работы, т.к. не использовал. Цитата Т.е. просто обращаться как к памяти не получится?  Получится, только не стоит забывать про кэш. Его надо обходить установкой старшего бита адреса (BASE+0x80000000) или использованием специальных инструкций/макросов. При общении в вашими данными тоже не стоит забывать про него.
|
|
|
|
|
Jun 7 2007, 04:08
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(vetal @ Jun 6 2007, 20:12)  Лучше сразу. У вас на SDRAM не только ПУ сидит, а еще и процессор. Так для доступа к произвольной ячейке памяти будет 5-6 тактов(в зависимости от настроек), а в burst режиме - 5 тактов+ кол-во слов для записи(для выровненных данных). Так ведь у процессора свой мастер, свое общение с SDRAM Controller, там все должно поддерживаться. Или я чего-то не понимаю? Цитата(vetal @ Jun 6 2007, 20:12)  Эти задачи решает контроллер dma. У avalon очень простой интерфейс. Если вам DMA нужен только для этих целей - проще самому мастером стать, он делается за 15 минут. Очень заманчиво. Надо будет попробовать. Т.е. на компоненте мастерпорт, он подключин к контроллеру SDRAM, пишет туда данные. Так же slave-port, подключенный к ниосу и дающий ему прерывание при окончании кадра (а так же размеры кадра и т.п.). Ниос же пока данные кадра полностью не перепишутся в SDRAM, вообще ничего не делает. Симпатично.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|