В этой статье я покажу, как самому соб­рать прос­той, но качес­твен­ный FM-ради­опри­емник на осно­ве свер­хде­шево­го чипа RDA5807FP. Наш гад­жет будет выдавать качес­твен­ный сте­реоз­вук, у него будут кноп­ки для нас­трой­ки, квар­цевая ста­били­зация час­тоты и про­чие при­ятные фичи. Если ты лишь недав­но взял в руки паяль­ник, то эта инс­трук­ция для тебя.
 

RDA5807

В пре­дыду­щих стать­ях я показы­вал, как собирать раз­ные FM-при­емни­ки, одна­ко начина­ющим ради­олю­бите­лям было слож­но и собирать их, и нас­тра­ивать. Даже свер­хре­гене­ратор, исклю­читель­но прос­той с точ­ки зре­ния схе­мотех­ники, весь­ма нет­риви­ален в нас­трой­ке, нес­табилен в работе и зву­чит пос­редс­твен­но. Сегод­ня у нас будет прос­той, но гораз­до более прод­винутый про­ект.

Мик­росхе­му RDA5807FP я уже упо­минал в статье о SI4734. Теперь мы рас­смот­рим ее под­робнее. Это однокрис­таль­ный SDR-при­емник, под­держи­вающий RDS, но об этом как‑нибудь в дру­гой раз. Взгля­нем на струк­турную схе­му.

Структурная схема RDA5807FP
Струк­турная схе­ма RDA5807FP

Здесь лег­ко узнать типич­ный SDR-при­емник. Вход­ной сиг­нал (обыч­но из антенны) пос­тупа­ет на УВЧ, затем на квад­ратур­ный сме­ситель, отту­да в виде двух сиг­налов I и Q на УПЧ, даль­ше на АЦП, пос­ле чего в циф­ровом виде обра­баты­вает­ся DSP-про­цес­сором. В нем сте­реосиг­нал демоду­лиру­ется и декоди­рует­ся. Затем декоди­рован­ный сиг­нал пос­тупа­ет на ЦАП, где пре­обра­зует­ся в ана­лого­вый зву­ковой сте­реосиг­нал.

Ге­теро­дин пред­став­ляет собой PLL-син­тезатор с опор­ной час­тотой 32 768 Гц (часовой кварц, но воз­можны и дру­гие час­тоты), управле­ние час­тотой прог­рам­мное, минималь­ный шаг перес­трой­ки — 25 кГц.

 

Цифровая демодуляция

В статье о ZetaSDR я уже показы­вал, как детек­тировать сиг­налы AM и SSB, теперь рас­смот­рим ЧМ.

Итак, на выходе АЦП мы име­ем сиг­налы I и Q, тог­да иско­мый модули­рующий сиг­нал будет равен

S=arctan(I/Q)'=(IQ'-QI')/(I^2+Q^2)

При­чем если в исходном сиг­нале хорошо подав­лена ампли­туд­ная модуля­ция, то зна­мена­тель мож­но опус­тить, так как он пред­став­ляет собой кон­стан­ту. Что же каса­ется поис­ка про­изводных, то их фун­кцию с успе­хом выпол­няют конеч­ные раз­ности:

X(i)'=X(i+1)-X(i-1)
 

Кодирование стерео

Хо­рошо, с демоду­ляци­ей разоб­рались, а что нас­чет сте­рео? Сей­час исполь­зует­ся кодиро­вание сиг­нала CCIR. Сог­ласно это­му стан­дарту, спектр сиг­нала име­ет сле­дующий вид.

Спектр демодулированного FM-сигнала
Спектр демоду­лиро­ван­ного FM-сиг­нала

В низ­кочас­тотной час­ти спек­тра рас­полага­ется сум­ма пра­вого и левого каналов, что обес­печива­ет обратную сов­мести­мость с монофо­ничес­кими при­емни­ками. Нап­ример, свер­хге­нера­тор, о котором я писал ранее, как раз выделя­ет эту сум­му.

Да­лее вок­руг час­тоты 38 кГц идет раз­ность левого и пра­вого каналов — это ампли­туд­ная модуля­ция с подав­ленной несущей (DSB-модуля­ция). Подав­ление несущей поз­воля­ет сузить спектр передат­чика, что повыша­ет КПД переда­чи.

Од­нако для детек­тирова­ния сиг­нала DSB нуж­но вос­ста­новить несущую с точ­ностью до фазы. Для это­го переда­ется так называ­емый pilot tone 19 кГц (полови­на несущей час­тоты 38 кГц), собс­твен­но, по наличию пилот‑тона при­емни­ки и опре­деля­ют, что переда­ча содер­жит сте­реосиг­нал.

Не­сущую обыч­но получа­ют син­хро­низа­цией допол­нитель­ного гетеро­дина на 38 кГц с пилот‑тоном или удво­ением его час­тоты. В DSP для удво­ения час­тоты исполь­зует­ся воз­ведение в квад­рат.

Сиг­нал DSB детек­тиру­ет син­хрон­ный детек­тор, фак­тичес­ки это тех­ника пря­мого пре­обра­зова­ния с исполь­зовани­ем вос­ста­нов­ленной несущей. А уже имея сум­му и раз­ность каналов, мож­но выделить сиг­налы левого канала и пра­вого:

(L+R)+(L-R)=2L
(L+R)-(L-R)=2R

В GNU Radio раз­верну­тый циф­ровой тракт ЧМ‑при­емни­ка выг­лядит монс­тру­озно. Прав­да, там еще и декодер RDS, который мы сегод­ня не рас­смат­рива­ем.

SDR-тракт ЧМ-стереоприемника
SDR-тракт ЧМ‑сте­реоп­рием­ника

Внут­ри RDA5807 это все, веро­ятно, луч­ше опти­мизи­рова­но, но общий прин­цип, несом­ненно, тот же.

 

Практика

Здесь дол­жно быть опи­сание интерфей­са I2C RDA5807, ини­циали­зация, уста­нов­ка час­тоты, нас­трой­ка гром­кости и так далее, но об этом в дру­гой раз. Дело в том, что некото­рое вре­мя назад мне на гла­за попалась инте­рес­ная схем­ка — тво­рение сум­рачно­го китай­ско­го гения.

Исходная схема
Ис­ходная схе­ма

Как лег­ко видеть, никако­го мик­рокон­трол­лера здесь нет, а управле­ние выпол­няет­ся кноп­ками К1–К5, К1 — вклю­чить/вык­лючить, К2 — повысить гром­кость, К3 — умень­шить гром­кость, К4 — пре­дыду­щая нас­трой­ка, К5 — сле­дующая нас­трой­ка. Выг­лядела схе­ма подоз­ритель­но, учи­тывая, что в даташи­те не было ни сло­ва про режим stand alone. Срав­нение со схе­мой из даташи­та толь­ко уси­лило сом­нения.

Схема из даташита
Схе­ма из даташи­та

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии