Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор ARM микроконтроллера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
microchaos
Здравствуйте,

Нужна помощь для выбора микроконтроллера для такой задачи:
1. Через USB закачать до 8-ми мегабаит данных на SDRAM;
2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz.
3. LAN;
4. GCC компилятор. Так как идея - Open Source.

Вопрос - возможно ли реализовать пункт 2? Или сразу брать FPGA? Чо хотелось бы апаратуру сделать как можно проще.
scifi
LPC43xx
Aner
STM32F429 макс. тактовая частота - 180MHz, а так 168, но кушает совсем мало, ...
A. Fig Lee
Цитата(Aner @ Nov 25 2013, 15:32) *
STM32F429 макс. тактовая частота - 180MHz, а так 168, но кушает совсем мало, ...

А ногодрыг на 80 МГц получится?
Можно поставить CPLD как буфер, запихивать на меньшей частоте, он будет выплевывать 80 МГц
vlad_new
Цитата
2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz.

Что автор имел ввиду не понятно. Если в случайном парядке дергать 16 лап с указанной частотой, то не на чём не получится. Если просто из памяти гнать данные в порт на 16 лап, то надо искать что то с дма, чтоб на указанной частоте успевало и непрерывность обеспечивало.
microchaos
Цитата(vlad_new @ Nov 26 2013, 04:57) *
Что автор имел ввиду не понятно. Если в случайном парядке дергать 16 лап с указанной частотой, то не на чём не получится. Если просто из памяти гнать данные в порт на 16 лап, то надо искать что то с дма, чтоб на указанной частоте успевало и непрерывность обеспечивало.


Задача такая, что надо читать данные из SDRAM и потом их передавать на внешний ЦАП 16 бит, со скоростью на 80 мега сампл (также вопрос и как синхронизировать ЦАП и данные, поступающие из микроконтроллера в этом случае). Естественно, без DMA тут не обойтись. В основном и нужны советы, возможно ли это вообще на каком-то микроконтроллере или забыть это дело и брать FPGA/CPLD.
Jury093
Цитата(microchaos @ Nov 26 2013, 09:56) *
Задача такая, что надо читать данные из SDRAM и потом их передавать на внешний ЦАП 16 бит, со скоростью на 80 мега сампл (также вопрос и как синхронизировать ЦАП и данные, поступающие из микроконтроллера в этом случае). Естественно, без DMA тут не обойтись. В основном и нужны советы, возможно ли это вообще на каком-то микроконтроллере или забыть это дело и брать FPGA/CPLD.

я бы стал строить оценочный вариант на связке stm32(f107, f207) и небольшой фпга с двумя банками по 8МБ SDRAM, отсюда алгоритм:
stm32 нагребла данных по usb в первый банк, дернула автомат в фпга и стала наливать второй банк, тем временем первый банк вытряхивается независимо в ЦАП - потом "первые номера меняются со вторыми"..
после этого можно будет понять требования к времянкам, объему SDRAM и тыпы..
вместо stm32 можно поискать что-то более знакомое..
microchaos
Цитата(Jury093 @ Nov 26 2013, 09:17) *
я бы стал строить оценочный вариант на связке stm32(f107, f207) и небольшой фпга с двумя банками по 8МБ SDRAM, отсюда алгоритм:
stm32 нагребла данных по usb в первый банк, дернула автомат в фпга и стала наливать второй банк, тем временем первый банк вытряхивается независимо в ЦАП - потом "первые номера меняются со вторыми"..
после этого можно будет понять требования к времянкам, объему SDRAM и тыпы..
вместо stm32 можно поискать что-то более знакомое..


Здесь все проще - закачал данные в SDRAM один раз, а потом те же самые данные циклически передаешь в ЦАП.

Если данные передавать из компьютера через USB в реальном времени, то здесь уже нужен USB3, так как USB2 такого количества данных просто не потянет...
DASM
Цитата(Jury093 @ Nov 26 2013, 11:17) *
я бы стал строить оценочный вариант на связке stm32(f107, f207) и небольшой фпга с двумя банками по 8МБ SDRAM, отсюда алгоритм:

Вообще не вижу смысла тут в проце внешнем. НИОС немного занимает места, а на USB Cypress повесить , чтобы не заморачиваться со стеком своим.
microchaos
Цитата(DASM @ Nov 26 2013, 09:55) *
Вообще не вижу смысла тут в проце внешнем. НИОС немного занимает места, а на USB Cypress повесить , чтобы не заморачиваться со стеком своим.


Да в такой конфигурации я не вижу смысла и для NIOS'а laughing.gif
Golikov A.
простите, а что такое USB Cypress?

яб тоже FPGA бы сразу мутил, может и с процом внутри
microchaos
Цитата(Golikov A. @ Nov 26 2013, 10:07) *
простите, а что такое USB Cypress?


Имеется ввиду FX2/FX3 микроконтроллеры от Cypress.
vlad_new
Получается что делаем что то типа цыфрового осциллографа. Ну тогда и лезим в него. Видим, что по мимо арма там не слабая альтера стоит. Китайцы за лишний чип удавятся. Значит без прогаммируемой матрицы никуда, даже на частотах в 60 мгц. Хотя китайцы и за хороший арм удавятся, так что если по usb протянет, то дма может спасти. Это надо спросить у тех, кто с дма работал.
microchaos
Цитата(vlad_new @ Nov 26 2013, 10:29) *
Получается что делаем что то типа цыфрового осциллографа. Ну тогда и лезим в него. Видим, что по мимо арма там не слабая альтера стоит. Китайцы за лишний чип удавятся. Значит без прогаммируемой матрицы никуда, даже на частотах в 60 мгц. Хотя китайцы и за хороший арм удавятся, так что если по usb протянет, то дма может спасти. Это надо спросить у тех, кто с дма работал.


Что то типа генератора сигнала. Обработка сигнала не нужна, только тупое произведение на пинах... Так вот и есть надежда найти микроконтроллер, чтобы обойтись с MCU + SDRAM вместо MCU + FPGA + SDRAM.
winipuh
Цитата(microchaos @ Nov 25 2013, 18:10) *
1. Через USB закачать до 8-ми мегабаит данных на SDRAM;
2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz.
3. LAN;
4. GCC компилятор. Так как идея - Open Source.

Может посмотреть в сторону техасовских ситар с PRUSS-модулями? AM18xx например (но не AM17xx - у этих PRUSS доступа пинам не имеют).

Кстати тут уже предлагали LPC43xx. Принцип такой же - cm0 пинами дрыгает, cm4 - в буфер подкидывает + USB/LAN.
Мне кажется этот вариант был несправедливо проигнорирован. sm.gif
microchaos
Цитата(winipuh @ Nov 26 2013, 11:22) *
Кстати тут уже предлагали LPC43xx. Принцип такой же - cm0 пинами дрыгает, cm4 - в буфер подкидывает + USB/LAN.
Мне кажется этот вариант был несправедливо проигнорирован. sm.gif


Да нет, не проигнорирован. Правду говоря, то всё и началось от того, что увидел LPC4370. Но основной вопрос - успеет ли микроконтроллер (LPC43xx или какой нибудь другой) дрыгать пинами на такой частоте так и остается не отвеченным...
Golikov A.
http://electronix.ru/forum/index.php?showtopic=114799
вот кто успеет)... и 100 баксов за готовую плату.
а там и усб и езернет.
И 2 ядра, и плис в придачу) ...


а если за ценой гонитесь, то проц + плис выполняющую такую задачу будут ИМХО дешевле одного проца.
HardEgor
Цитата(A. Fig Lee @ Nov 26 2013, 06:28) *
А ногодрыг на 80 МГц получится?
Можно поставить CPLD как буфер, запихивать на меньшей частоте, он будет выплевывать 80 МГц

Из STM32F4xx получится, у него макс частота GPIO 180MHz на 10пФ.
Главное чтобы хватило внутренней скорости. Это-же надо читать 160Mbyte/sec и выдавать с такой-же скоростью.
Возможно получится нахимичить с FSMC взяв 16-разрядные ЦАП, RAM и регистр, т.е. контроллер выдает адрес, память выставляет данные, которые защелкиваются в регистре и по синхросигналу с МК ЦАП считывает их с регистра.
winipuh
Цитата(microchaos @ Nov 26 2013, 13:31) *
Да нет, не проигнорирован. Правду говоря, то всё и началось от того, что увидел LPC4370. Но основной вопрос - успеет ли микроконтроллер (LPC43xx или какой нибудь другой) дрыгать пинами на такой частоте так и остается не отвеченным...

А ЦАП какой? Ссылку на даташит можете скинуть?

Цитата(HardEgor @ Nov 26 2013, 13:59) *
Из STM32F4xx получится, у него макс частота GPIO 180MHz на 10пФ.
Главное чтобы хватило внутренней скорости. Это-же надо читать 160Mbyte/sec и выдавать с такой-же скоростью.
Возможно получится нахимичить с FSMC взяв 16-разрядные ЦАП, RAM и регистр, т.е. контроллер выдает адрес, память выставляет данные, которые защелкиваются в регистре и по синхросигналу с МК ЦАП считывает их с регистра.

Тут еще вопрос какой допустимый джиттер с выставлением сэмплов?


Хотел было еще про PSoC 5 вспомнить, но... цена у них... дешевле мк + нормальная fpga
microchaos
Цитата(winipuh @ Nov 26 2013, 12:08) *
А ЦАП какой? Ссылку на даташит можете скинуть?


http://www.limemicro.com/download/LMS6002D...Sheet-1.2r0.pdf

winipuh
Так или иначе, а между перед ЦАП-ом нужно FIFO, данные из которого читаются по внешнему клоку (от ЦАП-а) строго каждые 12.5 ns, а пишутся более-менее регулярно burst-ами.

Полагаю на МК такое хрен сделаешь.
Даже если прерываниями дергать DMA чтобы он записывал в GPIO OUT - сэмплы все равно будут выставляться с джиттером не менее 20-30 ns из-за коллизий на внутренней шине данных.
На PRUSS кстати тоже видимо не получится (по той же причине — двухпортовой памяти там кажется нет).

Так что можно не парится и сразу переходить к варианту "Б" - на FPGA.
Тем более, что напр. у Spartan-6 SDRAM-контроллер уже есть встроенный.
Нажмите для просмотра прикрепленного файла


bb-offtopic.gif
А что это за opensource-проект будет? sm.gif
microchaos
Цитата(winipuh @ Nov 26 2013, 13:14) *
Полагаю на МК такое хрен сделаешь.
Даже если прерываниями дергать DMA чтобы он записывал в GPIO OUT - сэмплы все равно будут выставляться с джиттером не менее 20-30 ns из-за коллизий на внутренней шине данных.
На PRUSS кстати тоже видимо не получится (по той же причине — двухпортовой памяти там кажется нет).


Ну вот, это я и хотел знать.

Цитата
Так что можно не парится и сразу переходить к варианту "Б" - на FPGA.


Скорее - вариант "Б" это ARM, так что оставляемся на варианте "А" - FPGA.

Цитата
А что это за opensource-проект будет? sm.gif


Генератор радио сигнала на этой платформе:
http://myriadrf.org/myria-rf-board-1/


Golikov A.
На 6 спартан и проц вкатать можно сразу.
а еще есть
http://www.trenz-electronic.de/fileadmin/d...M-TE0600-02.pdf
уже спартан 6 да с ДДР3, по него есть нижняя платка у них же, с езернетом гигабитным или с УСБ.

jcxz
Цитата(microchaos @ Nov 26 2013, 13:52) *
Здесь все проще - закачал данные в SDRAM один раз, а потом те же самые данные циклически передаешь в ЦАП.

Если вам не нужно в реальном времени качать данные откуда-то, а можно проигрывать заранее записанные данные (из ОЗУ), то можно сделать дёшево и сердито:
CY7C68013A+какая-нить подходящая микросхема памяти с пакетным обращением (или микросхема FIFO-памяти).
На x51-ядре CY7C68013A эмулируем старт пакета (управляющие сигналы), далее через GPIF наполняем ОЗУ.
Проигрывание: опять же - формируем сигналы для старта пакета на x51. Наверное потребуется добавить немножко логики.
Будет огромный запас по частоте и никаких джиттеров.
Можно ещё попробовать использовать ИС FIFO (не силён в них) вместо ИС RAM.

Ещё вариант: просто CY7C68013A + мультиплексор на её параллельные выходы. Их там 16, а макс. частота CY7C68013A до 48МГц. Так что может удастся обойтись даже без внешней ОЗУ wink.gif
sonycman
Цитата(jcxz @ Nov 27 2013, 07:10) *
Ещё вариант: просто CY7C68013A + мультиплексор на её параллельные выходы. Их там 16, а макс. частота CY7C68013A до 48МГц. Так что может удастся обойтись даже без внешней ОЗУ wink.gif

И каким образом 48 мегагерцовый чип будет выставлять данные на скорости 80 МГц?
Golikov A.
не только 48 МГц, но еще и шина 8 бит.
правильно будет
как 48 МГц чип с 8 битной шиной, будет выставлять
16 бит данных на 80 МГц?

Я так понимаю основная надежда это на ОЗУ (наверное внешние, потому что внутреннего 4 кБ), да еще такое которое само сможет на АЦП данные выдавать, ну тогда можно и другой любой чип брать...
jcxz
Цитата(sonycman @ Nov 27 2013, 10:37) *
И каким образом 48 мегагерцовый чип будет выставлять данные на скорости 80 МГц?

Лень открывать даташит, но если его можно завести на 40МГц, то мультиплексор на 16-битной шине творит чудеса wink.gif

Цитата(Golikov A. @ Nov 27 2013, 11:02) *
не только 48 МГц, но еще и шина 8 бит.
правильно будет

А вы моё письмо внимательнее прочитайте. Там шина 16бит

Цитата(Golikov A. @ Nov 27 2013, 11:02) *
Я так понимаю основная надежда это на ОЗУ (наверное внешние, потому что внутреннего 4 кБ), да еще такое которое само сможет на АЦП данные выдавать, ну тогда можно и другой любой чип брать...

Ещё раз - прочитайте письмо прежде чем отвечать.
Выдавать такты на ОЗУ сможет внешний генератор+небольшая обвязка из логики. А ядра x51 должно хватить для формирования сигналов управления этим хозяйством (разрешения/чтения/записи).
Golikov A.
Цитата(jcxz @ Nov 27 2013, 10:09) *
Лень открывать даташит, но если его можно завести на 40МГц, то мультиплексор на 16-битной шине творит чудеса wink.gif


может если не ленится, и почитать

Цитата(jcxz @ Nov 27 2013, 10:09) *
А вы моё письмо внимательнее прочитайте. Там шина 16бит


то можно увидеть что шина 8 бит, хотя вы не привели конкретного контроллера, может есть еще какие -то

Цитата(jcxz @ Nov 27 2013, 10:09) *
Ещё раз - прочитайте письмо прежде чем отвечать.
Выдавать такты на ОЗУ сможет внешний генератор+небольшая обвязка из логики. А ядра x51 должно хватить для формирования сигналов управления этим хозяйством (разрешения/чтения/записи).


если есть ОЗУ которое при помощи внешней логики генерирует посылку данных на АЦП, а также рефрешиться что надо в случае современных озу, и прочее, то можно поставить любой контроллер.

jcxz
Цитата(Golikov A. @ Nov 27 2013, 12:42) *
то можно увидеть что шина 8 бит, хотя вы не привели конкретного контроллера, может есть еще какие -то

Как не привёл? А CY7C68013A ?
Открываем даташит на него и видим: 8-Bit or 16-Bit External Data Interface

Цитата(Golikov A. @ Nov 27 2013, 12:42) *
если есть ОЗУ которое при помощи внешней логики генерирует посылку данных на АЦП, а также рефрешиться что надо в случае современных озу, и прочее, то можно поставить любой контроллер.

Любой и ставим, только CY7C68013A удобнее. sm.gif
Зачем рефреш? Чем SRAM не подходит? Про объём топикстартер ничего не писал.
Да и для DRAM рефреш я думаю нужен только во время простоя. Когда идёт чтение в ЦАП - это и есть рефреш.
AlexandrY
Цитата(microchaos @ Nov 25 2013, 16:10) *
Нужна помощь для выбора микроконтроллера для такой задачи:


Только на DSP от 400 МГц с отдельной шиной на порт.

В качестве показателя скорости пересылки DMA можно посмотреть вот этот тест http://www.indemsys.ru/project/tests/22-lp...memory-dma-test
Как видно даже на процессоре с 130 МГц шиной и 260 МГц тактовой поток в 160 Мбайт/сек заберет почти все ресурсы. А про джиттер даже речи не идет.
sonycman
Цитата(jcxz @ Nov 27 2013, 11:29) *
Зачем рефреш? Чем SRAM не подходит? Про объём топикстартер ничего не писал.

Как не писал? А это что:
1. Через USB закачать до 8-ми мегабаит данных на SDRAM;
2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz.


Цитата
Лень открывать даташит, но если его можно завести на 40МГц, то мультиплексор на 16-битной шине творит чудеса

Ну так вы ещё раз объясните, как на 40 МГц контроллере без ОЗУ будете прокачивать гигабит (80х16) данных? Шина то ЦАПа 16 бит, а не 8!
По USB 2.0 такой поток тоже не пройдет.
jcxz
Цитата(sonycman @ Nov 27 2013, 19:41) *
Как не писал? А это что:
[i]1. Через USB закачать до 8-ми мегабаит данных на SDRAM;

"Это" "мегабаит" - это мегабаЙт или мегабИт? Где вы ошиблись - не могу угадать. А разница всего в 8 раз sm.gif

Цитата(sonycman @ Nov 27 2013, 19:41) *
Ну так вы ещё раз объясните, как на 40 МГц контроллере без ОЗУ будете прокачивать гигабит (80х16) данных? Шина то ЦАПа 16 бит, а не 8!

Да, про 16 бит я забыл.... wacko.gif
Ну тогда только: CY7C68013A + внешняя RAM... из простых путей без FPGA и DSP...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.