Форум Радиолюбителей

Weaver (математика)

33866 просмотров, 25 ответов — стр. 2 из 2

GenaSPB
Сообщений: 74
24 сентября 2020 г. в 03:17#16
Да понятно. Я про fpga.
GenaSPB
Сообщений: 74
24 сентября 2020 г. в 04:14#17
Кстати, маскиратор с полностью цифровой обработкой тоже не должен свистеть.
Игорь 2
Сообщений: 21288
24 сентября 2020 г. в 05:11#18
Кстати, маскиратор с полностью цифровой обработкой тоже не должен свистеть.

У меня он был полностью аналоговый. Сто лет назад дело было...
ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 05:39#19
ЛАБА
Смеситель

freq = 400;//сигнал герц
freqOpora = 2000;// несушка

Заполнение буферов выглядит так:

float32_t amp = 600;//амплитуда, макс 2048 для 12бит

for (int i = 0; i < FRAME_SIZE; i++) {
float32_t opora = arm_sin_f32(phaseOpora);
float32_t signal = arm_sin_f32(phase);

pOutDac[dacTxBankNawNumber][i ] = ((uint32_t) (amp + signal*opora * amp));

phase += delta;
if (phase >= pp) phase -= pp;

phaseOpora += deltaOpora;
if (phaseOpora >= pp) phaseOpora -= pp;

opora = arm_sin_f32(phaseOpora);
signal = arm_sin_f32(phase);

pOutDac[dacTxBankNawNumber][i ] |= (((uint32_t) (amp + signal*opora *amp))) << 16;
phase += delta;
if (phase >= pp) phase -= pp;

phaseOpora += deltaOpora;
if (phaseOpora >= pp) phaseOpora -= pp;

}


ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 05:42#20
а вот тоже самое, но для сигнала 645Гц


ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 08:28#21
После запуска FIR фильтра на 3кГц + шум
Получился на выходе цап такой сигнал


ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 09:08#22
Интересный феномен я нашел. Не знаю что это за глюк в математике. Но вот смотрите (вопрос к математикам)

амплитуду умножаю на 10. (все числа float)
float32_t amp = 199*10;
.
.
дальше перемножаю сигналы (они тоже float) и делю на теже 10. цифра от -1 до +1

arrDac[i ] = (signal* opora)/10; //цифра от -1 до +1

дальше формирую амплитуду для цап от 0...4000
умножаю на амплитуду и смещаю на эту же амплитуду, убираю отрицательный значения.

pOutDac[dacTxBankNawNumber][y] = (uint32_t) (amp + firOutDac[i ] * amp);

И получается вот такая красивая картинка....
(все дальше 3кГц это перегруз звуковой платы, в программе работает фир фильтр со срезом 3кГц)


ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 09:10#23
А теперь убираю умножения 10 и деление на 10
и получается вот такая картинка


ra0ahcra0ahc
Сообщений: 4868
3 октября 2020 г. в 09:55#24
ачх FIR


ra0ahcra0ahc
Сообщений: 4868
4 октября 2020 г. в 01:14#25
Нашел причину
Программер фигов. А всего то надо было выспаться.
Смещение амплитуды надо делать константой.

pOutDac[dacTxBankNawNumber][y ] = (uint32_t) (2048 + firOutDac[i-1] * amp);