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