Строим цифровой DDC/DUC трансивер своими руками (часть 3)

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

Первым делом был изготовлен ЦАП на DAC904E, о нём писал ранее, к нему приехал хороший трансформатор 1:4, но его установку буду делать в рамках упаковки трансивера в корпус, там буду приводить всё в божеский вид.

Его схема взята из схожего SDR проекта, за что им отдельное спасибо.

Далее предстояла работа по интеграции всего этого хозяйства в код трансивера, по сути это тоже самое что в приёмнике, только наоборот:

  1. Первым делом запускаем кольцевой буффер DMA для получения данных с кодека WM8731.
  2. Далее, по достижению половины или окончания кольцевого буфера копируем содержимое его половины в память и начинаем обработку.
  3. Получаем массив с выборкой одного входящего канала (для микрофона этого достаточно), помещаем его в массив данных I, усиливаем его в необходимое количество раз (регулируется в настройках).
  4. Пропускаем через LPF(фильтр низких частот), реализованный на FIR, используемом в приёмнике.
  5. Далее, в зависимости от USB/LSB модуляции, либо копируем содержимое канала I в канал Q (LSB), либо инвертируем (умножаем на -1) в случае USB.
  6. Применяем преобразование Гильберта, сдвигая фазу канала I на +45 градусов, а Q на -45 градусов.
  7. Помещаем результаты в кольцевой буфер FPGA и ждём отправки.
  8. Приступаем к части высокочастотного кода, который будет работать в FPGA.
  9. Т.к. нам предстоит в 1000 раз поднять дискретизацию сигнала (48кгц в 48мгц на ЦАП/АЦП) то нам потребуется интерполирующий CIC фильтр.
  10. Но у CIC есть большие проблемы с АЧХ, поэтому перед тем как подать на него сигнал, необходимо пропустить его через CIC-компенсирующий фильтр, который рассчитаем и экспортируем в Matlab.
  11. Далее подаём на смесители, к которым дополнительно подключен NCO генератор от приёмника и суммируем результаты для вывода в ЦАП.
  12. В даташите к ЦАП обнаружено, что нулевой сигнал должен подаваться со смещением в 8191 (13 бит). Иначе даже значения 1 и -1 будут максимально раскачивать амплитуду сигнала, и получится эффект, когда тише говоришь — громче передаёшь.
  13. Прогоняем через сумматор, через переключатель приём-передача и выводим данные в ЦАП.

Все, есть ещё многое что необходимо доработать, но нас уже слышно в эфире на несколько милливатт, а это уже хорошее начало.

Файлы и схемы проекта доступны на GitHub аккаунте.

Полезные ссылки, используемые в проекте:

  1. http://www.rfdesign.ru/architecture/tx/tx.htm
  2. https://github.com/df8oe/UHSDR

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *