|
Имитация работы АЦП, контроллер вместо АЦП |
|
|
|
Sep 21 2010, 14:58
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Привет всем! Суть проблемы лежит в http://electronix.ru/forum/index.php?showt...mp;#entry813362 Посоветуйте контроллер для реализации. Дело в том, что нужно отправлять в главный процессор в реальном времени выборки синусоидального сигнала (предположительно по SPI). Сначала хотел на винде это сделать, но она не реалтайм... такчто частота дискретизации сигнала может иметь случайный большой джиттер.... Вобщем сейчас планирую так: относительно простой микроконтроллер заполняет программно циклически массив (синусоидальный сигнал) и отправляет выборки одну за другой порт SPI, через равные промежутки времени (т.е. интервал дискретизации). Так вот возникают следующие сложности: 1)частота дискретизации такого генератора должна быть 100кГц максимум, т.е. числа должны выдаваться по SPI строго раз в 0,00001 сек. (если проц не потянет можно и меньше) 2) получается контроллер должен посчитать синус и выдать 16-битный ответ за 0,00001сек и выдать его в порт SPI и так циклически.... 3) требования к контроллеру: максимально дешёвый, в DIP-корпусе(по возможности), и немаловажное требование - максимум инфы по работе с контроллером (типа AVR кокой-нить). Для чего всё это нужно написано по ссылке выше. Главный процессор - числомолотилка, которая будет складывать числа от "генератора" в циклический буфер (в SD-RAM) и производить ЦОС-алгоритмы над сигналом (ему передаёт мой контроллер-генератор выборки синуса по SPI)
Сообщение отредактировал TigerSHARC - Sep 21 2010, 15:06
|
|
|
|
|
Sep 21 2010, 19:19
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Alexashka @ Sep 21 2010, 20:50)  Идея хорошая, но имхо можно упростить себе задачу. Если уж Вы отказываетесь от использования непосредственно АЦП (с его особенностями и возможными +/-), и согласны работать с цифровым потоком, то поток ведь этот придется в АРМе сохранять в какойто буфер. И ЦОС уже будет работать с этим буфером. Логично? Ну так запишите в этот буфер то что Вам надо- пойдет любой интерфейс, который уже есть а АРМе. А судя по всему там их навалом  Наверняка есть UART и USB. И в проце наверняка предполагается использовать ОСРВ. Так добавьте ей еще один процесс, который будет по команде с компа подгружать в буфер новые данные! с компа не годится же... можно не успеть (на компе винда стоит).... я и планировал поток данных отправлять с какого нибудь простенького контроллера, а принимать на мощном проце (тот же ARM), естесственно помещать данные в кольцевой буфер в SDRAM на плате главного проца (тот же ARM) и уже работать с ЦОС... выбираю теперь контроллер... P.S. Работа имеет сугубо макетно-учебный характер... но интересно же!
|
|
|
|
|
Sep 21 2010, 22:12
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(TigerSHARC @ Sep 21 2010, 23:19)  с компа не годится же... можно не успеть (на компе винда стоит).... я и планировал поток данных отправлять с какого нибудь простенького контроллера, а принимать на мощном проце (тот же ARM), естесственно помещать данные в кольцевой буфер в SDRAM на плате главного проца (тот же ARM) и уже работать с ЦОС... И чем же промежуточный контроллер компенсирует задержку, которая может произойти при передачи потока с Писи? Ничем, если он не обладает достаточным буфером. Но этот буфер точно также можно реализовать в АРМе, т.е высылать данные с РС заблаговременно, сохранять в доп.буфере АРМа и когда ему понадобятся - подсовывать, как будто тока что полученные.  Тем более склоняет к реализации буфера в АРМе то, что 40кБ уже приличный объем, кот.предпочтительно разместить во внешней ОЗУ (кот.уже имеется). Вот и заполняйте его пакетами по USB, а программе -обработчику потока скармливайте по-байтно, как будто из АЦП
|
|
|
|
|
Sep 22 2010, 14:12
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(rezident @ Sep 21 2010, 23:50)  Непонятно. Если задача стоит только в отработке алгоритма(ов) ЦОС, то для этого не нужен ни АЦП, ни контроллер. Алгоритмы вполне успешно и главное удобно отлаживаются на компьютере. Если же задача в исследовании какого-то "железа", то используйте нормальный генератор сигналов с качественной синусоидой и не занимайтесь "вырезанием гландов через задний проход". генератор сигналов это хорошо, только придётся опять заморачиваться с АЦП.... Цитата(Клим @ Sep 22 2010, 12:41)  Какой частоты синус ? Используйте любой DDS-генератор, например http://www.remexpert.com/ipb/index.php?aut...mp;showentry=96 классное решение, но опять же в цифру переводить надо как-то, а мне нужно 16 бит на выборку... (ну 14 минимум)... и несовсем понятно качестов выдаваемого сигнала на таких генераторах. А вот просто если в цифровом виде выдавать ранее записаный сигнал, то можно и идеальный синус сгенерировать (предварительно в Matlab например) И потом, если надо мне не чистый синус а отсчёты какого-то сигнала сложного передавать. Тогда мне думается что интереснее будет просто программатором записать эти отсчёты массивом в ПЗУ и оттуда циклически бесконечно их выдавать по SPI в хост... но по моим требованиям получается что память данных должна быть несколько десятков килобайт (это только для отсчётов сигнала). подскажите такое решение, чтобы простое было и дешёвое... может AVR с внешней ПЗУ...???
Сообщение отредактировал TigerSHARC - Sep 22 2010, 18:36
|
|
|
|
|
Sep 23 2010, 10:38
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(TigerSHARC @ Sep 22 2010, 17:12)  классное решение, но опять же в цифру переводить надо как-то, а мне нужно 16 бит на выборку... (ну 14 минимум)... Ну так а кто мешает чуть переделать программу и выдавать цифру по SPI ? Кстати, так и не услышал, синусоида идет определенной частоты или необходима переменная. Частота дискретизации, как я понял -100кгц, а какая (какие) частоты синусоидального сигнала нужны ?
|
|
|
|
|
Sep 23 2010, 14:17
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Клим @ Sep 23 2010, 14:38)  Ну так а кто мешает чуть переделать программу и выдавать цифру по SPI ? Кстати, так и не услышал, синусоида идет определенной частоты или необходима переменная. Частота дискретизации, как я понял -100кгц, а какая (какие) частоты синусоидального сигнала нужны ? частоты нужны всего лишь от 2 до 100 гц. (неплохо было бы иметь возможность зашумлять сигнал гармониками) Цитата(khach @ Sep 23 2010, 14:52)  Делали одни раз такое- нужен был имитатор АЦП для проверки USB канала до компа и проверки потерь пакетов и сбоя фазы оцифрованного сигнала. Эммулируемый АЦП был с SPI интерфейсом. Взяли какую-то демоборду с АРМом (тогда они только появились), загнали во флеш таблицы синусов и написали простенькую программку. Отработав свое, симулятор был успешно разобран. А, была еще версия с внешним флешем, когда отлаживали 24 битный поток, потому что таблица синусов во внутреннюю флешь невлезала. вот вот ! То то и надо мне. Вот только мне нужно 16 битные данные отправлять. Допустим записали таблицу отсчётов в ПЗУ (отсчёты 16 битные) и выдаём их с определённым временным интервалом по очереди и покругу. Справиться ли с этим AVR??? (пусть это и выглядит диковато) .... думаю что внутри самого ARM'а это будет сделать проще... НО! если потом реальную АЦПшку присобачить первый вариант будет практичнее, так как всё для приёма данных уже готово... АЦПшка ведь тоже по SPI может общаться.
|
|
|
|
|
Sep 23 2010, 17:47
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(YIG @ Sep 23 2010, 19:25)  Задача элементарно решается одним крутым Spartanом или провинутым Virtexом, хошь по параллельному, хошь по последовательному порту! Только и надо, что соответствующий интерфейс поддержать и нужный FIFO организовать! Никакие AVRы и ARMы даже рядом не стоят. Vivat FPGA!!!  А это идея! Думаю Spartan 3 подойдёт. Цитата(khach @ Sep 23 2010, 19:25)  Ну так посчитайте. Надо понять размер таблицы в памяти и чисто тактов между посылками по SPI. Хватает ли времени на матетматику и интерполяцию или нет. Если будете интерполировать а потом гонять фурье или проверять интермодуляции- то сначала проверьте алгоритм интерполяции в матлабе, а то можно такого потом намерять... А полная таблица синусов 16 бит- это как минимум 128 К. Т.е разве что на атмеге 128 делать, да и то четвертушку синуса только хранить во флеше. Тактовая то SPI какая? Кто мастер на шине? Нет, с интерполяцией связыватсья не буду. Это уже всё не то. Алгоритм должен принимать честный 16-битный синус.
|
|
|
|
|
Sep 23 2010, 19:33
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(TigerSHARC @ Sep 23 2010, 18:17)  .... думаю что внутри самого ARM'а это будет сделать проще... НО! если потом реальную АЦПшку присобачить первый вариант будет практичнее, так как всё для приёма данных уже готово... АЦПшка ведь тоже по SPI может общаться. Зря вы думаете что в ARMах нет шины SPI, более того она в них ничем не отлается от SPI в AVR, разве что настроек побольше  я уж не говорю о том что тактовая частота поболе, а соответствующие задержки-поменее. И флешь в ARMe потолще будет, можно легко в мегабайт найти, туда что годно войдет, даже сигнал произволльной формы
|
|
|
|
|
Sep 24 2010, 04:22
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Alexashka @ Sep 23 2010, 23:33)  Зря вы думаете что в ARMах нет шины SPI, более того она в них ничем не отлается от SPI в AVR, разве что настроек побольше  я уж не говорю о том что тактовая частота поболе, а соответствующие задержки-поменее. И флешь в ARMe потолще будет, можно легко в мегабайт найти, туда что годно войдет, даже сигнал произволльной формы Разве я говорил что в ARM нету SPI? Просто делать генератор на ARM а потом общаться c другим ARM (вы это имели ввиду?) дороговато выходит... Идея просто заполнять массив в самомо арме без всякого SPI - хороша (т.е. ввсё в одном процессоре) Идея о том что более слабый(и дешёвый) контроллер будет посылать по SPI выборки в ARM мне нравиться больше, так как потом вместо более дешёвого контроллера можно зацепить АЦП и передовать уже реальные выборки. С чего вы взяли что я решил буд-то в армах нету SPI?
|
|
|
|
|
Sep 24 2010, 10:38
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(TigerSHARC @ Sep 24 2010, 08:22)  Разве я говорил что в ARM нету SPI? Дословно -нет  но Вы так упорно твердите AVR AVR, что у меня сложилось именно такое мнение)) Извените если не правильно Вас понял Цитата Просто делать генератор на ARM а потом общаться c другим ARM (вы это имели ввиду?) дороговато выходит... Да я это имел ввиду. Ну почемуже, вот например (разброс цен очень большой, но тенденция думаю Вам будет видна) Прайс на Atmega128: http://www.deltel.ru/shop/products/search?...p;search_type=1и прайс на STM32F100RBT6B (по количеству памяти такаяже) http://www.deltel.ru/shop/products/search?...p;search_type=132 бита вытесняют 8битники практически во всех областях, это де-факто, хотя многие еще в это не верят
|
|
|
|
|
Sep 24 2010, 15:37
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(TigerSHARC @ Sep 24 2010, 18:47)  я понимаю, про то что голые процы по цене одинаковы... а отладочная плата, а средства отладки... Тоже не проблема, покупаете универсальную макетку в ЧИП-ДИПЕ, распаиваете LQFP процессора, неск.кондеров, разъем для отладки и все. Можно и утюгом сделать при желании. STM32 сам хочу попробовать  , незнаю, вроде у него тока JTAG, а в SAM7 например отладку можно вести через UART или USB интерфейс. Бесплатные средства тоже есть -тотже GCC+Eclips
|
|
|
|
|
Sep 24 2010, 18:08
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(YIG @ Sep 24 2010, 21:54)  Однако, как всё усложнили!.. ARM для генерации простейших 16-разрядных кодов!  Из пушки по воробьям:  ПЛИ!!!  А Вам не кажется, что для параллельного пОрта всё резко упрощается? Как смотрите на платку PCI со спартанчиком? Ну вы не томите... здесь же не чат. )) Что за плата? мне тоже кажется ARM для такой задачки немного крутоват. Хочеться своять чего-то совсем простое... Опыто вообще говоря мало, и по большому счёту всё это нужно для самообразования...
Сообщение отредактировал TigerSHARC - Sep 24 2010, 18:22
|
|
|
|
|
Sep 25 2010, 05:56
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(YIG @ Sep 24 2010, 22:35)  Да нет, всё много проще и дешевле: сделать такую плату самому на базе имеющейся убитой мультикарты или живой карты с LPT-портом (от прототипа нужна только планка). Вместо DRB-25FB влепить DHR-44F. Если такие платы и есть, то они много дороже обойдутся, да и сроки поставки на подобные вещи велики. Если же Вы хотите что-либо готовое для Вашей задачи - не смею мешать ARM, но это далеко неоптимальное решение! А Спартан для генерации 16битных кодов это вообще ядреная бомба против комара Ну, кто на чем привык делать, тот то и считает оптимальным... 2 TigerSHARC: может АРМ и через чур для этого, но почему бы и нет? запас ведь не мешает, зато можно какуюто математику прикрутить, да еще и освоить новый класс контроллеров!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|