Cинтезатор частоты. Модернизация

Этот материал был опубликован в журнале
'Радиолюбитель. КВ и УКВ'(г.Минск) N5 за 1999г.

1. Введение

Давным давно, когда компьютеры были большими, а точнее в апреле прошлого года, вниманию почтеннейшей публики было предложено описание синтезатора частоты КВ-трансивера [1]. Это однопетлевой PLL-синтезатор с частотой сравнения 4кГц, но, благодаря использованию оригинальной методики формирования мелкой сетки путем сдвига частоты опорного кварцевого генератора, имеющий шаг перестройки частоты 12..15Гц. Кроме того, его отличает несколько необычный способ управления частотой -- с помощью манипулятора телеграфного ключа, без использования традиционного валкодера.

За время, прошедшее с момента публикации, этот синтезатор был успешно повторен многими радиолюбителями, что доказывает правильность заложенных в нем решений. Разумеется были вопросы, замечания, выявились некоторые недостатки (кстати, благодарю всех, кто откликнулся на эту публикацию, ваши советы были учтены при доработке конструкции). И вот, настал момент, когда масса свалившихся на меня замечаний и предложений достигла критического значения, что заставило превозмочь свою природную лень и взяться за написание сего опуса. :-)

Эта статья является продолжением вышеназванной публикации и для правильного восприятия материала рекомендую вначале ознакомиться с [1]. Если у вас нет под рукой журналов 'Радиолюбитель. КВ и УКВ' NN4,5 за 1998г., здесь можно найти электронный вариант.

Нет необходимости описывать достоинства данной конструкции, нашей целью является 'выявление недостатков и их устранение'. Итак...

2. Недостатки

Да, чаще всего мне пеняли на то, что нет в моем синтезаторе валкодера... Конечно, через неделю работы с манипулятором про валкодер вспоминаешь все реже, через две -- начинаешь привыкать, а через месяц вообще не представляешь как можно работать иначе... но, все-таки валкодер пришлось делать. Правда это повлекло за собой удаление из программы функций телеграфного ключа. Дело в том, что примененная в синтезаторе однокристальная ЭВМ имеет объем памяти программ всего 2К, и поверьте, это не очень много. Даже писанная на Ассемблере, вручную оптимизированная программа, так и норовит выйти за этот, предназначенный ей судьбой предел. :) Так что же делать? - но об этом чуть позже.

Второй, менее заметный, но не менее неприятный недостаток -- дискретность установки значения ПЧ 1кГц. И это при том, что точность индикации частоты -- 100Гц. Получается что необходимо либо подгонять частоту фильтра основной селекции и опорного кварцевого генератора трансивера к круглому (с точностью до 1кГц) значению, либо мириться с систематической погрешностью индикации частоты, причем на всех диапазонах, и к тому же, имеющей на разных диапазонах разный знак. Причина -- опять же упрощение программы с целью уменьшения объема кода.

Третьим недостатком является необходимость тщательнлй и скрупулезной настройки опорного кварцевого генератора 8мГц. Если бы этот генератор не перестраивался с помощью ЦАП то никакой проблемы не возникло бы. Все решилось бы одним подстроечным конденсатором... Но увы. Чаще всего, при установке нужного перекрытия по частоте, нижняя частота генератора сдвигается, при попытке точно выставить частоту 'съезжает' перекрытие. А подтачивать кварц ой как не хочется... Ведь только от него зависит общая стабильность синтезатора. Но при неточно выставленном кварце появляется погрешность установки частоты синтезатора, причем разная на разных диапазонах. Да еще зависящая от коэффициента деления.

Четвертый недостаток -- невозможность работы с преобразованием вверх. Это с самого начала не предусматривалось и ввести простыми средствами в существующую программу было невозможно.

Пятый, и, наверное, последний недостаток заключается в том, что этот синтезатор изначально проектировался для одной фиксированной ПЧ. Естественно, все его параметры жестко 'зашиты' в ПЗУ и могут быть изменены только путем перекомпиляции программы и полного переписывания EPROM (памяти программ). Это было обусловлено тем, что примененная однокристальная ЭВМ не имеет энергонезависимой памяти (EEPROM или NVRAM), а использовать внешнюю микросхему памяти не хотелось, так как это очень здорово повысило бы стоимость изделия. К тому же, процедуры работы с внешней энергонезависимой памятью тоже занимают драгоценное место в памяти программ. Так что же делать? --

3. Менять процессор!

Да, многие из нас знакомы с понятием 'апгрейд'. Когда-то мы сменили РК-86 на 'Синклер','Синклер' на IBM PC/XT, затем XT на AT-286 ('двойку'), 'двойку' на 'тройку', 'тройку' на 'четверку', 'четверку' на 'Пентиум', 'Пентиум' на 'Целерон'... И конца этому процессу не видно. Но, пардон, это я отвлекся. :)

Итак, конечно, AT89C2051, это очень приятный процессор. Система команд MCS-51 (то бишь не надо изучать что-то новое), дешевый, широко распространенный. Но увы, он больше нас не устраивает. И как хорошо что фирма 'Atmel' все это время не стояла на месте и разработала новое семейство однокристальных ЭВМ -- AVR (AVR -- это зарегистрированная торговая марка фирмы 'Atmel'), построенных на основе Enhanced RISC Architecture (улучшенная RISC архитектура). Это серия AT90Sxxx. Можно много писать о достоинствах этих процессоров, проще посмотреть на http://www.atmel.com.

Из этой серии нам наиболее подходит AT90S2313. Он полностью совместим по цоколевке с AT89c2051 и может быть вставлен в ту же панельку, практически без переделки схемы. Но зато он примерно в 12 раз производительней (при той же тактовой частоте) имеет 'на борту' 128 байт энергонезависимой памяти (EEPROM), очень эффективную систему команд, так что при том же объеме памяти программ (EPROM) на нем можно реализовывать более сложные алгоритмы. Правда система команд не имеет ничего общего с AT89C2050 и программу пришлось полностью переписывать, но это, как говорится, 'мои проблемы'. :) А вот вашей проблемой будет...

4. Аппаратная доработка синтезатора

Прежде всего, разберемся что такое валкодер и как его подключить. Что нам требуется от валкодера? -- преобразование угла поворота в цифровой код. Вы никогда не разбирали компьютерную мышку? Если да, то наверняка заметили там диск с прорезями и две оптопары светодиод-фотодиод. Да, это и есть всеми нами любимый валкодер. Диск вращается, пересекает своими 'спицами' световой поток -- на выходе получается импульсный сигнал. При равной ширине прозрачной и непрозрачной областей диска это будет меандр. Для того, что бы отследить направление вращения диска устанавливается вторая оптопара, так смещенная относительно первой, что бы импульсы идущие с нее были сдвинуты по фазе относительно первых на 90 градусов. См. Рис.1. На Рис.2 показано относительное расположение диска валкодера и оптопар для получения необходимого фазового сдвига.

Алгоритм определения направления вращения очень прост. Процессор периодически проверяет состояние сигнала на выходе оптопары 1 и ожидает положительного перепада. Дождавшись перепада от лог.0 к лог.1 немедленно проверяет состояние сигнала на выходе оптопары 2 и если это лог.1 -- фиксирует шаг вверх по частоте. В противном случае -- шаг вниз.

Это все конечно хорошо, но есть тут одна большая неприятность: валкодер, с которым действительно удобно работать, должен выдавать не менее 500..1000 импульсов на один оборот. Конечно, в кустарных условиях, 'на коленке' такой валкодер сделать невозможно. Придется или искать промышленное устройство (подобные узлы используются в станках с ЧПУ) или делать самодельный валкодер с диском в 30..50 штрихов и пытаться как-то обойти эту проблему программно. Пример самодельного валкодера, который можно взять за основу при изготовлении, можно найти в [2]. А можно, кстати, попытаться смастерить что-то из уже упоминавшейся выше мышки...

Принципиальная электрическая схема валкодера приведена на Рис.3. Здесь можно увидеть два операционных усилителя, включенных как компараторы. Они предназначены для формирования импульсов, подаваемых на вход процессора синтезатора. В данном примере использованы два из четырех ОУ микросхемы LM324 -- одного из самых распространенных счетверенных операционных усилителей. Два оставшихся не используются. В принципе, тут может работать любой операционный усилитель допускающий однополярное питание напряжением +5В.

Сигналы с выхода валкодера 'WalOut1' и 'WalOut2' необходимо подать на входные клеммы процессорной платы синтезатора 'Man In' (XS3, XS4), как вы понимаете, вместо манипулятора. Напряжение питания +5В на схему валкодера можно снять с пятивольтового стабилизатора DA3 процессорной платы, а можно использовать отдельный стабилизатор, благо они сейчас дешевы.

Замена процессора (правильней было бы написать 'однокристальной микро-ЭВМ', но 'процессора' короче) AT89C2051 на AT90S2313 требует небольшой доработки. В связи с тем, что у нового процессора активный уровень сигнала 'reset' изменился на противоположный и цепи аппаратного сброса находятся на кристалле, надо изъять из схемы конденсатор C6 (конденсатор, включенный между выводом DD1.1 и плюсом питания) и вместо него впаять резистор номиналом примерно 1к. Резистор удобнее ставить вертикально.

Несколько изменилась конфигурация клавиатуры и назначение клавиш. Расположение клавиш новой клавиатуры изображено на Рис.4. На рисунках Рис.5 и Рис.6 приведен чертеж печатной платы клавиатуры.

И, наконец, надо исправить маленькую неточность в прошлой статье. На печатной плате присутствуют фильтрующие RC-цепочки, не отраженные на принципиальной схеме. Они подключены к контактам xs13..xs16. Номиналы резисторов -- 100 Ом, конденсаторов -- 1000 пФ.

Кроме этого изменилось назначение некоторых выходных контактов синтезатора. Сигнал 'CW out' перенесен с xs19 на xs12. На xs19 теперь сигнал управления внешним делителем '4/8', используемым при работе с значением ПЧ более 8мГц.

Кстати, о делителях. На Рис.7 приведена схема одного из вариантов первого смесителя трансивера, совмещенная с делителем на 2/4, который может использоваться с данным синтезатором. Схема очень простая и комментариев не требует. И, наконец, последнее, что заслуживает вашего внимания, это...

5. Описание новой версии программы

Как было уже сказано, программа претерпела существенные изменения. Прежде всего в десять раз повышена точность внутреннего представления частоты, изменены алгоритмы пересчета внутреннего представления частоты в десятичный формат, пригодный для отображения на индикаторе, что позволило задавать любое значение ПЧ от 0 до 167мГц, причем значение ПЧ задается индивидуально для каждого диапазона с точностью 100Гц. При работе с преобразованием вверх обеспечивается полное перекрытие всего КВ участка (1..30мГц). Введены два дополнительных диапазона: 50мГц и 144мГц. Хотя сам синтезатор и не позволяет работать прямо в этих диапазонах, он может правильно индицировать частоту при работе трансивера с трансвертерной приставкой. Достаточно только корректно установить значение ПЧ.

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

Кроме этого были изменены некоторые режимы работы. Обратимся к рисунку Рис.4 и разберем функциональное назначение клавиш.


Рис.4. Пример расположения клавиш.

  1. 'Fast' - переключение синтезатора в режим быстрой перестройки. В в новой версии программы назначение этой клавиши не изменилось.
  2. 'A->M' - запись частоты активного VFO в ячейку памяти. Работает так же как и в старом варианте, за исключением того, что количество ячеек памяти увеличилось до одиннадцати.
  3. 'M->A' - извлечение частоты из памяти и запись в текущий VFO. Работает так де как и в старом варианте, за исключением того, что количество ячеек памяти увеличилось до одиннадцати.
  4. 'Split' - разнос частот приема/передачи. Без изменений.
  5. 'A<->B' - смена активного VFO. Без изменений.
  6. 'A=B' - Уравнивание частоты неактивного VFO с частотой активного. Без изменений.
  7. 'Band' - Переход на другой диапазон. Работает так же как и в старом варианте, за исключением того, что добавлено еще два диапазона: 50 мГц и 144 мГц.
  8. 'Lock' - блокировка перестройки частоты валкодером. Обычно используется при работе на общий вызов в режиме RTTY. В режиме 'Band' эта клавиша включает диапазон 24мГц, в режиме 'Dial' - вводит цифру 8.
  9. 'Scan' - сканирование частоты. Эта функция синтезатора претерпела большие изменения и теперь работает так. При первом нажатии на клавишу 'Scan' включается режим сканирования и частота начинает изменяться в сторону увеличения. Причем, частота, на которой находился синтезатор в момент нажатия на эту клавишу, фиксируется как нижняя граница диапазона сканирования. При повторном нажатии на клавишу 'Scan' частота, до которой дошел синтезатор, фиксируется как верхняя граница диапазона сканирования и сканирование перезапускается с нижней границы. Следующее нажатие этой клавиши остановит сканирование, следующее снова запустит, но уже в заданных границах. И так далее. Для выключения режима сканирования со стиранием границ необходимо во время сканирования нажать клавишу 'ESC'. После этого можно установить новые границы сканирования, как было описано выше. В режиме 'Band' эта кнопка включает диапазон 28мГц, в режиме 'Dial' - вводит цифру 9.
  10. 'ESC' - отмена ввода в некоторых режимах. Кроме того, в режиме сканирования выключает этот режим со стиранием границ диапазона сканирования.
  11. 'Dial' - ручной набор частоты с клавиатуры. При нажатии на эту кнопку дисплей очищается, в первых двух позициях высвечиваются прочерки, а в третьей (позиция десятков мегагерц) появляется мигающий курсор. Теперь можно набрать с клавиатуры любую частоту с точностью до 100Гц. Если в процессе набора нажать 'Enter' все оставшиеся ненабранные цифры будут замещены нулями. Отменить набор можно нажав клавишу 'ESC'.

    Необходимо учесть, что ввод произвольной частоты допустим только если трансивер работает с преобразованием вверх. Только тогда синтезатор обеспечит захват петли ФАПЧ на любой частоте от 1 до 30мГц. В случае низкой ПЧ допустимо вводить частоту только в пределах любительских диапазонов. В противном случае, несмотря на правильное отображение введенной частоты на дисплее, захвата ФАПЧ может и не быть.

    В режиме 'Band' эта клавиша включает диапазон 50мГц, в режиме 'Dial' -- вводит цифру 0.

  12. 'Enter' - установка дискретности перестройки частоты валкодером. При нажатии этой клавиши на дисплее отображается слово 'tun-' и мерцающий курсор предлагает ввести цифру. При вводе цифры '0' -- дискретность перестройки минимальна. В этом случае один импульс от валкодера изменяет частоту синтезатора на один шаг (12..15Гц). При 50 штрихах на диске валкодера мы получим скорость перестройки 600..750Гц на один оборот. Если ввести цифру 1 -- дискретность удваивается, 2 -- утраивается и т.д. Соответственно, цифра 9 увеличивает скорость перестройки в 10 раз. Но, разумеется, и шаг перестройки тоже увеличится в 10 раз.

    В режиме 'Dial' этой клавишей можно закончить ввод числа. Невведенные цифры при этом будут замещены нулями. В режиме 'Band' эта клавиша включает диапазон 144мГц.

А теперь осталось самое интересное --

6. Редактирование энергонезависимой памяти

ОСТОРОЖНО, ЭТО ОЧЕНЬ ОТВЕТСТВЕННАЯ ОПЕРАЦИЯ. НЕВЕРНЫМИ ДЕЙСТВИЯМИ ЛЕГКО ЛИШИТЬ СИНТЕЗАТОР РАБОТОСПОСОБНОСТИ! В ЭТОМ СЛУЧАЕ ИСПРАВИТЬ СИТУАЦИЮ МОЖНО БУДЕТ ТОЛЬКО ПЕРЕПИСАВ EEPROM C ПОМОЩЬЮ СПЕЦИАЛЬНОГО ПРОГРАММАТОРА.

Для того что бы войти в сервисный режим редактирования энергонезависимой памяти необходимо нажать любую клавишу и, удерживая ее, произвести аппаратный сброс процессора, например выключить и снова включить питание, или на короткое время соединить с массой DD1.1. Если вы сделали все правильно, на дисплее появится надпись:

EE 00-22

Две буквы 'Е' в первой и второй позиции дисплея показывают что синтезатор находится в сервисном режиме редактирования EEPROM. Затем, после пробела следует двухразрядное шестнадцатиричное число -- адрес ячейки памяти и через тире -- содержимое этой ячейки, также в шестнадцатиричном виде.

Нажимая клавиши 'A<->B' и 'Dial' можно, соответственно, уменьшать и увеличивать адрес ячейки, а клавишами 'M->A' и 'Lock' изменять содержимое ячейки, находящейся по этому адресу. Для записи нового значения ячейки памяти в EEPROM достаточно нажать клавишу 'Enter'. Чтобы выйти из сервисного режима можно нажать клавишу 'ESC' или просто выключить питание.

Исходное состояние электрически перепрограммируемого ПЗУ (EEPROM) приведено в Таблице 1. В таблице 2 приведена та же информация, но пригодная для записи в EEPROM c помощью программатора.

Таблица 1. Дамп EEPROM для синтезатора с ПЧ 5мГц.


Addr...00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F


000000 22 15 14 13 25 24 23 27 17 26 16 12 36 04 d7 04
000010 91 05 67 06 03 07 0f 45 fb ff 50 c3 00 00 50 c3
000020 00 00 50 c3 00 00 50 c3 00 00 b0 3c ff ff b0 3c
000030 ff ff b0 3c ff ff b0 3c ff ff b0 3c ff ff 2f ed
000040 ec ff 2f ed ec ff fc a6 07 93 44 48 00 b3 a0 8c
000050 00 b3 00 13 01 b3 50 8b 01 93 00 26 02 b3 08 c3
000060 02 93 2c 3a 03 93 a8 cc 03 93 90 4d 04 93 dc fe
000070 15 93 dc e7 04 93


Таблица 2. Дамп EEPROM в Intel HEX формате


:100000002215141325242327172616123604D70485
:100010009105670603070F45FBFF50C3000050C35F
:10002000000050C3000050C30000B03CFFFFB03CD4
:10003000FFFFB03CFFFFB03CFFFFB03CFFFF2FEDE8
:10004000ECFF2FEDECFFFCA60793444800B3A08C17
:1000500000B3001301B3508B0193002602B308C311
:1000600002932C3A0393A8CC0393904D0493DCFEA7
:060070001593DCE7049388
:00000001FF


Разберем назначение каждого байта EEPROM.

С адреса 0h по 0bh находится таблица перекодировки клавиатуры. В этой таблице содержатся коды клавиш, расположенные в порядке возрастания их номеров. То есть клавиша с кодом 22h возвращает цифру 0, с кодом 15h -- цифру 1 и так далее. Соответственно, клавиша с кодом 16h возвратит цифру 0ah, а с кодом 12h -- 0bh. Если мы в этой таблице поменяем два кода местами то цифры, возвращаемые клавишами, имеющими эти коды, тоже поменяются.

000000 22 - код клавиши, возвращающей 0
000001 15 - код клавиши, возвращающей 1
000002 14 - код клавиши, возвращающей 2
000003 13 - код клавиши, возвращающей 3
000004 25 - код клавиши, возвращающей 4
000005 24 - код клавиши, возвращающей 5
000006 23 - код клавиши, возвращающей 6
000007 27 - код клавиши, возвращающей 7
000008 17 - код клавиши, возвращающей 8
000009 26 - код клавиши, возвращающей 9
00000a 16 - код клавиши, возвращающей 0ah
00000b 12 - код клавиши, возвращающей 0bh

Если вы не хотите 'рубить сук на котором сидите', не стоит менять коды клавиш, которые используются для редактирования EEPROM. Например, если вы испортите код клавиши 'Enter', вы больше уже ничего не сможете сделать. Останется только переписывать EEPROM с помощью программатора. И вообще, если вы решили редактировать эту секцию -- сначала трижды подумайте.

С адреса 0ch по 12h находятся значения частот границ ГУН-ов. Они представлены как двухбайтные шестнадцатиричные числа. Причем, для того что бы уложить их в два байта, значение частот было разделено на 256 (по сути, был отброшен младший байт).

00000c 36 - верхняя частота ГУН1 или нижняя ГУН2
00000d 04
00000e d7 - верхняя частота ГУН2 или нижняя ГУН3
00000f 04
000010 91 - верхняя частота ГУН3 или нижняя ГУН4
000011 05
000012 67 - верхняя частота ГУН4 или нижняя ГУН5
000013 06

Младший байт двухбайтного числа находится по младшему адресу. Значит мы имеем:

Vfo12 = 0436h;
Vfo23 = 04d7h;
Vfo34 = 0591h;
Vfo45 = 0667h.

Переведем в десятичный формат и умножим на 256:

0436h = 1078*256 = 275968;
04d7h = 1239*256 = 317184;
0591h = 1425*256 = 364800;
0667h = 1639*256 = 419584.

Таким образом мы получили границы частот ГУН-ов, представленные с точностью 100Гц.

VFO1 - ???????..27.5968мГц;
VFO2 - 27.5968..31.7184мГц;
VFO3 - 31.7184..36.4800мГц;
VFO4 - 36.4800..41.9584мГц;
VFO5 - 41.9584..???????мГц.

Частоты нижней границы нижнего ГУН-а и верхней верхнего в вычислениях не используются и в таблице не приведены.

Теперь, зная границы ГУН-ов для своей ПЧ, вы можете проделать обратную операцию, а именно: взять значение частоты, округленное до 100Гц, разделить его на 256, перевести в шестнадцатиричный формат и занести в соответствующую ячейку EEPROM. Не забудьте, младший байт по младшему адресу!

По адресу 14h находится ячейка, определяющая начальную скорость перестройки частоты валкодером. Ее значение может лежать в диапазоне 0..0ah. 0 -- минимальная скорость перестройки, 0ah -- максимальная.

По адресу 15h находится ячейка, определяющая скорость перестройки в режиме сканирования частоты. Ее содержимое может принимать значение:

00000000b = 0h -- скорость перестройки 400 шагов в секунду;
00000001b = 1h -- скорость перестройки 200 шагов в секунду;
00000011b = 3h -- скорость перестройки 100 шагов в секунду;
00000111b = 7h -- скорость перестройки 50 шагов в секунду;
00001111b = 0fh -- скорость перестройки 25 шагов в секунду;
00011111b = 1fh -- скорость перестройки 12 шагов в секунду;
00111111b = 3fh -- скорость перестройки 6 шагов в секунду;
01111111b = 7fh -- скорость перестройки 3 шага в секунду;
11111111b = 0ffh -- скорость перестройки 1.5 шага в секунду.

По умолчанию установлен код 7h, что соответствует 50 шагам в секунду.

С адреса 16h по 41h находится таблица значений промежуточной частоты для всех диапазонов. Каждое значение представлено четырехбайтным двоичным числом. Если на этом диапазоне частота ПЧ прибавляется к частоте входного сигнала -- число положительное, если вычитается -- отрицательное.


000010 .. .. .. .. .. .. 0f 45 fb ff 50 c3 00 00 50 c3
000020 00 00 50 c3 00 00 50 c3 00 00 b0 3c ff ff b0 3c
000030 ff ff b0 3c ff ff b0 3c ff ff b0 3c ff ff 2f ed
000040 ec ff


Диапазоны расположены в памяти в следующем порядке:

50 - 0fffb450fh;
1.9 - 00000c350h;
3.5 - 00000c350h;
7 - 00000c350h;
10 - 00000c350h;
14 - 0ffff3cb0h;
18 - 0ffff3cb0h;
21 - 0ffff3cb0h;
24 - 0ffff3cb0h;
28 - 0ffff3cb0h;
144 - 0ffeced2fh.

Мы видим, что в таблице присутствуют четыре различных числа: 0c350h, 0fffb450fh, 0ffff3cb0h, 0ffeced2fh.

Первое из них положительное, остальные отрицательные. Знак числа определяет старший бит старшего байта. Если он равен единице -- число отрицательное.

Переведем эти числа в формат, более понятный человеку.

00000c350h = 50000
0ffffffffh-0fffb450fh = -4baf0h = -310000
0ffffffffh-0ffff3cb0h = -0c34fh = -49999
0ffffffffh-0ffeced2fh = -1312d0h = -1250000

На диапазонах 1.9, 3.5, 7, 10 значение ПЧ равно 50000 (5 мГц, округленное до 100Гц), на 14, 18, 21, 24, 28 -- -49999. На этих диапазонах ПЧ вычитается из рабочей частоты трансивера. Разумеется, эти значения можно скорректировать в ту или в другую сторону, добиваясь точного соответствия частоты приема/передачи и показаний индикатора синтезатора. Таким образом можно скомпенсировать неточность установки частоты опорных кварцевых генераторов.

Особо отметим диапазоны 50 и 144мГц. В этом случае трансивер работает на одном из КВ-диапазонов совместно с трансвертером, переносящим спектр частот приема/передачи, в УКВ диапазон. Например, трансвертер 144 мГц с частотой первого гетеродина 120мГц переносит область частот 24.0..24.5 в диапазон 144.0..144.5мГц. Для правильного отображения на дисплее синтезатора частоты 144мГц при работе в диапазоне 24мГц мы должны занести значение ПЧ:

144-(24-5)=125, где:

125 - значение ПЧ, заносимое в таблицу;
5 - значение ПЧ трансивера;
24 - начало диапазона трансивера;
144 - начало диапазона трансвертера.

Так как это значение вычитается из частоты приема/передачи -- число в таблице должно быть отрицательным.

Таким же образом можно вычислить значение ПЧ для трансвертера 50мГц.

Если ПЧ вашего трансивера отличается от приведенного в данной таблице, таблицу необходимо скорректировать. Для этого, как и в случае занесения значений частот ГУН-ов, надо следовать от обратного. Взять свое значение ПЧ, округлить его до 100Гц, перевести в шестнадцатиричный формат, если на этом диапазоне частота вычитается -- вычесть это число из 0ffffffffh (можно просто побитно проинвертировать и прибавить единичку) и побайтно занести в соответствующие ячейки EEPROM. (Еще раз повторю: младший байт по младшему адресу).

С адреса 46h по 71h располагается таблица диапазонов. Она содержит для каждого диапазона трехбайтное число -- значение частоты, на которую перейдет синтезатор при переключении на данный диапазон и один байт, определяющий состояние порта, управляющего коэффициентом деления внешнего делителя частоты. Таким образом, на каждый диапазон в таблице отведено четыре байта.

000046 fc a6 0 - значение частоты диапазона 50мГц
000049 93 - байт порта

00004a 44 48 00 - значение частоты диапазона 1.9мГц
000049 b3 - байт порта

00004e a0 8c 00 - значение частоты диапазона 3.5мГц
000051 b3 - байт порта

000052 00 13 01 - значение частоты диапазона 7мГц
000055 b3 - байт порта

000056 50 8b 01 - значение частоты диапазона 10мГц
000059 93 - байт порта

00005a 00 26 02 - значение частоты диапазона 14мГц
00005d b3 - байт порта

00005e 08 c3 02 - значение частоты диапазона 18мГц
000061 93 - байт порта

000062 2c 3a 03 - значение частоты диапазона 21мГц
000065 93 - байт порта

000066 a8 cc 03 - значение частоты диапазона 24мГц
000069 93 - байт порта

00006a 90 4d 04 - значение частоты диапазона 28мГц
00006d 93 - байт порта

00006e dc fe 15 - значение частоты диапазона 144мГц
000071 93 - байт порта

Для примера, переведем в десятичный формат частоту диапазона 144мГц:

15fedch = 1441500.

Байт порта может принимать следующие значения:

10010011b = 93h - коэффициент деления 2;
10110011b = 0b3h - коэффициент деления 4;
11110011b = 0f3h - коэффициент деления 8.

Необходимо отметить, что все вышесказанное справедливо для версии программы 1.91a от 26.01.1991г. В последующих версиях возможны некоторые изменения, которые, разумеется, будут отражены в документации к синтезатору.

Здесь можно взять дамп EEPROM (56K) от последней версии программы.

7. Заключение. А что же дальше?

А дальше планируется серьезная переделка 'железа'. Переход с 1508ПЛ1 на однокристальный синтезатор фирмы 'Motorola', использование вместо самодельного ЦАП -- промышленного, например 572ПА1 в оригинальном включении, переход на процессор AT90S4414 или AT90S8515, перевод печатной платы на SMD-компоненты (по-русски говоря, на компоненты для поверхностного монтажа), объединение в одной программе возможностей управления валкодером и функций телеграфного ключа, связь синтезатора с компьютером, а может даже управление синтезатором через радиоканал посредством TNC... Планов много, было бы время и здоровье...

8. Литература

  1. А.Белянский. Синтезатор частоты. 'Радиолюбитель. КВ и УКВ', 4,5/98.
  2. В.Денисов и др. Синтезатор частоты трансивера. 'Радио', 1,2,3/90.

(c)1999г. Alexey L. Beliansky