Прошивка з розширеним керуванням для трансівера HiqSDRmini2

При створенні трансівера на базі плати HiqSDRmini2.0 виникає проблема коректного управління фільтрами, адже рансивер може працювати з кількома програмами, в кожній реалізований свій алгоритм. Найкраще вирішення проблеми – задати управління безпосередньо у прошивці ПЛІС.
У цій статті я розповім, як налаштувати управління периферією один раз "під себе" і надалі не турбуватися про можливі проблеми, пов'язані з необхідністю налаштування управління з різних програм.
Прошивкаfpga_ver3-sg9mini-2.0_Ex дозволяє задати незалежне управління для16-ти смугових фільтрів приймача,8-ми фільтрів низьких частот передавача, а також скоригувати АЧХ передавача у 12 точках по всьому діапазони. При цьому можливість регулювання потужності з програм зберігається.
За промовчанням, у прошивці задані коефіцієнти для фільтрів, які я планую виготовляти. Параметри такі.
ПФ приймача : 9 фільтрів з безперервним перекриттям частоти, "редівська" схемотехніка.
0-1.5 МГц - байпас, код 0, 1.5-2.5МГц - фільтр 1, код 1, 2.5-4.0М Гц - фільтр 2, код 2
4.0 – 6.0 МГц – фільтр 3, код 3, 6.0 – 7.5МГц – фільтр 4, код 4, 7.5 –12.5М Гц – фільтр 5, код 5
12.5 - 15МГц - фільтр 6, код 6, 15 - 20МГц - фільтр 7, код 7, 20 - 30М Гц - фільтр 8, код 8
30 - 55М Гц - фільтр 9, код 9
ФНЧ передавача : 7 фільтрів, частоти зрізу.
код 0 – відключено, код 1 – 2.5МГц, код 2 – 4.5МГц, код 3 – 8.0МГц, код 4 – 15.0МГц, код 5-20.0МГц, код 6 – 30МГц, код 7 – 55МГц.
Калібрування АЧХ передавача за замовчуванням відключено, оскільки коефіцієнти залежать від конкретного екземпляра трансівера.
Сигнал керування увімкнення передачі інверсний.
Сигнали керуваннявиведені на верхній роз'єм, вихідний код двійковий

Всі вищенаведені значення можна легко змінити та налаштувати під наявні фільтри.
Для цього знадобиться після коригування коефіцієнтів, скомпілювати вихідний код, щоб отримати файл прошивки.
Вихідні коди пошиття можна завантажити тут.
Програматор можна придбати на Aliexpress або Ebay, наприклад, тут .

У Quartus відкрийте проект прошивки, File ->Open Project.
Зліва, вProject Navigator, у розділіHierarchy можна побачити структуру проекту.Ttanceiver - основний модуль проекту. Його можна відкрити, двічі клікнувши за назвою.
У рядку 103 можна змінити полярність вихідного сигналу керування передачею
103 assign Conn_X1 [7] = PTT;
Достатньо перед НІГ поставити знак інверсії "
- кнопка клавіатури поруч із кнопкою "1".
У рядку 134 прописаний наш модуль, під назвоюexcontrol, містить код, який нам необхідно правити.
Відкрити його можна, двічі клацнувши на його назві в Project Navigator.

Починаючи з рядка 25 починається код керування фільтрами приймача.
Працює це дуже просто – програма щоразу перевіряє, чи не перевищує поточне значення частоти певне значення. Таким чином формується "сітка" частот, усередині кожного осередку якої можна задавати вихідний код управління.
Можна змінити частоти розділу фільтрів і код управління для них.
Невеликою проблемою є явна відсутність значень частоти у звичному вигляді – код HiqSDR замість нього використовує значення фази акумулятора для алгоритму Cordic.
Легко перерахувати потрібне значення частоти коефіцієнт за допомогою програмиDDC Tune Phase.

Починаючи з 55 рядка, представлений код управління ФНЧ передавача. Від функціонує так само, тільки перевіряється частота передачі.

За умовчанням використання коефіцієнтів відключено в рядках 102 і 103
102 //level_data 103 level_data // Calibration OFF
Однак, перш ніж включити калібрування, необхідно з'ясувати, які коефіцієнти поправки потрібні для вирівнювання АЧХ передавача.
Для цього необхідно виміряти.
У програмі PowerSDR або QUISK слід виставити всі поправочні коефіцієнти рівня передачі на максимум і заміряти вихідну потужність передавача на зазначених частотах передачі - точках виміру.
Необхідно з'ясувати точку з найнижчим рівнем потужності передачі.
Очевидно, що на частотах 1.8 та 52 МГц спостерігатиметься значний завал. Так як ці частоти використовуються рідко, я рекомендую не враховувати їх і встановити для них коефіцієнти максимальної потужності - 255.
Припустимо, що точка з мінімальною потужністю виявилася 3.6 МГц. Виставляємо для цієї точки коефіцієнт максимальної потужності - 255. Для решти частот ми повинні розрахувати коефіцієнти, які б зменшили їх потужність до рівня точки з мінімальною потужністю. Таким чином, АЧХ передавача вирівняється.
Для цього необхідно поступово зменшувати потужність із програми до досягнення вихідної.потужності рівної потужності мінімальної точки. Для кожної точки потрібно заміряти звичайним цифровим тестером напругу на 20 ніжці мікросхемиAD7801.

Тепер залишилося перерахувати цю напругу поправного коефіцієнта. Оскільки залежність між напругою 0-3.2 вольта та коефіцієнтом 0-255 лінійна, можна скористатися рівнянням пропорції.
Наприклад, потрібно обчислити такий коефіцієнт, щоб напруга становила 1.9 Вольт. 1.9 * 255 / 3.2 = 151
Після завдання всіх коефіцієнтів прошивку необхідно компілювати.Processing -> Start Compilation.
При достатній потужності комп'ютера компіляція завершиться через 41 хвилину. Рекомендується використовувати комп'ютери з процесорами не гірше за Core I3, на більш старих час компіляції може суттєво зрости.
Для прошивки плати виберітьTools -> Programmer. Якщо програматор підключається до комп'ютера вперше, драйвера для нього можна знайти в папці куди встановленийQUARTUS.
У вікні програматора слід вибратиActive Serial Programmer і натиснутиStart.

Під час програмування, шлейф програматора повинен бути підключений до плати правильною стороною відповідно до ключа.
На плату має подаватись її звичайна напруга живлення, а світлодіод повинен тьмяно світиться.
Після перепрошивки, плата трансівера зможе керувати фільтрами незалежно від налаштувань у програмах.