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

 
 
> ADC->NiosII+SDRAM->VGA
LAS9891
сообщение May 10 2017, 05:25
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Имеется проект на NiosII c SDRAM. В SDRAM организован кадровый буфер. Поставлена задача считать данные с АЦП, записать данные в SDRAM и затем отобразить их на мониторе. Возник вопрос каким образом тактировать АЦП и считывать данные с него? Просто через PIO? Какой способ эффективнее для решения такой задачи?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 31)
Golikov A.
сообщение May 10 2017, 06:35
Сообщение #2


Гуру
******

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



если у вас есть ниос, то у вас и остальная FPGA имеется. Естественно сделать автономный блок сбора данных с АЦП обычно предпочтительнее чем процом его дергать.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 06:38
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Golikov A. @ May 10 2017, 10:35) *
Естественно сделать автономный блок сбора данных с АЦП обычно предпочтительнее чем процом его дергать.

А как данные с автономного блока попадут в Nios и далее в SDRAM? Через чтение PIO?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 06:50
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 09:38) *
А как данные с автономного блока попадут в Nios и далее в SDRAM? Через чтение PIO?


Avalon Master

пишите в SDRAM (типа DMA), выставляете прерывание по окончании записи, а в Nios считываете данные из SDRAM


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 06:52
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 10:50) *
Avalon Master

пишите в SDRAM (типа DMA), выставляете прерывание по окончании записи, а в Nios считываете данные из SDRAM

Неподскажите пример подобной реализации?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 07:03
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 09:52) *
Неподскажите пример подобной реализации?


думаю разберетесь

только в mm_bridge

s0 - надо export
m0 - на s1 sdram контроллера
Прикрепленные файлы
Прикрепленный файл  adc2sdram.rar ( 7.01 килобайт ) Кол-во скачиваний: 30
 


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 10 2017, 07:52
Сообщение #7


Гуру
******

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



если не надо буфера данных собирать можно и без ДМА просто ниосом читать. Из ниоса выходит системная шина, ее надо поддержать в автономном блоке.
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 07:56
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(Golikov A. @ May 10 2017, 10:52) *
если не надо буфера данных собирать можно и без ДМА просто ниосом читать. Из ниоса выходит системная шина, ее надо поддержать в автономном блоке.


если АЦП медленный)))


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 10 2017, 08:27
Сообщение #9


Гуру
******

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



если автономный блок проводит первичную обработку, фильтрацию и децимацию данных то иногда и для быстрых АЦП ДМА не понадобится.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 08:40
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 10:50) *
пишите в SDRAM (типа DMA), выставляете прерывание по окончании записи

Т.е. запись в SDRAM и прерывание нужно производить без участия NIOS?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 09:15
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 11:40) *
Т.е. запись в SDRAM и прерывание нужно производить без участия NIOS?


да, на "железном" уровне

не нужно, а можно))) это как захочется

только не забудь прерывание снимать из NIOS (они там уровневые)


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 10:02
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 13:15) *
да, на "железном" уровне

Тогда выходит нужно будет ещё и контроллер SDRAM написать в железе
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 10:14
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 13:02) *
Тогда выходит нужно будет ещё и контроллер SDRAM написать в железе


нет не надо
я же прикладыва qsys

там все есть
общение из FPGA с SDRAM через mm_bridge (Avalon-MM Pipeline Bridge)

а шина авалон - простейшая


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 10:28
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 14:14) *
нет не надо
я же прикладыва qsys

там все есть
общение из FPGA с SDRAM через mm_bridge (Avalon-MM Pipeline Bridge)

а шина авалон - простейшая


А теперь все сразу и заново. Есть АЦП, с которого данные считываются автономным блоком, далее автономный блок передает данные в Nios через Avalon Master. Nios через какой-то mm_bridge записывает данные в SDRAM, а потом опять Nios читает данные из SDRAM. Так?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 10:32
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 13:28) *
А теперь все сразу и заново. Есть АЦП, с которого данные считываются автономным блоком, далее автономный блок передает данные в Nios через Avalon Master. Nios через какой-то mm_bridge записывает данные в SDRAM, а потом опять Nios читает данные из SDRAM. Так?


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


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 10:35
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 14:32) *
да, но только автономный блок передает данные не в ниос, а сразу в память через авалон бридж

Ага. Есть АЦП, с которого данные считываются автономным блоком, далее автономный блок передает данные через mm_bridge в SDRAM, потом Nios читает данные из SDRAM. Так?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 10:59
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 13:35) *
Ага. Есть АЦП, с которого данные считываются автономным блоком, далее автономный блок передает данные через mm_bridge в SDRAM, потом Nios читает данные из SDRAM. Так?


точно

и передавайте эти данные на дисплей)

только учтите... если у вас прога выполняется из SDRAM вам надо разделить память для программы и данных АЦП

делается это в BSP editor linker script (установите размер sdram меньше), остальная часть под данные АЦП


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 10 2017, 10:59
Сообщение #18


Гуру
******

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



Есть автономный блок который читает данные из АЦП в свою внутреннюю память.

Дальше есть варианты:

- ниос может через авалон считать данные из этого блока себе в регистры и работать с ними, в том числе положить в память.
- Либо специальный ДМА контроллер может данные из этого автономного блока положить в память, откуда их может забрать ниос или другие блоки.
Функции ДМА можно встроить в функции блока.
- Можно сделать выделенный банк 2 портовой памяти в который с разных сторон ходят автономный блок и ниос

это все вариации распределения ресурсов в зависимости от задачи.

Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 11:02
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 14:59) *
точно

Для начала как подружить автономным блок с mm_bridge? Вот считал я данные с АЦП, они лежат в каком-то регистре, как их отправить на этот mm_bridge?
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 11:10
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 14:02) *
Для начала как подружить автономным блок с mm_bridge? Вот считал я данные с АЦП, они лежат в каком-то регистре, как их отправить на этот mm_bridge?


почитайте про Avalon шину, и все поймете

как написал Golikov A. надо сделать простенький DMA
c одной стороны блок АЦП, с другой Avalon шина


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 11:17
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Golikov A. @ May 10 2017, 14:59) *
Есть автономный блок который читает данные из АЦП в свою внутреннюю память.

Дальше есть варианты:

- ниос может через авалон считать данные из этого блока себе в регистры и работать с ними, в том числе положить в память.
- Либо специальный ДМА контроллер может данные из этого автономного блока положить в память, откуда их может забрать ниос или другие блоки.
Функции ДМА можно встроить в функции блока.
- Можно сделать выделенный банк 2 портовой памяти в который с разных сторон ходят автономный блок и ниос

это все вариации распределения ресурсов в зависимости от задачи.

Допустим блок есть и читает он данные из АЦП, только что вы подразумеваете под внутренней памятью? АЦП оцифровывает целый кадр изображения размером 800x600 точек и каждый пиксель кодируется 8-ю битами. Внутренней памяти на кадровый буфер не хватит. Поэтому автономный блок должен быстренько считать данные о первом пикселе (один байт), быстренько отправить этот байт в кадровый буфер номер 1 в SDRAM, и заново читать АЦП - уже второй пиксель, и так до конца первого кадра. Затем второй кадр читается уже во второй буфер в SDRAM, а первый кадр выводится на монитор.

Для реализации такого наверно более подходит вариант со специальным ДМА контроллером.

Цитата(Realking @ May 10 2017, 15:10) *
почитайте про Avalon шину, и все поймете

А есть про неё что-нибудь на русском языке?

Цитата(Realking @ May 10 2017, 15:10) *
как написал Golikov A. надо сделать простенький DMA
c одной стороны блок АЦП, с другой Avalon шина

Имеете в виду это: АЦП->автономный блок->Avalon шина->DMA->SDRAM
Go to the top of the page
 
+Quote Post
Realking
сообщение May 10 2017, 11:22
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(LAS9891 @ May 10 2017, 14:17) *
Допустим блок есть и читает он данные из АЦП, только что вы подразумеваете под внутренней памятью? АЦП оцифровывает целый кадр изображения размером 800x600 точек и каждый пиксель кодируется 8-ю битами. Внутренней памяти на кадровый буфер не хватит. Поэтому автономный блок должен быстренько считать данные о первом пикселе (один байт), быстренько отправить этот байт в кадровый буфер номер 1 в SDRAM, и заново читать АЦП - уже второй пиксель, и так до конца первого кадра. Затем второй кадр читается уже во второй буфер в SDRAM, а первый кадр выводится на монитор.

Для реализации такого наверно более подходит вариант со специальным ДМА контроллером.


А есть про неё что-нибудь на русском языке?


Имеете в виду это: АЦП->автономный блок->Avalon шина->DMA->SDRAM


АЦП->автономный блок->FIFO->DMA->Avalon шина->mm_bridge->SDRAM

FIFO лучше сделать с байтовым входом и 32битным выходом

P.S. на русском такие доки лучше не читать


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 10 2017, 11:30
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Realking @ May 10 2017, 15:22) *
АЦП->автономный блок->FIFO->DMA->Avalon шина->mm_bridge->SDRAM


А в роли FIFO выбрать Avalon-ST Dual Clock FIFO Core ?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 10 2017, 12:08
Сообщение #24


Гуру
******

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



Ну при таком раскладе только DMA,
FIFO авалоновское наверное не обязательно, если только его будет легче подружить с DMA контроллером, он тоже готовый имеется в системе ниос. Но я не думаю, что будет легче. Потому что для пихания в FIFO придется авалон поддержать в том же объеме что и для работы с ДМА.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение May 11 2017, 07:27
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(LAS9891 @ May 10 2017, 08:25) *
Имеется проект на NiosII c SDRAM. В SDRAM организован кадровый буфер. Поставлена задача считать данные с АЦП, записать данные в SDRAM и затем отобразить их на мониторе. Возник вопрос каким образом тактировать АЦП и считывать данные с него? Просто через PIO? Какой способ эффективнее для решения такой задачи?

Доброе утро!
Тему прочитал, но не совсем понял в каком месте необходим НИОС? Там у вас какая-то обработка? Или задача стоит просто как
Цитата(LAS9891 @ May 10 2017, 08:25) *
Поставлена задача считать данные с АЦП, записать данные в SDRAM и затем отобразить их на мониторе.
Если так, то попробуйте взглянуть тут https://habrahabr.ru/post/283488/ . Тут чисто "аппаратно" реализовано Камера ->SDRAM(два буфера один пишем, другой читаем)->VGA.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 11 2017, 07:30
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Kapsik @ May 11 2017, 11:27) *
Тему прочитал, но не совсем понял в каком месте необходим НИОС?

Решил использовать ниос, потому что там есть готовый контроллер SDRAM и на данный момент вывод изображения из буфера SDRAM уже работает.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 11 2017, 20:13
Сообщение #27


Гуру
******

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



так SDRAM контроллер есть и без ниоса, он то тут причемsm.gif
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 12 2017, 05:10
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Golikov A. @ May 12 2017, 00:13) *
так SDRAM контроллер есть и без ниоса, он то тут причемsm.gif

В MegaWizarde видел только для DDR SDRAM, или вы имеете ввиду где нибудь скачать?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 12 2017, 05:28
Сообщение #29


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(LAS9891 @ May 12 2017, 09:10) *
В MegaWizarde видел только для DDR SDRAM, или вы имеете ввиду где нибудь скачать?

Могу поделиться самым примитивным SDR SDRAM контроллером. Проверялся на памяти SDRAM MT48LC4M16A2-75 Micron. Правда он написан на VHDL мною пол года назад, и скорее всего написан очень криво с кучей недостатков и непонятно как он вообще работает. Однако он работает laughing.gif

Сообщение отредактировал Flip-fl0p - May 12 2017, 05:30
Go to the top of the page
 
+Quote Post
IL-76
сообщение May 12 2017, 14:36
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 16-03-09
Из: ex USSR
Пользователь №: 46 167



У Альтеры был бесплатный контроллер SDR SDRAM, вроде даже с исходниками. Плюс, описание в аппноте. Поищите на сайте или на фтп.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение May 12 2017, 20:13
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



В наборе кор университетской программы Альтеры есть бесплатные видео модули
ftp://ftp.altera.com/up/pub/Intel_Materia...Video/Video.pdf
DMA Controller for Video - то что вам скорее всего подойдет. На вход даете поток от ацп, а контролер сам складывает в память. Но учтите, что в этом контроллере нет поддержки burst транзакций на avallon шине, поэтому на хоть сколько нибудь серьезные разрешения и fps не приходится рассчитывать

Сообщение отредактировал Burenkov Sergey - May 12 2017, 20:14
Go to the top of the page
 
+Quote Post
Aldec
сообщение Jul 7 2017, 09:03
Сообщение #32


Частый гость
**

Группа: Участник
Сообщений: 160
Регистрация: 21-06-16
Пользователь №: 92 272



Цитата(Realking @ May 10 2017, 07:50) *
Avalon Master

пишите в SDRAM (типа DMA), выставляете прерывание по окончании записи, а в Nios считываете данные из SDRAM


Можно выходы развести едитором или в Custom Instructions настроить

www.xilinx.com/support/documentation/sw_manuals/help/iseguide/mergedProjects/fpga_editor/whgdata/whnvt30.htm

Сообщение отредактировал Aldec - Jul 7 2017, 13:46
Go to the top of the page
 
+Quote Post

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

 


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


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