Тема: Прямой синтез SSB на рабочей частоте
http://forum.qrz.ru/thread18474.html
RX3AKT
Я не являюсь специалистом по DSP, поэтому обращаюсь ко всем за советом и помощью. Недавно я реализовал программно-управляемую звуковую АМ и ЧМ на DDS синтезаторе AD9952YSVZ. Результаты вполне обнадеживающие. При прослушивании на контрольном приемнике сигнал (звук, речь) ни чем не отличается от такого же, но идущего от обычных фирменных трансиверов КВ и УКВ. Если получается с этими видами модуляции, то здесь всего один шаг до получения SSB сигнала прямо на рабочей частоте, сформированного непосредственно на выходе чипа, без фильтров и смесителей, в диапазоне перестройки от нуля до, примерно, 400 МГц (для нового DDS AD9912) Встает задача выработки управляющего сигнала для цифровой модуляции амплитуды, частоты и фазы ВЧ сигнала синтезатора в соответствии с мгновенными значениями этих параметров исходного НЧ напряжения. ВОПРОС: Кто может помочь с разработкой такого DSP? Или хотя бы помочь советом. Надеюсь, что эта тема будет интересно не только мне.
UU9JDR
Разрешите предложение?
Есть способ формирования SSB-сигнала на высокой частоте, при котором используется знание мгновенной амплитуды и мгновенной частоты звукового сигнала. В случае использования DDS значения этой мгновенной амплитуды и и мгновенной частоты вводятся напрямую в его регистры.
Как получить эти значения? Например, перенести звуковой сигнал на вспомогательную ПЧ, а затем пропустить через амплитудный и частотный детекторы. Но это в передатчике на аналоговых элементах. Нечто подобное используется в американском запатентованном передатчике (Polar loop transmitter, патент N 4618999).
DSP-процессор позволяет достаточно простым способом выделить их из входного сигнала (низкочастотного или перенесенного на вспомогательную ПЧ), представленного в виде сдвинутых на 90 градусов сигналов, I и Q. При этом мгновенная амплитуда A=корень(I*I+Q*Q), а мгновенная частота F=Ф2-Ф1, где Ф1 и Ф2 - фазы сигнала в "соседние" моменты времени (определяемые частотой дискретизации). Здесь Ф=арктангенс(I/Q).
Осталось получить эти самые I и Q, которые затем будут подаваться на вычислитель мгновенной частоты и мгновенной амплитуды. Для этого можно воспользоваться преобразователем Гильберта для получения сдвинутого на 90 градусов звукового сигнала, или же перемножить этот звуковой сигнал на сигналы гетеродина с частотой 1.5 кГц, сдвинутые на 90 градусов. Разумеется, и тот и другой способ реализуется программно.
Осталось ввести звук с микрофона через АЦП.
Естественно, квадратный корень и арктангенс не обязательно вычислять "в лоб" - нужно экономить ресурсы процессора. Возможно, все это даже получится сделать на простеньком микроконтроллере.
А может быть, есть и другие, более простые способы.
UA9JDD
Ну если вы любите решения от Аналоговых девайсов, то может эта статья вам в чём-то поможет. Благо нет необходимости с программированием DSP заморачиваться.
http://www.analog.com.ru/Public/DDS.pdf
ЛЕОНИД_3
RX3AKT, ещё один способ формирования SSB на рабочей частоте требует от генератора не одного, а два выхода рабочей частоты, сдвинутых на 90 градусов (или учетверённой рабочей частоты из которой формируются эти выходы) которые модулируются отдельно (если опустить несложную математику) комбинацией коэффициентов разложения Фурье, и суммируются - требует меньших вычислительных ресурсов и вполне могут быть выполнены на ПК с выходом модулирующих сигналов через звуковую карту.
Если Вы заинтересуетесь этим методом, могу сделать программку.
RX3AKT
Для UA9JDD
В этом, давно известном файле говорится СОВЕРШЕННО НЕ О ТОМ, о чем в этой теме. Здесь поднимается вопрос формирования SSB речевого сигнала, который всем нам, радиолюбителям-эфирникам, хорошо знаком. В упомянутой статье говорится о способе переноса сигнала с выхода DDS на более высокие частоты, на которых этот DDS работать не способен. Нам же сперва хотя бы на мегагерце сформировать ЗВУКОВУЮ SSB.
Для ЛЕОНИД_3
Спасибо за предложение помощи. Подробности можно обсудить, например по телефону. Помимо всего данная задача просто очень любопытна для экспериментальной реализации. Это и привлекает… Для более ПОЛНОГО ПОНИМАНИЯ ЗАДАЧИ я повторю суть идеи: Необходим "ЧЕРНЫЙ ЯЩИК" на вход которого подается аналоговый НЧ сигнал, например от микрофона, а на выходе должны получить ДВА высокоскоростных цифровых потока, которые несут информацию о мгновенном (за малый период времени) значении частоты и амплитуде входного НЧ сигнала. Первый поток управляет частотой синтезатора, смещая ее вверх (USB) или вниз (LSB) относительно некоторой виртуальной константы - подавленной несущей. Второй поток управляет амплитудой на выходе чипа DDS. По мнению В.Т. Полякова (RA3AAE) фазовой составляющей можно пренебречь. Объединение обоих потоков в единый управляющий для интерфейса с чипом DDS – дело техники. Таким образом, можно получить однополосный сигнал, исходящий непосредственно с ножки микросхемы синтезатора, без дополнительных промежуточных I и Q сигналов, требующих применения, как минимум, дополнительных смесителей. Конечно, в качестве ЧЕРНОГО ЯЩИКА необходимо использовать DSP. Конкретный тип DSP, алгоритм и принцип его программы – это другой вопрос. Здесь, я думаю, о таких специфических вещах говорить не стоит…
Проверить качество сформированного таким способом сигнала ОЧЕНЬ ПРОСТО. Достаточно взять упомянутую виртуальную несущую равной НУЛЮ. При этом синтезатор сформирует сигнал непосредственно на исходной НИЗКОЙ ЧАСТОТЕ и, прослушав его через динамик можно на слух определить получившееся качество. Для DDS, как принципа, совершенно безразлично на какой частоте формировать сигнал - на высокой или низкой. Микросхема справится с задачей в обоих случаях одинаково...
Кто поможет в создании ЧЕРНОГО ЯЩИКА (ЧЯ) - быстрого спектроанализатора? Вопросы, связанные с DDS и интерфейсом с ЧЯ, я беру на себя.
ЛЕОНИД_3
Сергей, ещё один метод получения мгновенных значений частоты и амплитуды, как нельзя более подходящий для Вашей цели: основан на том, что через три точки можно провести только одну синусоиду. Формулы в картинке.
N-1, N0, N+1 три подряд значения звука;
t- время (сек) между двумя значениями (обратно-пропорционально частоте дискретизации);
фи - мгновенная фаза;
А-мгновенная амплитуда;
F-мгновенная частота.
Как и всем дискретным вычислениям, методу присуще уменьшение точности при малых значениях сигнала, поэтому в этих случаях и при нулевых знаменателях надо переходить на вычисления по производным. Предлагаемые формулы проверил в Excel (200 кБ), при желании могу выслать.
Формулы SSB: http://forum.qrz.ru/attachment.php?attachmentid=11606&d=1204489661
RX3AKT
Леонид! Идея для меня новая и очень оригинальная. Я так понимаю, что это задача не совсем для DSP. Здесь нужен ADUC (АЦП) и хороший скоростной микропроцессор. Правда алгоритм я пока себе не представляю, но со временем, после размышлений, может быть все придет. Еще, кажется, что через три отсчета амплитуды можно "проложить" зачастую неполный период синусоиды. Или это не так? Или речь идет о полупериоде, а не периоде? Я на бумажке порисовл тут и пока не "въехал" слегка.
PS: Посмотрел на формулы - кажется речь идет о периоде с некоей начальной фазой. Но, что с "хвостиком" конца периода после третьей точки? Выходит, что фазовая составляющая тоже нужна. Тогда где для нее формула? Или фазу все же игнорировать.
И как, вобще, сама идея?
PPS:
Цитата:
Сообщение от Denis UU9JDR
Есть способ формирования SSB-сигнала на высокой частоте, при котором используется знание мгновенной амплитуды и мгновенной частоты звукового сигнала.
|
Денис! Огромное спасибо за НАПРАВЛЕНИЕ размышлений в нужное русло. Думаю, что мысль о прямом синтезе SSB с помощью DDS уже пришла еще кому то в голову кроме меня. Если встречали такие разговоры в нете, то ссылочку плыз...
ЛЕОНИД_3
Сергей , синусоида отображается формулой: F(x)=A*sin(6.28*F*x+фи), где всего три параметра Амплитуда, Частота и Фаза, поэтому через три точки можно провести синусоиду и причём только одну из первого квадранта :-)
Посмотрите на приложенные результирующие формулы, они крайне просты для вычислений, результат выдаётся с задержкой не более двух периодов дискретизации и в виде двух потоков цифровых данных - мгновенных амплитуды и частоты. Имеются всегодва циклических вычисления - корень квадратный (он быстро сходится) и арккосинус, причём его можно заменить таблицей заранее вычисленных значений, например через 0,01 градуса, всего 9000 значений.
Если для Вашей цели использовать преобразования Фурье, или Гильберта - они работают на массивах, соответственно нужны входной и выходной буферы - появляется задержка между входом и выходом, бесчисленные сложения-умножения, т. е. требуют гораздо большего быстродействия и объёма памяти.
Полагаю, что внимательно посмотря на приложенные формулы, Вы и сами придёте к такому выводу.
UU9JDR
Сообщение от RX3AKT
Денис! Огромное спасибо за НАПРАВЛЕНИЕ размышлений в нужное русло. Думаю, что мысль о прямом синтезе SSB с помощью DDS уже пришла еще кому то в голову кроме меня. Если встречали такие разговоры в нете, то ссылочку плыз...
|
Сергей, спасибо.
К сожалению, я не встречал конструкций, где у обычного DDS изменяется амплитуда и частота для получения SSB. Возможно, причины этого - в скрытых проблемах, которые обнаруживаются, если взглянуть на задачу поближе. Например, сложность может быть в чрезмерно высоком уровне побочных сигналов, возникающих из-за изменения частоты/фазы не непрерывно, а дискретно (при управлении DDS-ом от микроконтроллера).
Например, в итальянском передатчике - http://www.microtelecom.it/digimit/index.htm - изменение частоты и фазы происходит с частотой тактового генератора DDS-а.
RX3AKT
Сообщение от Леонид3
Полагаю, что внимательно посмотря на приложенные формулы, Вы и сами придёте к такому выводу.
|
Да, Леонид! Все понятно! До меня доходит обычно на третий день Первый день - "ничего не понимаю". Второй день - "дай ка попробую". Третий день - "Как все просто!". Главное - было бы время. А то мои домашние производственные проблемы с синтезатором уже немного задолбали. Скоро прекращу производство (к осени) и переключусь на другое...
Цитата:
Сообщение от Denis UU9JDR
К сожалению, я не встречал конструкций, где у обычного DDS изменяется амплитуда и частота для получения SSB.
|
Я уже писал, что у меня ЖИВЬЕМ работает ЧМ и АМ со звуком. Оцифратор на AVR-ке ATtiny26 - десятиразрядный с Fквант.~22KHz). Он же и чипом DDS (AD9952YSVZ) управляет через SPI (примерно 15 м-бит/c). Вобщем - все "поет и пляшет" на слух вполне нормально. И тут появляется некая уверенность в успехе с SSB. Хотя подход несколько другой, более сложный. Вобщем, время покажет что к чему. Если кто то опередит меня, то только буду рад этому. А, может быть, мы, как всегда, ВПЕРЕДИ ПЛАНЕТЫ ВСЕЙ, но "в единственном и неповторимом экземпляре" по причине ненужности ни кому этого "экземпляра" )
Цитата:
Сообщение от Denis UU9JDR
Например, в итальянском передатчике изменение частоты и фазы происходит с частотой тактового генератора DDS-а.
|
Денис! Мне не понятно, как такое может быть? Если даже использовать старые чипы AD98хх с параллельной загрузкой, то и там для вступления в действие очередного воздействия должно пройти несколько циклов. Да и циклы по длительности гораздо длиннее периода тактового генератора самого DDS (100...300 МГц). А в AD99хх (кроме AD9910) только последовательный интерфейс с макс. скоростью 25 м-бит/c, да и "засунуть" надо не один десяток этих битов...
Грязи при прямом синтезе на DDS ожидается конечно больше, чем при традиционных методах формирования, но прелесть всей проблемы может все перевесить. Например формирование сигнала SSB прямо на 400-х мегагерцах - "сладкая" задачка! (На AD9912)
PS:
Цитата:
Молодцы ребята! Творят же люди на программируемой логике! На счет скорости - у них там только оцифровка AF идет на макс. скорости 6 м-сэмплов/c, а управление на гораздо меньшей скорости... Синтезатор комбинированый DDS-PLL. Наверняка лезут в петлю, а не в управление DDS, как мы хотим, хотя - кто их знает! DDS у них не AD-шный...
UA1ARN
Сообщение от RX3AKT
PS:
Цитата:
Сообщение от Denis UU9JDR
в итальянском передатчике - http://www.microtelecom.it/digimit/index.htm
Молодцы ребята! Творят же люди на программируемой логике! На счет скорости - у них там только оцифровка AF идет на макс. скорости 6 м-сэмплов/c, а управление на гораздо меньшей скорости... Синтезатор комбинированый DDS-PLL. Наверняка лезут в петлю, а не в управление DDS, как мы хотим, хотя - кто их знает! DDS у них не AD-шный...
|
Сергей, в показанном по ссылке устройстве нет "петли". ЦАП сразу формирует сигнал. Перенос спектра на рабочую частоту, DDS, - все сделано внутри программируемого чипа аппаратно. Это устройство - развитие ранее опубликованного тем же автором 9-МГц формирователя SSB (с промежуточной частотой 1.5 кГц и так далее).
A 9 MHz Digital SSB Modulator
Хотя сразу скажу - я не смог разобраться с этих 8 с лишним мегабайтах исходников проекта. Опять же, не понятно, что с XILIX тащить, какую среду разработки. Отложил на потом.
UU9JDR
Сообщение от RX3AKT
Денис! Мне не понятно, как такое может быть? Если даже использовать старые чипы AD98хх с параллельной загрузкой, то и там для вступления в действие очередного воздействия должно пройти несколько циклов. Да и циклы по длительности гораздо длиннее периода тактового генератора самого DDS (100...300 МГц). А в AD99хх (кроме AD9910) только последовательный интерфейс с макс. скоростью 25 м-бит/c, да и "засунуть" надо не один десяток этих битов...
|
Сергей, вот пример:
Предположим, что звуковой сигнал постоянной амплитуды линейно меняет частоту от 300 Гц до 3 кГц.
Результирующий ВЧ-сигнал при этом меняет частоту, к примеру, от 14100.3 дл 14103 кГц. Но меняет не непрерывно, а небольшими скачками.
При этом, разумеется, "вокруг" основной частоты появляются дополнительные помехи. На прием основного сигнала они не влияют, но могут распространяться (с достаточно большим уровнем) в полосе плюс-минус несколько килогерц (десятков? сотен килогерц?) от него. Уровень и характер помех мне сейчас сложно представить - но они обязательно будут.
У итальянцев сделано вот как (по крайней мере, в их девятимегагерцовой конструкции): звуковой сигнал обрабатывается с тактовой частотой в несколько килогерц. В результате получаются значения мгновенной частоты и мгновенной амплитуды. Эти значения интерполируются (не помню, вроде бы - линейным алгоритмом), получая новые значения уже с тактовой частотой 30 МГц, которые используются в каждом такте синтеза синусоиды.
В любом случае, имея записанный звуковой сигнал, можно (на компьютере) заранее просчитать значения регистров DDS-а, отвечающих за частоту и амплитуду, и записать их в какую-нибудь микросхему Flash-памяти. После этого заставить микроконтроллер управлять синтезатором, пользуясь этими значениями. На выходе - послушать сигнал и померять его характеристики.
RX3AKT
Не знаю дойдут ли у самого руки до SSB в DDS, но с ЧМ и АМ вроде все красиво на контрольном приемнике. У меня дома есть СК4-59. Надо посмотреть спектр по внимательней. Картинки выложу здесь.
Геннадий! Проясни, что там за автосканирование в AD9954? Можно ли этот режим использовать для автоматической линейно-кусочной аппроксимации между воздействиями? Чую, что нельзя, а жалко! Такой режим неплохо бы ввести в железо чипов DDS по всем трем изменяемым параметрам сигнала - ЧМ, АМ и ФМ. Надо Девайсовцам идейку кинуть. Вот тогда действительно дискреты будут идти с тактовой частотой фаз-аккумулятора, как говорил Денис.
Для получения прямосинтезированного модулированного сигнала на чип DDS необходимо подавать управляющие цифровые сигналы в последовательном коде. Я для этого применяю SPI-интерфейс контроллеров семейства AVR. К сожалению их быстродействие не обеспечивает максимально возможной скорости обмена, равной 25 Мегабит в секунду (по данным на синтезатор AD9952). Для достижения такой скорости необходимо иметь микроконтроллер с производительностью выше 50 mips. (у AVR около 20 mips).
Кто бы порекомендовал какой-либо НЕДОРОГОЙ и ДОСТУПНЫЙ скоростной контроллер с встроенным АЦП и синхронным последовательным интерфейсом?
Спасибо за интересную информацию, Александр!
Контроллеры C8051F360 мне понравились больше, чем LPC2364. И система команд привычнее и функции не такие избыточные, как у LPC. "ПЛАВНИКИ" тоже несколько избыточны пока (речь идет пока только о АМ и ЧМ) вот когда дело дойдет понастоящему об SSB, тогда им здесь самое место. У моего любимого ATMEL-а тоже есть ARM-ы и AVR-16, но не хочется с ними связываться. Они, тут на медни объявили об ATxmega, но по мипсам не проходят.
На практике 10 разрядов АЦП вполне достаточно для довольно качественного звуковоспроизведения. Недавно сделал сквозной АЦП (10 разр.) - ЦАП (16 разр. ШИМ) ~22 Ксэмпла/c на AVR (ATtiny26 - 40 руб. за 1 шт.) для проверки качества. Послушал сам себя на м-м гарнитуру с программной задержкой 10 с. и остался доволен.
PS: Надо же! Научились для MCS-51 делать 1 MIPS на 1 MHz
Сообщение от EU1ME
Для C8051 надо хитроватый программатор/отладчик. Фирменный стоит 40-50 долл,
|
Я предпочитаю докапываться во всем до самых скальных оснований. Когда то, в начале эры AVR (почему то они мне понравились больше, чем PIC) были сложности с программированием. Код опознавания некоторых контроллеров был "левым" и имеющиеся программаторы и софт часто просто отказывались работать с данными девайсами. Пришлось изобрести свой программатор, который обходился (и до сиих пор обходится) вообще без "железа". Просто шнур между выводами LPT порта и ножками контроллера. Все остальное - собственная программа.
Вижу, что и с C8051 поступлю так же. Тем более что "рыба" программы достаточно развита.
За годы работы с микропроцессорами (с 1980-го года) и микроконтроллерами (MCS-48, MSC-51, 8080, Z80, 8086, 6800, 68000, PIC, AVR.....) у меня выработались собственные приемы отладки, основанные на включение в код тестовых участков. Раньше при УФ ПЗУ оставлял участки NOP (FFh), потом тест участок, потом вместо FF вставлялся JMP обхода теста. Сейчас с возможностью многократного перепрограммирования флэш-ПЗУ эта проблема снимается. Тем более, что с годами привык делать отладку вообще В УМЕ. Т.е. при анализе только ТЕКСТА в мозгах складывается целостная картина того, что происходит с периферией в реальном времени. Так родилась прошивка моего синтезатора... http://www.rx3akt.narod.ru/dds_akt.html
8 кило ассемблерного кода вручную.
Недавно был казус: Один покупатель обнаружил редко воспроизводимый баг. При анализе программы выяснилось, что причиной был готовый кусок кода (процедура) рекомендованная фирмой ATMEL. Когда я сам до этого допер, то решил заглянуть еще раз на эту процедуру через интернет и... с удивлением обнаружил, что фирмачи уже втихую исправили свою ошибку. И...молчок! Если интересно приведу конкретные сравнительные тексты. Правда, это тема другого форума и довольно специфичная, не всем интересная.
Вот такое бывает...
KHACH
А были ли попытки сделать на базе АРМа с USB (LPC2148 LPC2368) передатчик прямого синтеза сигнала, который бы "прикидывался" звуковой аудиокартой USB для компьютера? Т.е поручить задачу оцифровки микрофона компьютеру, а устройство принимает аудиопоток и только перестраивает DDS в соответствии с текущим звуковым отсчетом?
И второй вопрос. В принципе вычислительных возможностей такого АРМа хватает, что бы "крутить" преобразование фурье в реальном времени (а без такого преобразования SSB передатчика имхо не сделать). А если использовать не обычный звуковой поток (отсчеты амплитуды от времени) а MP3? МП3 грубо говоря представляет собой представление сигнала в спектральной облсти, и его легче преобразовать в отсчеты перестройки фазы и амплитуды DDSa?
RX3AKT
А вообще, были ли замечены ПОПЫТКИ сделать звуковую (речевую) модуляцию непосредственно в DDS ?
У меня уже год АМ, ЧМ и DSB работают неплохо на AD9952YSVZ (модификация моего синтезатора http://rx3akt.narod.ru/dds_akt2.html ) и без всяких АРМ-ов, на ATtiny26 в качестве оцифратора...
До SSB еще руки не дошли. Только предварительные эксперименты.
RZ6AT
Здравствуйте, Сергей!
Здесь, похоже, ответ на ваш вопрос и предложение к кооперации:
http://forum.cqham.ru/viewtopic.php?p=228587#228587
73! Владимир RZ6AT.
RX3AKT
Владимир! (RZ6AT)
Думаю что формирование с помощью DDS SSB сигнала на рабочей частоте очень перспективная и заманчивая вещь. Конечно без побочных эффектов, таких, например, как расширение полосы, здесь не обойтись. Но, получаемые ПЛЮСЫ могут все это компенсировать. А результаты лучше всего в любом новом деле оценивать на практике. А вдруг получится, что "не так страшен черт, как его рисуют". По моему мнению надо стремиться к минимизации "железа". Ведь можно обойти трудности получения информации о мгновенных компонентах исходного НЧ сигнала применением "навесных" элементов. Например с помощью двух синхронизированных DDS сформировать квадратурные сигналы DSB и затем суммировать их. Правда для этого потребуется НЧ фазовращатель для каждого из двух каналов оцифровки речи. А это уже "АНАЛОГОВЩИНА"! Думаю, что это возможно уже сейчас. Есть путь увеличения частоты дискретизации - применение последних скоростных чипов с параллельной загрузкой управляющих слов. Вобщем, тема интересна и для обсуждения и для воплощения. К примеру, АМ и ЧМ - это уже пройденный этап. Субъективно звучит все очень неплохо. Теперь тружусь над АМ/ФМ - непосредственным синтезом PSK31 с помощью DDS. Тем более, что ЗАДЕЛ имеется... http://www.rx3akt.narod.ru/psk31_akt.html
К сожалению я не смогу воспользоваться Вашей ссылкой. Доступ на сей "славный" форум мне бессрочно закрыт админом UA6AP. Даже взглянуть нельзя! Видимо я принес слишком мало полезной информации для этого сайта и форума... http://forum.cqham.ru/search.php?sea...ergey+Makarkin
А некоторые сообщения просто выкинуты целыми темами. Например про синтезатор.
Зато освободилось много времени от бесполезных дебатов...
RZ6AT
Хочу поделиться и обсудить идею, решение которой я нашёл в сентябре 2007 года, но всё нет возможности допаять и отладить программу, поэтому рещил попросить помощь на форуме, может кто поможет проверить работоспособность идеи программно формировать SSB (USB или LSB выбирается программно) речевой сигнал на любой выходной частоте DDSa. Это позволит избежать применение смесителей на передачу, но, возможно, и на приём тоже, но это потом.
Суть идеи заключается в том, что в современных DDSах в их структуру введены дополнительные регистры, которые позволяют управлять программно амплитудой и фазой выходного сигнала DDSa. И, возможно, они сами и придумали такой способ формирования в том числе и SSB сигнала и ввели для этого эти блоки, а мы, не зная этого, изобретаем то, что они придумали до нас... Но как бы то ни было, давайте посмотрим, как можно программно формировать SSB речевой сигнал сразу на выходной частоте DDSa. Допустим, что мы запрограммировали DDS на выдачу выходного сигнала с частотой 10 МГц?, смотри схему ниже. Мы заглянули в описание DDSa и посчитали код, который нужно записать в регистр инкремента сумматора фазы и этот код инкремента стал постоянно, с частотой генератора Gen1 накапливаться (суммироваться) в сумматоре фазы, линейное нарастание которой, с шагом(инкрементом), обратно пропорциональным выходной частоте, производит выборку из зашитой внутри DDSa таблицы синуса и подаёт выбранный код амплитуды синуса на выходной ЦАП DDSa, добавленные в структуру регистр + сумматор кода фазы и регистр + перемножитель кода амплитуды позволяют вариировать в такт со звуковым сигналом мгновенную фазу и амплитуду выходного сигнала. Так как информация о фазе и амплитуде внутри DDS должна быть представлена в цифровом виде, то мы должны перевести аналоговый сигнал с микрофона в цифровой, для чего необходимо его усилить, например, на операционном усилителе ОР1 и подать на вход ADC0 аналогово-цифрового преобразователя, например, встроенного в микроконтроллер МК АТmega8. Частоту выборок нужно сделать по крайней мере не ниже удвоенной верхней частоты звукового диапазона речи, например 8 кГц, но для того, чтобы получить информацию о фазе звукового сигнала, нужно производить выборку квадратурного сигнала, т.е. сдвинутого на 90 градусой сигнала 8 кГц или просто через четверть периода от основной выборки. Тогда быстродействие АЦП должно составлять 32 кГца, но внутри АТmega8 быстродействие составляет 16 Кгц. Для того, чтобы он успевал делать квадратурные выборки, применим схему выборки и хранения на аналоговом ключе SW1, который управляется одним из выходов МК так, что ключ открывается и заряжает конденсатор C1 весь период 8кГц, за исключением времени от четверти до половины периода, как бы перенося во времени иформацию о мгновенной амплитуде речевого сигнала с четверти на половину периода и считывая его вторым входом АЦП ADC1 и тогда быстродействия в 16 кГц хватает, чтобы выбирать и основной и квадратурный сигналы. Информацию о мгновенной амплитуде можем легко вычислить, представив, что наши выборки являются проекциями вектора мгновенной амплитуды на ортогональные оси, так как они сдвинуты по времени на 90 градусов. Тогда амплитуда равна корню квадратному из суммы квадратов двух выборок основной и квадратурной за период, а фаза равна арктангенсу отношения основной выборки к квадратурной. Но вычисление отношения имеет подводные камни, когда знаменатель может быть, а он вполне может быть, равен нулю. Для обхода подводных камней вспомним, что частота является производной от фазы и что вместо изменения регистра фазы мы можем изменять регистр частоты, пропорционально производной от фазы, а производная от фазы это производная от арктангенса отношений основной и квадратурной выборок за период. Смотрим в справочник по производным и находим, что производная от арктангенса отношения А/B равна А делить на сумму квадратов А и В, а так как сумма квадратов всегда больше нуля, хотя бы от шума микрофона, то подводные камни обойдены. И теперь если мы хотим иметь верхнюю боковую на выходе, то вычисляем производную и прибавляем в регистр частоты соответствующий довесок к мгновенной частоте, а если нижнюю боковую, то вычитаем и соответственно вычисляем по описанной ранее методике текущую амплитуду и засылаем её в регистр амплитуды - на выходе должен формироваться соответствующий однополосный сигнал.
Если кто может смакетировать такую схему и написать программу и проверить как это работает, то всем нам откроется путь как формировать SSB сигнал без применения смесителей, сразу на рабочей частоте.
http://forum.qrz.ru/attachment.php?attachmentid=13300&stc=1&thumb=1&d=1257041409
|