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

Разработка буфера на ПЛИС

Ищу человека, готового взяться за разработку, а лучше имеющего уже готовое решение. Задача тривиальная. Нужен буфер для АЦП на ПЛИС.

Думаю связка может выглядеть так АЦП->(SPI)->ПЛИС(+SRAM/SDRAM)->(SPI)

Как это должно работать: плис забирает данные с АЦП по SPI и складывает данные в память циклически (памяти должно быть минимум 128kb). Раз в секунду по запросу с SPI ПЛИС должна отдавать данные блоком, который накопился за 1 секунду.

Никогда ничего подобного на стороне не заказывал. Пожалуйста, предложения в личку.

 

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


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

Не совсем понятно, вам что нужно: разработать блок для ПЛИС, выполняющий вышеуказанное или развести платку с ПЛИС, АЦП, памятью и написать блочёк для ПЛИС ?

--ещё что вы подразумиваете под "выдавать данные блоком?" то есть пересылать по SPI или или может лучше что бы штука формирующая запрос сама считывала это всё из памяти ?

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

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


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

Не совсем понятно, вам что нужно: разработать блок для ПЛИС, выполняющий вышеуказанное или развести платку с ПЛИС, АЦП, памятью и написать блочёк для ПЛИС ?

--ещё что вы подразумиваете под "выдавать данные блоком?" то есть пересылать по SPI или или может лучше что бы штука формирующая запрос сама считывала это всё из памяти ?

нужно разработать блок для ПЛИС.

под передачей блока данных я понимаю следующее: ПЛИС копит данные с АЦП во внешней памяти и раз в секунду отдаёт то что накопилось. Я думмаю что хост(забиратель) может забирать через ПЛИС по SPI.

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

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


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

Есть что то похожее - АЦП -> SDRAM (DDRII) -> UART можно модифицировать если нужно. Пишите в личку если интересно.

 

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


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

vitus_strom, SDRAM слишком круто для данной задачи + для нормальной поддержки такой памяти нужна более дорогая ПЛИС.

 

Т.к. памяти не так много надо + частота spi скорее всего не превышает 100мгц, то топикстартеру предлагаю систему CPLD + SRAM. Это, по-моему, проще и дешевле. Мои координаты lancer-7(собак)mail.ru

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

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


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

Ищу человека, готового взяться за разработку, а лучше имеющего уже готовое решение. Задача тривиальная. Нужен буфер для АЦП на ПЛИС.

Думаю связка может выглядеть так АЦП->(SPI)->ПЛИС(+SRAM/SDRAM)->(SPI)

Как это должно работать: плис забирает данные с АЦП по SPI и складывает данные в память циклически (памяти должно быть минимум 128kb). Раз в секунду по запросу с SPI ПЛИС должна отдавать данные блоком, который накопился за 1 секунду.

Никогда ничего подобного на стороне не заказывал. Пожалуйста, предложения в личку.

Найдите микроконтроллер со встроенной памятью, или с внешней... А ПЛИС в данном случае - это и сложнее и дороже... Если же нужно иметь только одну железку, то пром-РС за 100 долл. - самое то... Ну или стартовый набор с микроконтроллером готовый. На одной стророне SPI, на другой Ethernet 10/100 и никакой головной боли....

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


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

Найдите микроконтроллер со встроенной памятью, или с внешней... А ПЛИС в данном случае - это и сложнее и дороже... Если же нужно иметь только одну железку, то пром-РС за 100 долл. - самое то... Ну или стартовый набор с микроконтроллером готовый. На одной стророне SPI, на другой Ethernet 10/100 и никакой головной боли....

причём тут Ethernet?

а микроконтроллер действительно может быть и лучше... только вот внешнюю SRAM мне кажется проще на ПЛИС повесить.

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

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


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

... только вот внешнюю SRAM мне кажется проще на ПЛИС повесить.

 

Вы пробовали? Не помню кто сказал "Чем больше человек узнает в какой-либо области, тем больше понимает, как мало он знает". Моё мнение ПЛИС надо использовать там, где высокие скорости и микроконтроллер не потянет, во всех остальных случая на контроллере проще и дешевле как в разработке, так и в стоимости. И вообще когда "Задача тривиальная" это всегда грабли для исполнителя, поскольку заказчику ТЗ писать в лом, а понимания что нужно сделать у заказчика и исполнителя всегда сильно расходятся. Это как надо выкопать три ямы на огороде, но только где и какой глубины я не знаю. И вариантов результата два или исполнитель за стоимость трех ям перекапывает весь огород, или заказчик получает три ямы, которые его не устраивают или вообще могут быть у соседа :rolleyes:.

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


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

причём тут Ethernet?

а микроконтроллер действительно может быть и лучше... только вот внешнюю SRAM мне кажется проще на ПЛИС повесить.

Объясняю еще раз. У Вас в постановке задачи нет инженерного подхода. Это - "сляпаем, а потом будем думать, что же нам было надо"... Читайте про "гайку М3", Вам полезно будет...

В ПЛИС надо сделать контроллер памяти и его отладить. Потом сделать связь с РС. Кстати, SPI в РС просто так не втыкается, да и на кабель не подвешивается...

Микроконтроллеры сейчас гораздо дешевле, чем ПЛИС. Имеют встроенную память. А, главное, для них уже давно написаны ОСРВ. А в операционке Ethernet - библиотечная функция и примеров полно. А Ethernet гарантирует доставку данных. Причем на любое расстояние...

А что касается "накопился за 1 секунду" и "памяти должно быть минимум 128kb" - то и это не совсем так. Поскольку прием по SPI производится по ДМА, то ресурсов он не жрет. Поэтому, отдавать данные в РС можно начинать одновременно с началом их приема в SPI. А поскольку АЦП, работающий по SPI принципиально медленный (кстати, где расчет времени на прием-передачу данных от АЦП? Нужны ли там запросы готовности АЦП, сколько данных из АЦП принимается за 1 еденицу времени?), то микроконтроллер, такой как Блэкфин еще и успеет сделать сжатие данных. Он не будет передавать все подряд, а только изменения. А это еще более уменьшит буфер для отсчетов из АЦП... Можно конечно, поставить микроконтроллер с USB, а потом мучиться со связью...

Смотрите готовые стартовые наборы, например на starterkit.ru.

Еще раз - Читайте про "гайку М3", и только потом формулируйте задачу правильно!

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


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

Объясняю еще раз. У Вас в постановке задачи нет инженерного подхода. Это - "сляпаем, а потом будем думать, что же нам было надо"... Читайте про "гайку М3", Вам полезно будет...

В ПЛИС надо сделать контроллер памяти и его отладить. Потом сделать связь с РС. Кстати, SPI в РС просто так не втыкается, да и на кабель не подвешивается...

Микроконтроллеры сейчас гораздо дешевле, чем ПЛИС. Имеют встроенную память. А, главное, для них уже давно написаны ОСРВ. А в операционке Ethernet - библиотечная функция и примеров полно. А Ethernet гарантирует доставку данных. Причем на любое расстояние...

А что касается "накопился за 1 секунду" и "памяти должно быть минимум 128kb" - то и это не совсем так. Поскольку прием по SPI производится по ДМА, то ресурсов он не жрет. Поэтому, отдавать данные в РС можно начинать одновременно с началом их приема в SPI. А поскольку АЦП, работающий по SPI принципиально медленный (кстати, где расчет времени на прием-передачу данных от АЦП? Нужны ли там запросы готовности АЦП, сколько данных из АЦП принимается за 1 еденицу времени?), то микроконтроллер, такой как Блэкфин еще и успеет сделать сжатие данных. Он не будет передавать все подряд, а только изменения. А это еще более уменьшит буфер для отсчетов из АЦП... Можно конечно, поставить микроконтроллер с USB, а потом мучиться со связью...

Смотрите готовые стартовые наборы, например на starterkit.ru.

Еще раз - Читайте про "гайку М3", и только потом формулируйте задачу правильно!

Уважаемый! С чего вы взяли что втыкать надо в PC? Втыкать надо в в ARM9 с Embedded Linux где есть SPI! К качестве хоста будет выступать как раз одна из тех плат, ссылку на которые вы дали.

и не лень вам писать такие длинные и в сущности бесполезные посты?

Отдавать нужно именно блоками! Никакие сжатия и передача по изменению ненужны. Хватит тут выдумывать...

ВСЕМ кто откликнулся в личку я подробно изложил задачу. Уже есть господа у которых в готовом виде то что мне нужно.

 

Вы пробовали? Не помню кто сказал "Чем больше человек узнает в какой-либо области, тем больше понимает, как мало он знает". Моё мнение ПЛИС надо использовать там, где высокие скорости и микроконтроллер не потянет, во всех остальных случая на контроллере проще и дешевле как в разработке, так и в стоимости. И вообще когда "Задача тривиальная" это всегда грабли для исполнителя, поскольку заказчику ТЗ писать в лом, а понимания что нужно сделать у заказчика и исполнителя всегда сильно расходятся. Это как надо выкопать три ямы на огороде, но только где и какой глубины я не знаю. И вариантов результата два или исполнитель за стоимость трех ям перекапывает весь огород, или заказчик получает три ямы, которые его не устраивают или вообще могут быть у соседа :rolleyes:.

теперь вам отвечу: уже нашлась контора у которой поставленая задача реализована именно на ПЛИС и у них уже всё готово.

 

 

Объясняю суть задачи: нужно в систему на ARM9 c ОС(Linux) завести данные от АЦП. Частота дискретизации АЦП 64кГц. Стало быть прерывания с такой частотой в линуксе сожрут всё время(т.е. будет жутко всё тормозить). Напрашивается вывод: сделать аппаратный буфер-мост между АЦП и хостом. Тогда система под Linux сможет забирать данные скажем раз в секунду, но большими пачками (по SPI, который работает на частоте клока не менее 40МГц). Всё!

Если использовать тот же Блекфин да ещё и с ОСРВ - то никакого смысла в Linux на ARM9 нет.

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

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


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

и не лень вам писать такие длинные и в сущности бесполезные посты?

Отдавать нужно именно блоками! Никакие сжатия и передача по изменению ненужны. Хватит тут выдумывать...

Уважаемый, Dubov. Коллеги с форума по своей доброте душевной предлагают Вам проверенные своим опытом варианты реализации "туманной" задачи обмена. Никто тут, кроме Вас, не "выдумывает", ибо в своем старттопике Вы написали

Думаю связка может выглядеть так АЦП->(SPI)->ПЛИС(+SRAM/SDRAM)->(SPI)

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

Уважаемый! С чего вы взяли что втыкать надо в PC? Втыкать надо в в ARM9 с Embedded Linux где есть SPI! К качестве хоста будет выступать как раз одна из тех плат, ссылку на которые вы дали.
... столько вопросов бы к Вам не возникло и никто бы тут ничего не выдумывал...

Правильно поставленный вопрос - половина ответа.

Уважаемый iosifk правильно сказал:

У Вас в постановке задачи нет инженерного подхода.

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


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

Если использовать тот же Блекфин да ещё и с ОСРВ - то никакого смысла в Linux на ARM9 нет.

Не хотел зря время тратить, но вижу что тема не сдохла и ее другие читают...

Что бы я мог предложить:

1. Прицепить SPI на контроллер ДМА, так чтобы не было прерываний - "Стало быть прерывания с такой частотой в линуксе сожрут "... а было бы только одно, по концу приемма пакета данных

2. Если это так сложно, то можно взять более быстродействующий процессор, для которого SPI - это медленный порт и желательно его зарядить см. п.1

3. Ну если и это сложно, то я бы взял еще один микроконтроллер. Для серийного изделия - 20-ти ногий "мелкий и дешевый", для разового - такой же АРМ, чтобы не плодить разные платы. Память тоже взял бы с SPI одну или несколько микросхем. И тогда "мелкий" по одному порту принимал бы, а по другому записывал бы в память. Потом по второму или по третьему (это как удобней реализовать, то ли через отдельные линии, то ли через CS) отдавал бы в АРМ. Все получится очень дешево и может быть сделано "одними руками", а не разными... Об этом я писал в статье "Квадрига..."

 

А вот о чем не было сказано, так это об управлении АЦП. Там ведь тоже что-то нужно делать? И с АРМ должен быть протокол. Запрос-ответ? Или данные кинули в пустоту, а потом ловим сбойные коды, которые неизвестно где искать: в АЦП, в памяти или в SPI... Для циклических измерений проще, а если событие однократное? Где будем искать ошибки?

И в микроконтроллере реализовать отладочный режим гораздо проще.

Но об этом ТС не пишет. Думаю, что он сам этого еще не понимает. Ну а ПЛИС - сделают ему копию стартового набора с параллельной дорогой памятью, без контрольных кодов, без подтверждения. Ну, зато дорого... И "гайка" в виде SPI работать будет, а "остальное" - нет!

Удачи!

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


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

Видел такие штуки на ПЛИС - обычное решение.

В системе сбора данных 8 одноканальных АЦП вешались на ПЛИС, с плис данные выходили в паралельном виде.

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

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


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

Не хотел зря время тратить, но вижу что тема не сдохла и ее другие читают...

Что бы я мог предложить:

1. Прицепить SPI на контроллер ДМА, так чтобы не было прерываний - "Стало быть прерывания с такой частотой в линуксе сожрут "... а было бы только одно, по концу приемма пакета данных

 

если вешать АЦП непосредственно на ARM(Linux) то АЦП будет выдавать прерывание о готовности данных каждые 1/64000 = 156мкс. - это бешеная частота для прерываний в Linux (в Linux до 1кГц прерывания можно ловить). никакой пакетной передачи не получится. Само слово"пакет" подразумевает буфер для его хранения.

 

2. Если это так сложно, то можно взять более быстродействующий процессор, для которого SPI - это медленный порт и желательно его зарядить см. п.1

 

для ARM9 - SPI это медленый порт. Если бы я писал на голом железе, я так бы и сделал и вопрос был бы исчерпан. Но у меня Linux со всеми вытекающими.

 

3. Ну если и это сложно, то я бы взял еще один микроконтроллер. Для серийного изделия - 20-ти ногий "мелкий и дешевый", для разового - такой же АРМ, чтобы не плодить разные платы. Память тоже взял бы с SPI одну или несколько микросхем. И тогда "мелкий" по одному порту принимал бы, а по другому записывал бы в память. Потом по второму или по третьему (это как удобней реализовать, то ли через отдельные линии, то ли через CS) отдавал бы в АРМ. Все получится очень дешево и может быть сделано "одними руками", а не разными... Об этом я писал в статье "Квадрига..."

 

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

Я упомянул сразу ПЛИС только потому что уже видел такую реализацию.

не вижу проблем сделать на ПЛИС качественно и "одними руками".

 

Извините, но помоему, вы ищите повод упомянуть о своих статьях.

 

А вот о чем не было сказано, так это об управлении АЦП. Там ведь тоже что-то нужно делать? И с АРМ должен быть протокол. Запрос-ответ? Или данные кинули в пустоту, а потом ловим сбойные коды, которые неизвестно где искать: в АЦП, в памяти или в SPI... Для циклических измерений проще, а если событие однократное? Где будем искать ошибки?

И в микроконтроллере реализовать отладочный режим гораздо проще.

Но об этом ТС не пишет. Думаю, что он сам этого еще не понимает. Ну а ПЛИС - сделают ему копию стартового набора с параллельной дорогой памятью, без контрольных кодов, без подтверждения. Ну, зато дорого... И "гайка" в виде SPI работать будет, а "остальное" - нет!

Удачи!

 

управление АЦП - это получение от АЦП сигнала готовности данных(сигнал прерывания на отдельной ноге) и получение данных по SPI (АЦП как slave). Протокол с ARM: ПЛИС (всё же ПЛИС) посылает на ARM сигнал прерывания(тоже на отдельной ноге) как толкьо блок данных готов в памяти, ARM (SPI master) забирает данные. Пока ARM забирает данные, ПЛИС копит следующий блок в буфере (получается пинг-понг буфер).

 

 

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

 

Зачем гадать? Если есть заинтересованость взяться за дело - люди пишут в личку. Есть заинтересованность потрещать - пишут сюда.

 

Здесь я описал проблему. Решение мне предлагают заинтересованные авторы в личке(коих уже не один).

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


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

Я упомянул сразу ПЛИС только потому что уже видел такую реализацию.

не вижу проблем сделать на ПЛИС качественно и "одними руками".

...

Решение мне предлагают заинтересованные авторы в личке (коих уже не один).

И сколько стОит решение на ПЛИС? Неужели, дешевле 22$ ?

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


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

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

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

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

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

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

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

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

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

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