Игорь 2
Трансиверы, передатчики, РПУ => Software Defined Radio (SDR) => Тема начата: ra0ahc от Сентябрь 23, 2020, 02:55:40 pm
-
База
-
формулы
-
Так это еще у Полякова 35 лет тому назад было расписано. Или я что-то пропустил? :)
-
Может быть. Я за Поляковым не следил.
Просто, вроде все понятно и все очевидно, но вот "так" нашел только это.
-
но вот "так" нашел только это.
Да это бред сивой кобылы. Без фазовращателя не делается. Даже искать не интересно, где там ошибка, формулы тригонометрии очевидны, кто забыл, могу скинуть... lllol
Так это еще у Полякова 35 лет тому назад было расписано.
Не, не путайте - у Полякова НЧ фазовращатель стоит. Без него схема работать не может... 123123 lol22
-
Да это бред сивой кобылы. Без фазовращателя не делается.
Игорь, я вас огорчу. Эти сивые кобылы вполне ничего так себе работают. Как в аналоге так и в цифре. Вот я пару месяцев назад на ADAU1761 делал Уивера (http://dspview.com/viewtopic.php?f=9&t=263) - нет фазовращателей по НЧ. Совсем. И работает зараза.
Не, не путайте - у Полякова НЧ фазовращатель стоит. Без него схема работать не может.
Это в классическом фазовом методе нужен фазовращатель как по ВЧ так и по НЧ. А Уивер - это фазо-фильтровый метод. Тут нужен крутой фильтр, а фазовращатель не нужен
Качайте Полякова http://publ.lib.ru/ARCHIVES/P/POLYAKOV_Vladimir_Timofeevich/Polyakov_V.T._Transivery_pryamogo_preobrazovaniya.(1984).[doc-ocr].zip и читайте 5ю главу с 13й страницы: "5. ФАЗОФИЛЬТРОВЫЙ ТРАНСИВЕР ПРЯМОГО ПРЕОБРАЗОВАНИЯ"
-
где бред ? на первом рисунке уивер классический вроде.
-
в поляковской книжке был.
-
Тут нужен крутой фильтр
Возможно, на фильтры я внимание и не обратил, у меня вся арифметика под смесители написана с отсечкой верхней боковушки - см. картинку.
Гляну на досуге... dontt44 1yep
-
Блин, да там гетеродин в середине частотного диапазона сигнала ставится, вспомнил теперь. id99 id99 id99
Всерьёз почему-то никогда подобное не воспринимал, почему - уже и не вспомню, но, наверное, неспроста.
Везде чисто фазовый метод был, у меня в том же маскираторе куча однополосных формирователей/деформирователей стояла... lol22
-
да потому что так тон по середине стоит не избавиться от него проклятого. Тот вивер с заворотом частотного спектра без переноса.
А этот на любом ультразвуке конфета. как всегда аналог дает идеи а цифра дает возможность реализовать с качеством.
-
там гетеродин в середине частотного диапазона сигнала ставится
Это он в аналоговом Уивере ставится. Потому что фильтр с крутым скатом проще сделать. А в цифре нет таких ограничений и второй гетеродин работает в области ультразвука - за пределами полосы пропускания. Но даже если делать гетеродин в полосе пропускания то в цифре он легко задавливается в ноль гребенкой режекторных IIR фильтров, что собственно я у себя и сделал. Провал в середине речевого спектра на разборчивость не влияет.
-
Провал в середине речевого спектра на разборчивость не влияет.
Во-во-во, вот Вы мне и напомнили, почему я эту идею сразу же отмёл - портить звук я не хотел категорически - у меня же в тракте маскирования оказывалось этих преобразователей боковушек 4 штуки последовательно... 1yep
-
В цифровом тракте этот тон сильно за сотню децибел подавлен. И не режекторами а просто за счет идентичности трактов квадратур. Кстати целочисленка даже было бы лучше.... но теоретически. На практике правучка одинарной точности вполне.
-
В цифровом тракте этот тон сильно за сотню децибел подавлен. И не режекторами а просто за счет идентичности трактов квадратур.
Если первый гетеродин цифровой на фпга то да. А если он аналоговый? Тогда без режекторов никак.
-
Да понятно. Я про fpga.
-
Кстати, маскиратор с полностью цифровой обработкой тоже не должен свистеть.
-
Кстати, маскиратор с полностью цифровой обработкой тоже не должен свистеть.
У меня он был полностью аналоговый. Сто лет назад дело было... cr123
-
ЛАБА
Смеситель
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;
}
-
а вот тоже самое, но для сигнала 645Гц
-
После запуска FIR фильтра на 3кГц + шум
Получился на выходе цап такой сигнал
-
Интересный феномен я нашел. Не знаю что это за глюк в математике. Но вот смотрите (вопрос к математикам)
амплитуду умножаю на 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кГц)
-
А теперь убираю умножения 10 и деление на 10
и получается вот такая картинка
-
ачх FIR
-
Нашел причину lol22
Программер фигов. А всего то надо было выспаться.
Смещение амплитуды надо делать константой.
pOutDac[dacTxBankNawNumber][y ] = (uint32_t) (2048 + firOutDac[i-1] * amp);