Перейти к содержанию
    

AlexeyT

Участник
  • Постов

    47
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о AlexeyT

  • Звание
    Участник
    Участник
  1. Да вот не выходит. На СВЧ у меня была несущая 1.5 ГГц и полоса полезного сигнала в 20 МГц. А тут надо или человеческую речь определять (от 200 до 3000 Гц), или хлопок. Нет ярко выраженной несущей, энергия спектра размазана, смущает это меня, страдаю от непривычки...
  2. Может ли кто подсказать литературу по цифровому beamforming акустических сигналов? Задача минимум - с помощью двух микрофонов определить направление на звук. Задача максимум - с помощью линейки микрофонов определить направление и с помощью фазовых методов обеспечить направленную ДН. Делал эту задачу на СВЧ, но там высокая несущая и соответственно узкая полоса. В акустике - спектр человеческой речи размазан, непонятно какую несущую ставить. В гуде искал, найденное не устраивает( Помогите, если есть специалисты
  3. Ну у Уоррена есть примеры сверхбыстрого вычисления sqrt для float. А на сколько быстрее? Сам пока оценить не могу, нет ни компилятора, чтобы ассемблерный листинг посмотреть, ни само собой отладочной платы. Может кто-нибудь дать оценку?
  4. Всем доброго дня! Есть вопрос: какие операции с плавающей точкой выполняются быстрее - умножение или деление? То есть, как эффективней считать нормировку на ядре Arm: double a; double b, c, d;//значения присваиваются в ходе выполнения программы a = sqrt(b*b + c*c + d*d); b /= a; c /= a; d /= a; Или: double a; double b, c, d;//значения присваиваются в ходе выполнения программы a = 1./sqrt(b*b + c*c + d*d); b *= a; c *= a; d *= a; Ядрa: Cortex-M1 и Cortex-M4F (что не особо важно, т.к. расчеты должны быть в формате double и плавающая запятая в Cortex-M4F не поможет) Спасибо
  5. Вот страница 301 (описание с сайта Миландра) и тут четко сказано, чему равна предельная частота UART. Можно ткнуть меня носом в место, где написано про "UART до 9 Мбит/сек"?
  6. Мы используем Миландровский 1986ВЕ1Т с тактовой 144 МГц. На такой частоте по Вашей оценке можно реализовать программный контроллер RS-485 со скоростью 2 Мбит/с?
  7. Спасибо за ответы, только у Миландра - это приемопередатчики, а нужен бы специализированный контроллер. Почему не можем использовать UART - потому что скорости не хватает - 921600 бод, а нам надо около 2 Мбит (RS-485 с такими скоростями позволяет работать)
  8. Всем привет! Нет ли у кого-нибудь информации по отечественным ARM-процесорам с встроенным контроллером RS-485? Может быть, кто о разработках таких знает? Может отдельная отечественная микросхема существует? Сразу отвечаю, что Гугл не помог
  9. Никакого секрета. Используем свой камень 1914ВА018 (http://mvc-nn.ru/продукция/микропроцессоры-и-микроконтроллеры/), очень стойкий ко всякой гадости (проверено испытаниями). Еще раз спасибо всем за ответы
  10. Есть 4 кБ ПЗУ с загрузчиком, зашитым на заводе (намертво, не Flash). Пользователю оно доступно только на чтение. Процессор стартует из него. Для пользователя есть 128 кБ ОЗУ под инструкции и 64 кБ ОЗУ под данные. Пользовательская программа может появиться в ОЗУ двумя способами: через JTAG или в результате работы заводского загрузчика. После чего управление передается на нее способом, описанным в первом посте, т.е. без сброса. Именно потому, что раньше проблем не было, ожидал - это способ, используемый заводским загрузчиком. "Магические процедуры" - типа __main, которая вызывается в векторе RESET. Собственно, и вопрос - в чем отличие? NVIC_SystemReset() - это таки "сброс" или "Передача управления в начало программы"? Периферия - блоки на шинах AHB/APB? Или все-таки регистры SCB? Мысль с WDT проработаю, спасибо.
  11. Уважаемые коллеги, помогите разобраться: Есть процессор на базе Cortex-M4, с FPU. У него есть встроенный загрузчик, но нет ПЗУ - только ОЗУ. Есть подключенные к нему внешняя флэш-память и программатор JTAG. Есть тестовая прошивка - настройка тактовой частоты, СОМ-порта и пока всё, дальше бесконечный цикл while(1) {}. Раньше было больше, но при уменьшении до нынешнего варианта косяк не исчез. Принципиальный момент - NVIC в тестовой прошивке не настраивается, обработчики исключений не переопределены. Последовательность работы: При подаче питания процессор начинает исполнять код заводского загрузчика, анализирует линии задания режима загрузки и переходит в режим исполнения программы из внешней флэш-памяти. Она успешно исполняется, используя прерывания - одно от периферийного блока СнК (контроллер МКИО) и одно внешнее. После чего в какой-то момент надо передать управление другой программе. Имитирую передачу управления. Для этого я выполняю останов (команда "h") процессора через J-Link Commander. А вот дальше есть два варианта развития событий: 1) не_выполняя_сброса, заливаю в ОЗУ инструкций образ тестовой прошивки, пишу во VTOR новый адрес таблицы, указываю новую вершину стека (первое слово прошивки), пишу в PC адрес вектора сброса (второе слово прошивки) и запускаю (команда "g"). После чего снова останавливаю ядро и вижу, что упал в исключение NMI. 2) выполняю сброс (команда "R"), и выполняю те же действия, что и ранее, над той же тестовой прошивкой. После чего останавливаю ядро и вижу, что что ядро спокойно остановлено (NoException). В чем может быть принципиальное отличие этих режимов? Какие регистры SCB нужно сбросить в начале п.1, чтобы состояние стало близким к идеальному, т.е. после Reset? Чем сброс через JTAG отличается от сброса через NVIC_SystemReset() с точки зрения системных процедур, выполняемых перед main?
  12. Всем спасибо! Пойдем чуть дальше - действительно есть возможность доработать аналоговую часть, перенеся сигнал с полосой в 20 МГц на несущую в 15 МГц, например. Дальше - 14-битный АЦП с тактовой 50-60 МГц. При таком раскладе можно быть уверенным, что TigerSharck с тактовой 450 сдюжит?
  13. Есть ламерский вопрос: Может ли сигнальный процессор TigerSharck справиться с такой задачей: У нас с 14-битного АЦП с частотой 200 МГц поступают оцифрованные отсчеты сигнала (несущая 70 МГц, полоса - 20 МГц). Задача - сбросить спектр сигнала в квадратуру, т.е. разделить его на две ветки, умножить на sin(2*pi*70e+6*t) и cos(2*pi*70e+6*t) соответственно, пропустить результаты умножения через цифровые ФНЧ полосой 10 МГц, получить I/Q компоненты, снизить частоту дискретизации. Дальше с полученными I/Q компонентами делается стандартная обработка. Сейчас мы эту обработку делаем на Virtex5, есть вопрос, может ли с этим справиться TigerSharck с тактовой 450 МГц (конкретно 1967ВЦ2Ф http://milandr.ru/index.php?mact=Products,...t01returnid=68) Понимаю, что вопрос ламерский и заранее благодарю всех желающих посоветовать пользоваться поиском форума, гуглом, чтением книг))) С подобными процессорами дела никогда не имели, а принципиальный ответ заказчику надо дать быстро. Спасибо
  14. Есть ламерский вопрос: Может ли сигнальный процессор TigerSharck справиться с такой задачей: У нас с 14-битного АЦП с частотой 200 МГц поступают оцифрованные отсчеты сигнала (несущая 70 МГц, полоса - 20 МГц). Задача - сбросить спектр сигнала в квадратуру, т.е. разделить его на две ветки, умножить на sin(2*pi*70e+6*t) и cos(2*pi*70e+6*t) соответственно, пропустить результаты умножения через цифровые ФНЧ полосой 10 МГц, получить I/Q компоненты, снизить частоту дискретизации. Дальше с полученными I/Q компонентами делается стандартная обработка. Сейчас мы эту обработку делаем на Virtex5, есть вопрос, может ли с этим справиться TigerSharck с тактовой 450 МГц (конкретно 1967ВЦ2Ф http://milandr.ru/index.php?mact=Products,...t01returnid=68) Понимаю, что вопрос ламерский и заранее благодарю всех желающих посоветовать пользоваться поиском форума, гуглом, чтением книг))) С подобными процессорами дела никогда не имели, а принципиальный ответ заказчику надо дать быстро. Спасибо Update: перенес тему в раздел "Вопросы новичка"
  15. Само собой, указателю tst присваивается адрес массива test_buff[2]. При этом значение int-переменной я получаю, обратившись к *tst. В каком именно месте происходит зависание, сказать не могу, процессор - 1986ВЕ1Т, там с дебагом туго. Вот полный исходник тестового кода, на котором все виснет: unsigned char test_buff[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; unsigned char *tst_point = &test_buff[0]; unsigned int *tst; unsigned int temp; tst = (unsigned int *)(tst_point + 2*sizeof(unsigned char)); //должны получить 0x06050403 = 100992003 temp = *tst; printf("%d", temp);
×
×
  • Создать...