реклама на сайте
подробности

 
 
> NIOS II, программирование ниос2 на СИ
x66
сообщение Jan 20 2015, 06:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Здравствуйте, пишу программу на Си в ниос2 эклипс. Проект был собран в qsys, там имеется ниос2, DDR2, PIO, on-chip memory2 и т.д. Возник вопрос: как на языке Си обратиться например именно к выводу PIO или к шине адреса DDR2? Вставил несколько строк, но не знаю правильно ли сделал
ALT_MODULE_CLASS_pio_in (PIO_IN_BASE, data_inp);
ALT_MODULE_CLASS_pio_out_on (PIO_OUT_ON_BASE, data_out_on);
ALT_MODULE_CLASS_pio_out (PIO_OUT_BASE, data_out);
ALT_MODULE_CLASS_onchip_memory2_0 (ONCHIP_MEMORY2_0_BASE, on_chip);
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jan 23 2015, 11:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Вам FIFO надо.

Данные поступают в FIFO а оттуда в DDR, через какой либо DMA контроллер.

Если данные нужны кому-то еще вы их читаете из ДДР, это приостанавливает DMA контроллер, и данные на время задержек падают в FIFO.

Ничего руками разруливать не надо, потому что проц не долбиться в шину постоянно (хотя может НИОС опять по чудному сделан, но надеюсь что нет). Вот и пока проц делает что-то еще, ДМА сам займет шину и успеет положить еще кусочек. Систему надо строить именно на таком принципе. Кстати ДДР контроллер разьве изначально не 2 портовый?

Вам надо перейти на следующий уровень абстракции, надо забыть про то какая у вас память, это забота контроллера, вы же не собираетесь еще сами следить за тем вовремя ли он подает ревреши, я надеюсь%)... Так же забота контроллера обеспечивать доступ к памяти по нескольким портам, во всяком случае у ксалинкс контроллер точно несколько портовый с арбитражем, наверяка у вас тоже, если это не так, то надо делать свой контроллер - арбитр, но не лезть к памяти напрямую, это дело контроллера памяти.

Обратите внимание что контроллер памяти ДДР - это не что-то собранное из вентилей ПЛИС, а отдельная область, готовый блок, слишком там все по таймингам не просто.
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 06:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(Golikov A. @ Jan 23 2015, 14:59) *
Вам FIFO надо.

Данные поступают в FIFO а оттуда в DDR, через какой либо DMA контроллер.

Если данные нужны кому-то еще вы их читаете из ДДР, это приостанавливает DMA контроллер, и данные на время задержек падают в FIFO.

Ничего руками разруливать не надо, потому что проц не долбиться в шину постоянно (хотя может НИОС опять по чудному сделан, но надеюсь что нет). Вот и пока проц делает что-то еще, ДМА сам займет шину и успеет положить еще кусочек. Систему надо строить именно на таком принципе. Кстати ДДР контроллер разьве изначально не 2 портовый?

Вам надо перейти на следующий уровень абстракции, надо забыть про то какая у вас память, это забота контроллера, вы же не собираетесь еще сами следить за тем вовремя ли он подает ревреши, я надеюсь%)... Так же забота контроллера обеспечивать доступ к памяти по нескольким портам, во всяком случае у ксалинкс контроллер точно несколько портовый с арбитражем, наверяка у вас тоже, если это не так, то надо делать свой контроллер - арбитр, но не лезть к памяти напрямую, это дело контроллера памяти.

Обратите внимание что контроллер памяти ДДР - это не что-то собранное из вентилей ПЛИС, а отдельная область, готовый блок, слишком там все по таймингам не просто.


ФИФО максимум как я понял на 8 кБайт. Требуется считать 1.2 МБайт памяти. Пока будет задержка на переключения ддр2 плюс чтение из ддр2 фифо будет переполнена. Поэтому придется по кусочкам производить чтение. On-chip memory можно сделать двухпортовым, а DDR2 насколько мне известно работает либо на чтение либо на запись.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 06:59
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 28 2015, 09:26) *
ФИФО максимум как я понял на 8 кБайт. Требуется считать 1.2 МБайт памяти. Пока будет задержка на переключения ддр2 плюс чтение из ддр2 фифо будет переполнена. Поэтому придется по кусочкам производить чтение. On-chip memory можно сделать двухпортовым, а DDR2 насколько мне известно работает либо на чтение либо на запись.

Что за данные собираетесь писать, какова скорость потока?
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 07:08
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 28 2015, 09:59) *
Что за данные собираетесь писать, какова скорость потока?


На входе приходят данные с АЦП со скоростью 60 мегаслов в секунду (1 слово = 8 бит). На выходе считываются данные со скоростью 2 мегаслова в секунду. Скорости потоков разные плюс надо не потерять входные данные. Объем выводимых данных 1.2 мегабайта.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 07:26
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 28 2015, 10:08) *
На входе приходят данные с АЦП со скоростью 60 мегаслов в секунду (1 слово = 8 бит). На выходе считываются данные со скоростью 2 мегаслова в секунду. Скорости потоков разные плюс надо не потерять входные данные. Объем выводимых данных 1.2 мегабайта.

А поясните, кто такие "вход" и "выход"? 8-бит АЦП с тактовой 60 МГц, а что такое 8-бит на 2МГц? Какое-то тут противоречие - нельзя писать данные 8*60 Mbit/s, а читать со скоростью 8*2 Mbit/s и не переполнить память?
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 08:09
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 28 2015, 10:26) *
А поясните, кто такие "вход" и "выход"? 8-бит АЦП с тактовой 60 МГц, а что такое 8-бит на 2МГц? Какое-то тут противоречие - нельзя писать данные 8*60 Mbit/s, а читать со скоростью 8*2 Mbit/s и не переполнить память?


То что я пытаюсь сделать является маленьким блоком большого устройства. Входом условно назвал АЦП. Выходом назвал приемник (пользователь), т.е. устройство которое предоставляет пользователю наглядные данные (скорее всего экран). Приемник не постоянно считывает данные, а только по запросу (т.е. пришел человек к терминалу и нажал кнопку сказав: а выведи ка мне ты последние 1.2 МБайта данных которые пришли с АЦП). Между АЦП и Приемником нужно создать такой проект чтобы он связал их, т.к. у них разные скорости работы. Проблема возникает в том, что из-за разницы скоростей возникает момент, когда необходимо где то сохранить данные от АЦП во время чтения из ОЗУ этих 1.2 МБайта.

На рисунке под плис подразумевается процессор NIOS II и другие устройства которые управляют DDR2 и данными.


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 08:22
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 28 2015, 11:09) *

Из Ваших пояснений не понятно, каким образом получается скорость чтения 8*2 Мbit/s, есть только желание получить объём данных в 1,2 МБ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- x66   NIOS II   Jan 20 2015, 06:52
- - doom13   Цитата(x66 @ Jan 20 2015, 09:52) Здравств...   Jan 20 2015, 07:55
|- - x66   Цитата(doom13 @ Jan 20 2015, 10:55) Смотр...   Jan 20 2015, 08:24
|- - doom13   Цитата(x66 @ Jan 20 2015, 11:24) Все что ...   Jan 20 2015, 08:36
- - Golikov A.   DDR2 - это не просто статичная память, даже когда...   Jan 20 2015, 08:38
- - doom13   Обманул Вас, для DDR2 как и для On-Chip Memory не ...   Jan 20 2015, 08:49
- - x66   получается, что я могу работать только с адресами ...   Jan 20 2015, 09:07
|- - doom13   Цитата(x66 @ Jan 20 2015, 12:07) altera_a...   Jan 20 2015, 09:09
||- - x66   Цитата(doom13 @ Jan 20 2015, 12:09) Да, т...   Jan 20 2015, 09:14
||- - x66   Цитата(doom13 @ Jan 20 2015, 12:09) Да, т...   Jan 20 2015, 09:19
||- - doom13   Цитата(x66 @ Jan 20 2015, 12:19) В моем с...   Jan 20 2015, 09:26
|- - doom13   Цитата(x66 @ Jan 20 2015, 12:07) получает...   Jan 20 2015, 09:16
|- - x66   Цитата(doom13 @ Jan 20 2015, 12:16) Не со...   Jan 20 2015, 09:22
|- - doom13   Цитата(x66 @ Jan 20 2015, 12:22) Имеется ...   Jan 20 2015, 09:42
|- - x66   Цитата(doom13 @ Jan 20 2015, 12:42) Нет, ...   Jan 20 2015, 09:57
- - Golikov A.   С DDR можно работать как с памятью вообще Для этог...   Jan 20 2015, 09:21
- - Golikov A.   нет потому что нужно адрес не int addr_on_chip=0x...   Jan 20 2015, 09:24
|- - x66   Цитата(Golikov A. @ Jan 20 2015, 12:24) н...   Jan 20 2015, 09:36
- - Golikov A.   имеет ввиду тоже что и я... просто ответил позже ...   Jan 20 2015, 09:59
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 12:59) В...   Jan 20 2015, 10:19
- - serjj   ЦитатаТолько вот в случае ниоса обращение к регист...   Jan 20 2015, 10:26
- - x66   Когда смотрел примеры, на сайте альтеры нашел файл...   Jan 20 2015, 10:45
|- - doom13   Цитата(x66 @ Jan 20 2015, 13:45) Когда см...   Jan 20 2015, 10:53
|- - x66   Цитата(doom13 @ Jan 20 2015, 13:53) Сомне...   Jan 20 2015, 11:00
- - Golikov A.   Ну прекратите сбивать человека ну возьмите вы свои...   Jan 20 2015, 10:59
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 13:59) Н...   Jan 20 2015, 11:38
- - krux   http://www.altera.com/literature/hb/nios2/n2sw_nii...   Jan 20 2015, 11:00
- - Golikov A.   ох... ЦитатаПервый код будет работать, а второй не...   Jan 20 2015, 11:51
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 14:51) а...   Jan 20 2015, 11:55
- - Golikov A.   раскройте вы макрос и поглядите что в нем, я не сп...   Jan 20 2015, 12:01
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 14:58) ...   Jan 20 2015, 12:24
- - Golikov A.   ну пипец ваша альтера.... этож надо было придумат...   Jan 20 2015, 12:28
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 15:27) н...   Jan 20 2015, 12:30
- - x66   Вот перевод http://www.naliwator.narod.ru/N2swHb9...   Jan 20 2015, 12:30
- - Golikov A.   Цитатат.е. вся дискуссия была для того, чтобы Вы с...   Jan 20 2015, 13:12
|- - doom13   Цитата(Golikov A. @ Jan 20 2015, 16:12) я...   Jan 20 2015, 13:41
- - Golikov A.   не надо передергивать я говорил что никакой магии ...   Jan 20 2015, 16:28
- - x66   Возник еще такой вопрос: во время переключения DDR...   Jan 23 2015, 07:47
|- - doom13   Цитата(x66 @ Jan 23 2015, 10:47) Возник е...   Jan 23 2015, 08:39
|- - x66   Цитата(doom13 @ Jan 23 2015, 11:39) Для п...   Jan 23 2015, 08:50
|- - doom13   Цитата(x66 @ Jan 23 2015, 11:50) я планир...   Jan 23 2015, 08:54
|- - x66   Цитата(doom13 @ Jan 23 2015, 11:54) Смотр...   Jan 23 2015, 09:02
|- - doom13   Цитата(x66 @ Jan 23 2015, 12:02) Проблема...   Jan 23 2015, 11:16
|- - doom13   Цитата(Golikov A. @ Jan 23 2015, 14:59) О...   Jan 23 2015, 12:03
|- - x66   Цитата(x66 @ Jan 28 2015, 11:09) Из Ваших...   Jan 28 2015, 08:31
|- - doom13   Цитата(x66 @ Jan 28 2015, 11:31) Чтение п...   Jan 28 2015, 08:33
|- - x66   Цитата(doom13 @ Jan 28 2015, 11:33) Т.е. ...   Jan 28 2015, 08:35
|- - doom13   Цитата(x66 @ Jan 28 2015, 11:35) нет, там...   Jan 28 2015, 08:58
|- - x66   Цитата(doom13 @ Jan 28 2015, 11:58) Что-т...   Jan 28 2015, 09:03
|- - x66   Цитата(doom13 @ Jan 28 2015, 11:58) Уто...   Jan 28 2015, 09:13
- - Golikov A.   Чего то мне говорит что начиная с ддр2, уже не мож...   Jan 23 2015, 17:44
|- - doom13   Цитата(Golikov A. @ Jan 23 2015, 20:44) Ч...   Jan 23 2015, 19:27
- - Golikov A.   смело...   Jan 23 2015, 21:48
|- - doom13   Цитата(Golikov A. @ Jan 24 2015, 00:48) с...   Jan 24 2015, 12:03
- - serjj   Xilinx MPMC И у Xilinx вроде давно уже есть контро...   Jan 26 2015, 08:02
|- - doom13   Цитата(serjj @ Jan 26 2015, 11:02) Xilinx...   Jan 26 2015, 08:48
- - Golikov A.   В целом конечно я не прав. Все же вопрос частоты. ...   Jan 26 2015, 09:26
|- - doom13   Цитата(Golikov A. @ Jan 26 2015, 12:26) В...   Jan 26 2015, 10:24
- - Golikov A.   БЛИН! Ну пипец эта ваша альтера - это так что...   Jan 28 2015, 08:59
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 11:59) Б...   Jan 28 2015, 09:11
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 11:59) Б...   Jan 28 2015, 10:32
|- - x66   Цитата(doom13 @ Jan 28 2015, 13:17) В Qsy...   Jan 28 2015, 10:37
|- - doom13   Цитата(x66 @ Jan 28 2015, 13:37) А что ес...   Jan 28 2015, 10:54
|- - x66   Цитата(doom13 @ Jan 28 2015, 13:54) Вы мо...   Jan 28 2015, 11:05
|- - doom13   Цитата(x66 @ Jan 28 2015, 13:57) Можете п...   Jan 28 2015, 11:06
- - Golikov A.   ЦитатаЦелых два дня и две ночи Вы не спали - думал...   Jan 28 2015, 10:35
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 13:35) П...   Jan 28 2015, 10:47
- - Golikov A.   ЦитатаУточнил кое какую деталь: пользователь нажим...   Jan 28 2015, 10:45
|- - x66   Цитата(Golikov A. @ Jan 28 2015, 13:45) У...   Jan 28 2015, 10:53
- - Golikov A.   ЦитатаО каких 60 МГц говорили Вы - Вам виднее. О с...   Jan 28 2015, 11:12
|- - x66   Цитата(Golikov A. @ Jan 28 2015, 14:12) В...   Jan 28 2015, 11:34
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 14:12) О...   Jan 28 2015, 11:48
|- - Timmy   Цитата(Golikov A. @ Jan 28 2015, 14:12) В...   Jan 28 2015, 11:50
|- - doom13   Цитата(Timmy @ Jan 28 2015, 14:50) Остало...   Jan 28 2015, 12:02
|- - x66   Цитата(doom13 @ Jan 28 2015, 15:02) В DDR...   Jan 28 2015, 13:44
- - Golikov A.   Кстати а какая частота DDR2?   Jan 28 2015, 12:23
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 15:23) К...   Jan 28 2015, 12:30
|- - x66   Цитата(doom13 @ Jan 28 2015, 15:30) Это в...   Jan 28 2015, 12:38
- - Golikov A.   200 МГц Я ошибаюсь или пропускная способность так...   Jan 28 2015, 12:39
|- - x66   Цитата(Golikov A. @ Jan 28 2015, 15:39) 2...   Jan 28 2015, 13:02
|- - doom13   Цитата(x66 @ Jan 28 2015, 16:02) Цитата(G...   Jan 28 2015, 13:22
- - Golikov A.   а... 3.2 Гигабита... А с учетом необходимой задер...   Jan 28 2015, 13:39
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 16:39) а...   Jan 28 2015, 14:34
- - Golikov A.   нет. Надо просто линкеру указать что у него есть т...   Jan 28 2015, 13:54
|- - x66   Цитата(Golikov A. @ Jan 28 2015, 16:54) н...   Jan 28 2015, 14:02
|- - doom13   Цитата(x66 @ Jan 28 2015, 17:02) Кстати, ...   Jan 28 2015, 14:14
|- - x66   Цитата(doom13 @ Jan 28 2015, 17:14) Этого...   Jan 28 2015, 14:22
- - Golikov A.   Получается что я ошибся... мне только не понятно ч...   Jan 28 2015, 14:34
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 17:34) Е...   Jan 28 2015, 14:52
- - Golikov A.   Из полезного вот что надо сделать надо ниосом в па...   Jan 28 2015, 15:42
|- - doom13   Цитата(Golikov A. @ Jan 28 2015, 18:42) К...   Jan 28 2015, 16:55
- - Golikov A.   А сколько тактов доступ к данным по шине Avalon? Н...   Jan 28 2015, 17:20
- - doom13   Цитата(Golikov A. @ Jan 28 2015, 20:20) А...   Jan 28 2015, 18:25
2 страниц V   1 2 >


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01549 секунд с 7
ELECTRONIX ©2004-2016