|
Выбор ARM микроконтроллера, Поиск кандидата |
|
|
|
Nov 25 2013, 14:10
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Здравствуйте,
Нужна помощь для выбора микроконтроллера для такой задачи: 1. Через USB закачать до 8-ми мегабаит данных на SDRAM; 2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz. 3. LAN; 4. GCC компилятор. Так как идея - Open Source.
Вопрос - возможно ли реализовать пункт 2? Или сразу брать FPGA? Чо хотелось бы апаратуру сделать как можно проще.
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 31)
|
Nov 25 2013, 23:28
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Aner @ Nov 25 2013, 15:32)  STM32F429 макс. тактовая частота - 180MHz, а так 168, но кушает совсем мало, ... А ногодрыг на 80 МГц получится? Можно поставить CPLD как буфер, запихивать на меньшей частоте, он будет выплевывать 80 МГц
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Nov 26 2013, 02:57
|
Местный
  
Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127

|
Цитата 2. Читать данные из SDRAM и проигрывать их на 16 GPIO, тактовая частота - 80MHz. Что автор имел ввиду не понятно. Если в случайном парядке дергать 16 лап с указанной частотой, то не на чём не получится. Если просто из памяти гнать данные в порт на 16 лап, то надо искать что то с дма, чтоб на указанной частоте успевало и непрерывность обеспечивало.
|
|
|
|
|
Nov 26 2013, 06:56
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(vlad_new @ Nov 26 2013, 04:57)  Что автор имел ввиду не понятно. Если в случайном парядке дергать 16 лап с указанной частотой, то не на чём не получится. Если просто из памяти гнать данные в порт на 16 лап, то надо искать что то с дма, чтоб на указанной частоте успевало и непрерывность обеспечивало. Задача такая, что надо читать данные из SDRAM и потом их передавать на внешний ЦАП 16 бит, со скоростью на 80 мега сампл (также вопрос и как синхронизировать ЦАП и данные, поступающие из микроконтроллера в этом случае). Естественно, без DMA тут не обойтись. В основном и нужны советы, возможно ли это вообще на каком-то микроконтроллере или забыть это дело и брать FPGA/CPLD.
|
|
|
|
|
Nov 26 2013, 07:17
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(microchaos @ Nov 26 2013, 09:56)  Задача такая, что надо читать данные из SDRAM и потом их передавать на внешний ЦАП 16 бит, со скоростью на 80 мега сампл (также вопрос и как синхронизировать ЦАП и данные, поступающие из микроконтроллера в этом случае). Естественно, без DMA тут не обойтись. В основном и нужны советы, возможно ли это вообще на каком-то микроконтроллере или забыть это дело и брать FPGA/CPLD. я бы стал строить оценочный вариант на связке stm32(f107, f207) и небольшой фпга с двумя банками по 8МБ SDRAM, отсюда алгоритм: stm32 нагребла данных по usb в первый банк, дернула автомат в фпга и стала наливать второй банк, тем временем первый банк вытряхивается независимо в ЦАП - потом "первые номера меняются со вторыми".. после этого можно будет понять требования к времянкам, объему SDRAM и тыпы.. вместо stm32 можно поискать что-то более знакомое..
|
|
|
|
|
Nov 26 2013, 07:52
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

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

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(DASM @ Nov 26 2013, 09:55)  Вообще не вижу смысла тут в проце внешнем. НИОС немного занимает места, а на USB Cypress повесить , чтобы не заморачиваться со стеком своим. Да в такой конфигурации я не вижу смысла и для NIOS'а
|
|
|
|
|
Nov 26 2013, 08:15
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(Golikov A. @ Nov 26 2013, 10:07)  простите, а что такое USB Cypress? Имеется ввиду FX2/FX3 микроконтроллеры от Cypress.
|
|
|
|
|
Nov 26 2013, 08:50
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(vlad_new @ Nov 26 2013, 10:29)  Получается что делаем что то типа цыфрового осциллографа. Ну тогда и лезим в него. Видим, что по мимо арма там не слабая альтера стоит. Китайцы за лишний чип удавятся. Значит без прогаммируемой матрицы никуда, даже на частотах в 60 мгц. Хотя китайцы и за хороший арм удавятся, так что если по usb протянет, то дма может спасти. Это надо спросить у тех, кто с дма работал. Что то типа генератора сигнала. Обработка сигнала не нужна, только тупое произведение на пинах... Так вот и есть надежда найти микроконтроллер, чтобы обойтись с MCU + SDRAM вместо MCU + FPGA + SDRAM.
|
|
|
|
|
Nov 26 2013, 09:22
|

Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189

|
Цитата(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. Мне кажется этот вариант был несправедливо проигнорирован.
|
|
|
|
|
Nov 26 2013, 09:31
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(winipuh @ Nov 26 2013, 11:22)  Кстати тут уже предлагали LPC43xx. Принцип такой же - cm0 пинами дрыгает, cm4 - в буфер подкидывает + USB/LAN. Мне кажется этот вариант был несправедливо проигнорирован.  Да нет, не проигнорирован. Правду говоря, то всё и началось от того, что увидел LPC4370. Но основной вопрос - успеет ли микроконтроллер (LPC43xx или какой нибудь другой) дрыгать пинами на такой частоте так и остается не отвеченным...
|
|
|
|
|
Nov 26 2013, 10:08
|

Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189

|
Цитата(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
|
|
|
|
|
Nov 26 2013, 11:14
|

Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189

|
Так или иначе, а между перед ЦАП-ом нужно FIFO, данные из которого читаются по внешнему клоку (от ЦАП-а) строго каждые 12.5 ns, а пишутся более-менее регулярно burst-ами. Полагаю на МК такое хрен сделаешь. Даже если прерываниями дергать DMA чтобы он записывал в GPIO OUT - сэмплы все равно будут выставляться с джиттером не менее 20-30 ns из-за коллизий на внутренней шине данных. На PRUSS кстати тоже видимо не получится (по той же причине — двухпортовой памяти там кажется нет). Так что можно не парится и сразу переходить к варианту "Б" - на FPGA. Тем более, что напр. у Spartan-6 SDRAM-контроллер уже есть встроенный.
xlx_s6_lx9_microboard_pb040811.pdf ( 614.76 килобайт )
Кол-во скачиваний: 171  А что это за opensource-проект будет?
|
|
|
|
|
Nov 26 2013, 12:26
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-12-09
Из: Lithuania
Пользователь №: 54 191

|
Цитата(winipuh @ Nov 26 2013, 13:14)  Полагаю на МК такое хрен сделаешь. Даже если прерываниями дергать DMA чтобы он записывал в GPIO OUT - сэмплы все равно будут выставляться с джиттером не менее 20-30 ns из-за коллизий на внутренней шине данных. На PRUSS кстати тоже видимо не получится (по той же причине — двухпортовой памяти там кажется нет). Ну вот, это я и хотел знать. Цитата Так что можно не парится и сразу переходить к варианту "Б" - на FPGA. Скорее - вариант "Б" это ARM, так что оставляемся на варианте "А" - FPGA. Цитата А что это за opensource-проект будет?  Генератор радио сигнала на этой платформе: http://myriadrf.org/myria-rf-board-1/
|
|
|
|
|
Nov 27 2013, 03:10
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(microchaos @ Nov 26 2013, 13:52)  Здесь все проще - закачал данные в SDRAM один раз, а потом те же самые данные циклически передаешь в ЦАП. Если вам не нужно в реальном времени качать данные откуда-то, а можно проигрывать заранее записанные данные (из ОЗУ), то можно сделать дёшево и сердито: CY7C68013A+какая-нить подходящая микросхема памяти с пакетным обращением (или микросхема FIFO-памяти). На x51-ядре CY7C68013A эмулируем старт пакета (управляющие сигналы), далее через GPIF наполняем ОЗУ. Проигрывание: опять же - формируем сигналы для старта пакета на x51. Наверное потребуется добавить немножко логики. Будет огромный запас по частоте и никаких джиттеров. Можно ещё попробовать использовать ИС FIFO (не силён в них) вместо ИС RAM. Ещё вариант: просто CY7C68013A + мультиплексор на её параллельные выходы. Их там 16, а макс. частота CY7C68013A до 48МГц. Так что может удастся обойтись даже без внешней ОЗУ
|
|
|
|
|
Nov 27 2013, 06:09
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(sonycman @ Nov 27 2013, 10:37)  И каким образом 48 мегагерцовый чип будет выставлять данные на скорости 80 МГц? Лень открывать даташит, но если его можно завести на 40МГц, то мультиплексор на 16-битной шине творит чудеса  Цитата(Golikov A. @ Nov 27 2013, 11:02)  не только 48 МГц, но еще и шина 8 бит. правильно будет А вы моё письмо внимательнее прочитайте. Там шина 16бит Цитата(Golikov A. @ Nov 27 2013, 11:02)  Я так понимаю основная надежда это на ОЗУ (наверное внешние, потому что внутреннего 4 кБ), да еще такое которое само сможет на АЦП данные выдавать, ну тогда можно и другой любой чип брать... Ещё раз - прочитайте письмо прежде чем отвечать. Выдавать такты на ОЗУ сможет внешний генератор+небольшая обвязка из логики. А ядра x51 должно хватить для формирования сигналов управления этим хозяйством (разрешения/чтения/записи).
|
|
|
|
|
Nov 27 2013, 06:42
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(jcxz @ Nov 27 2013, 10:09)  Лень открывать даташит, но если его можно завести на 40МГц, то мультиплексор на 16-битной шине творит чудеса  может если не ленится, и почитать Цитата(jcxz @ Nov 27 2013, 10:09)  А вы моё письмо внимательнее прочитайте. Там шина 16бит то можно увидеть что шина 8 бит, хотя вы не привели конкретного контроллера, может есть еще какие -то Цитата(jcxz @ Nov 27 2013, 10:09)  Ещё раз - прочитайте письмо прежде чем отвечать. Выдавать такты на ОЗУ сможет внешний генератор+небольшая обвязка из логики. А ядра x51 должно хватить для формирования сигналов управления этим хозяйством (разрешения/чтения/записи). если есть ОЗУ которое при помощи внешней логики генерирует посылку данных на АЦП, а также рефрешиться что надо в случае современных озу, и прочее, то можно поставить любой контроллер.
|
|
|
|
|
Nov 27 2013, 07:29
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(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 удобнее.  Зачем рефреш? Чем SRAM не подходит? Про объём топикстартер ничего не писал. Да и для DRAM рефреш я думаю нужен только во время простоя. Когда идёт чтение в ЦАП - это и есть рефреш.
|
|
|
|
|
Nov 27 2013, 13:41
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(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 такой поток тоже не пройдет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|