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

sansh

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

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

  • Посещение

Репутация

0 Обычный

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

  • День рождения 09.04.1976

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. К сожалению до первоисточника не добрался. Попробовал в лоб посчитать в MatLab. Получил комплексные числа. Потом подумал... :) Четверть периода - это pi/2? т.е. ~1.57 радиан. Таким образом, под корнем имеем отрицательные числа. Да и сигнал на синус не похож абсолютно, втыкается под прямым углом в ось абсцисс, по науке д.б. 45 градусов.
  2. Дык производная ж - тот самый синус: sin'(x) = cos(x) = sin(x+pi/2). И про интегрирование не понял, как его делать? Каждый новый отсчет в копилку класть? Тогда быстро за пару десятков периодов набежит ошибка.
  3. А что, линейная интерполяция... не так уж и плохо... А хранить можно только pi/2, усложнив адресацию и добавив (+/-). Кстати, где-то видел науку о кусочно-линейной интерполяции синуса, причем с нелинейным разбиением по времени (в зависимости от скорости нарастания). Приводило это все к радикальному уменьшению размера памяти выборок. 5e-4% - это не так и много, около -66dB, а как получено это значение (среднее квадратичное отклонение или...)? Посчитать бы еще Кг.
  4. А как насчет конвейера? Хотя бы на два такта? Можно даже будет успеть подстегнуть два последовательных инкремента одной ячейки (вычислять сразу +1 и +2, если будет двойное обращение, писать не +1, а +2). Ведь по смыслу важно успеть подсчитать, а вычитать результат в конце... Или я не так понял? Алгоритм тогда примерно такой... 1. Читаем mem(RdAddr(i)) 2. Читаем mem(RdAddr(i+1)) Вычисляем mem(RdAddr(i))+1 и ...+2 Проверяем RdAddr(i) = RdAddr(i+1) Пишем mem(RdAddr(i)) и т.д. по кругу: 3. Читаем mem(RdAddr(i+2)) - даже если i=i+1=i+2, RdAddr(i) уже содержит правильное значение (+2) Вычисляем mem(RdAddr(i+1))+1 и ...+2 Проверяем RdAddr(i+1) = RdAddr(i+2) Пишем mem(RdAddr(i+1)) Ни у кого не возникло подозрения, что это "вечный" двигатель... А? :)
  5. Это же чистая табличная реализация, с нее-то и начинали. А в Spartan'е, между прочим, память свободная не завалялась? А то можно взять и просто сделать аккумулятор фазы бита на 32 и иметь ~0,01Гц разешение (см. теорию DDS лучше по datasheet на AD9854) . Хотя -90dB получишь где-то в районе 32к-точечной таблицы...
×
×
  • Создать...