реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Имитация работы АЦП, контроллер вместо АЦП
TigerSHARC
сообщение Sep 21 2010, 14:58
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 21 2010, 15:14
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(TigerSHARC @ Sep 21 2010, 18:58) *
2) получается контроллер должен посчитать синус и выдать 16-битный ответ за 0,00001сек и выдать его в порт SPI и так циклически....
3) требования к контроллеру: максимально дешёвый, в DIP-корпусе(по возможности), и немаловажное требование - максимум инфы по работе с контроллером (типа AVR кокой-нить).

2 - Это Вы сами на большом компьютере вычислите таблицу и засунете в контроллер через последовательный порт или заранее через программатор.
3 - Смотрите цену программатора в первую очередь.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Sep 21 2010, 15:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



у меня есть AutoProg.

мне же нужно непрерывно выдавать синусоиду. мне нужно записать как минимум 10 периодов синусоиды с частотой в нужном интервале (эти 10 периодов будут как бы базовые и повторятся при бесконечном выводе в порт SPI)

Данные 16 битные.
тогда при частоте дискретизации 100 кГц я имею 320 кБит таблицу, т.е. для хранения только таблицы мне нужно 40кб памяти.

может посоветуете контроллер?

Сообщение отредактировал TigerSHARC - Sep 21 2010, 16:00
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Sep 21 2010, 16:50
Сообщение #4


Практикующий маг
******

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



Идея хорошая, но имхо можно упростить себе задачу. Если уж Вы отказываетесь от использования непосредственно АЦП (с его особенностями и возможными +/-), и согласны работать с цифровым потоком, то поток ведь этот придется в АРМе сохранять в какойто буфер. И ЦОС уже будет работать с этим буфером. Логично? Ну так запишите в этот буфер то что Вам надо- пойдет любой интерфейс, который уже есть а АРМе. А судя по всему там их навалом smile.gif Наверняка есть UART и USB. И в проце наверняка предполагается использовать ОСРВ. Так добавьте ей еще один процесс, который будет по команде с компа подгружать в буфер новые данные!
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Sep 21 2010, 19:19
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



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


с компа не годится же... можно не успеть (на компе винда стоит).... я и планировал поток данных отправлять с какого нибудь простенького контроллера, а принимать на мощном проце (тот же ARM), естесственно помещать данные в кольцевой буфер в SDRAM на плате главного проца (тот же ARM) и уже работать с ЦОС...

выбираю теперь контроллер...

P.S. Работа имеет сугубо макетно-учебный характер... но интересно же!
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 21 2010, 19:50
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Непонятно. Если задача стоит только в отработке алгоритма(ов) ЦОС, то для этого не нужен ни АЦП, ни контроллер. Алгоритмы вполне успешно и главное удобно отлаживаются на компьютере.
Если же задача в исследовании какого-то "железа", то используйте нормальный генератор сигналов с качественной синусоидой и не занимайтесь "вырезанием гландов через задний проход".
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Sep 21 2010, 22:12
Сообщение #7


Практикующий маг
******

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



Цитата(TigerSHARC @ Sep 21 2010, 23:19) *
с компа не годится же... можно не успеть (на компе винда стоит).... я и планировал поток данных отправлять с какого нибудь простенького контроллера, а принимать на мощном проце (тот же ARM), естесственно помещать данные в кольцевой буфер в SDRAM на плате главного проца (тот же ARM) и уже работать с ЦОС...

И чем же промежуточный контроллер компенсирует задержку, которая может произойти при передачи потока с Писи? Ничем, если он не обладает достаточным буфером. Но этот буфер точно также можно реализовать в АРМе, т.е высылать данные с РС заблаговременно, сохранять в доп.буфере АРМа и когда ему понадобятся - подсовывать, как будто тока что полученные. smile.gif
Тем более склоняет к реализации буфера в АРМе то, что 40кБ уже приличный объем, кот.предпочтительно разместить во внешней ОЗУ (кот.уже имеется). Вот и заполняйте его пакетами по USB, а программе -обработчику потока скармливайте по-байтно, как будто из АЦП
Go to the top of the page
 
+Quote Post
kamil_yaminov
сообщение Sep 22 2010, 00:48
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 395
Регистрация: 15-02-08
Из: Новосибирск
Пользователь №: 35 064



40кБ может и не надо, если использовать линейную интерполяцию
Go to the top of the page
 
+Quote Post
Клим
сообщение Sep 22 2010, 08:41
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Какой частоты синус ?
Используйте любой DDS-генератор, например http://www.remexpert.com/ipb/index.php?aut...mp;showentry=96
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Sep 22 2010, 14:12
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 23 2010, 09:40
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
подскажите такое решение, чтобы простое было и дешёвое
Уже подсказывали - сделать все ВНУТРИ главного ЦПУ. Попытка приделать AVR для снабжения ARM'а данными выглядит слегка диковато 07.gif
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 23 2010, 09:53
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(TigerSHARC @ Sep 21 2010, 19:35) *
у меня есть AutoProg.

мне же нужно непрерывно выдавать синусоиду.
Данные 16 битные.
тогда при частоте дискретизации 100 кГц
может посоветуете контроллер?

Вообще то, если надо генерировать синусоиду, то в таблицу записывается только одна четвертинка. И хранится отдельно признак знака/квадранта... А если процессор более шустрый, то в таблицу пишется не сам синус, а его разность относительно линейного сигнала - "горбушка"...
Так что памяти нужно не так уж много... А примеров - полно. Посмотрите, производители микроконтроллеров предлагают примеры синусоид или DTMF генераторов....


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Клим
сообщение Sep 23 2010, 10:38
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(TigerSHARC @ Sep 22 2010, 17:12) *
классное решение, но опять же в цифру переводить надо как-то, а мне нужно 16 бит на выборку... (ну 14 минимум)...

Ну так а кто мешает чуть переделать программу и выдавать цифру по SPI ?
Кстати, так и не услышал, синусоида идет определенной частоты или необходима переменная. Частота дискретизации, как я понял -100кгц, а какая (какие) частоты синусоидального сигнала нужны ?
Go to the top of the page
 
+Quote Post
khach
сообщение Sep 23 2010, 10:52
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Делали одни раз такое- нужен был имитатор АЦП для проверки USB канала до компа и проверки потерь пакетов и сбоя фазы оцифрованного сигнала. Эммулируемый АЦП был с SPI интерфейсом. Взяли какую-то демоборду с АРМом (тогда они только появились), загнали во флеш таблицы синусов и написали простенькую программку. Отработав свое, симулятор был успешно разобран. А, была еще версия с внешним флешем, когда отлаживали 24 битный поток, потому что таблица синусов во внутреннюю флешь невлезала.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Sep 23 2010, 14:17
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 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 может общаться.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.02793 секунд с 7
ELECTRONIX ©2004-2016