System of coding and transmission of text messages using programmable logic integrated circuits
System of coding and transmission of text messages using programmable logic integrated circuits
Abstract
The article presents the development of hardware and software unit for coding and transmission of text messages using Morse code on the basis of programmable logic integrated circuits (FPLDs). The main focus is on the design of the device, which includes a user interface, keyboard driver, symbol transmission block and sound generator. The Spartan-6 LX9 debug board was chosen as the hardware platform, ensuring a high degree of integration and efficient resource utilisation. The results demonstrate the device's reliability and performance, as well as its potential for resource-constrained applications such as aviation, maritime navigation and telecommunications. The design features compactness, autonomy and noise immunity achieved through the use of FPLDs. The paper describes in detail the design stages, functional modules of the device and estimation of hardware costs, which amounted to no more than 11% of the available on-chip resources. The prospects of the project development include integration of wireless technologies, optimisation of coding algorithms and expansion of the user interface. The work is of significant interest to specialists in the field of telecommunications and microelectronics.
1. Введение
Телеграфный код Морзе широко используется в проводной телеграфии и радиосвязи как простыми радиолюбителями, так и военными на флоте при передаче сообщений между кораблями с помощью радиотелеграфных, световых и акустических сигналов и представляет большой практический интерес . Ее знание необходимо авиадиспетчерам и пилотам, так как это самый доступный и простой способ передачи и приема сигнала на больших расстояниях и в условиях сильных радиопомех.
Телеграфный код Морзе имеет особенность передачи и приема сообщений человеком без дополнительных технических средств, но скорость передачи невелика, что может привести к ошибкам. Программные способы кодирования, передачи и приема сообщений достаточно распространены и удобны в использовании, но требуют наличия компьютера и доступа в Интернет. Большой интерес и актуальность представляют аппаратные способы кодирования, передачи и приема сообщений. Они автономны, надежны, имеют высокое быстродействие и хорошую помехозащищенность, а также могут иметь сверхмалые габариты, если их реализация выполнена на базе сверхбольших интегральных схем (СБИС). Применение программируемых логических интегральных схем (ПЛИС) в качестве СБИС позволяет существенно повысить скорость разработки устройства и снизить его себестоимость , . Все это делает данную работу актуальной и перспективной для применения в различных сферах, где требуется быстрая и надежная передача данных, также подчеркивается ее новизна.
Целью данной работы является разработка аппаратно-программного блока для кодирования и отправки сообщений кодом Морзе. Основной задачей проекта является создание устройства, которое обеспечит надежную и быструю передачу информации с помощью кода Морзе.
Новизна работы заключается в создании компактного и эффективного устройства для передачи текстовых сообщений кодом Морзе, основанного на аппаратно-программной реализации блока кодирования и передачи информации. Это решение имеет большое практическое значение для различных областей, включая авиацию, морскую навигацию, промышленность и телекоммуникации, где ограниченность ресурсов является ключевым фактором.
2. Существующие решения
Существует множество аналогов устройств для кодирования и отправки текстовых сообщений телеграфным кодом Морзе. Некоторые из них включают в себя:
Ключ Морзе — это устройство, которое позволяет пользователю отправлять сообщения, используя азбуку Морзе. Ключ Морзе состоит из двух рычажков, которые нужно нажимать для создания сигналов точки и тире.
Клавиатура датчика кода Морзе — это устройство для ввода символов азбуки Морзе с помощью кнопок, которые соответствуют точкам и тире. Азбука Морзе используется для передачи информации по радиосвязи с помощью серии коротких и длинных звуковых сигналов (точек и тире). Клавиатура датчика кода Морзе часто используется любителями радиосвязи и операторами связи. При нажатии на соответствующие кнопки формируются последовательности точек и тире, которые могут быть расшифрованы в текст или другую информацию.
Радиостанции могут быть использованы для передачи текстовых сообщений, закодированных в азбуке Морзе, на большие расстояния , . Это может быть полезно в экстренных ситуациях или при работе в отдаленных местах.
Мобильные приложения — существует множество мобильных приложений, которые позволяют пользователям отправлять текстовые сообщения, закодированные в азбуке Морзе. Эти приложения могут быть полезными для людей, которые хотят отправлять сообщения на расстоянии без использования обычной связи , .
Существует большое количество программ для компьютеров, которые предоставляют возможность пользователям отправлять текстовые сообщения, закодированные в азбуке Морзе, посредством различных интернет-сайтов. Такие программы могут пригодиться людям, которым необходимо отправлять сообщения на расстоянии, имея доступ к сети Интернет.
У приведенных аналогов имеются недостатки, такие как дороговизна и использование устаревших приборов. Ограничения по расстоянию, например, мобильные приложения могут работать только в пределах зоны покрытия сети, а радиостанции могут иметь ограничения по передаче сигналов на большие расстояния.
Однако методы аппаратного кодирования, передачи и приема сообщений обладают автономностью, надежностью, высокой скоростью и помехозащищенностью. Более того, с использованием сверхбольших интегральных схем могут быть достигнуты сверхмалые размеры устройства. Применение программируемых логических интегральных схем в качестве СБИС может значительно ускорить процесс разработки и снизить стоимость устройства. Всё это имеет большое преимущество перед другими аналогами , .
3. Выбор аппаратной платформы для реализации проекта
В качестве аппаратной платформы для реализации и тестирования блока кодирования и отправки текстовых сообщений была выбрана отладочная плата стартового комплекта Spartan-6 LX9 Evaluation Kits
, . Этот чип имеет высокую степень интеграции, большое количество триггеров и логических ресурсов. Отладочная плата предоставляет доступ к различным ресурсам и интерфейсам, необходимым для разработки и проведения экспериментов (см. рисунок 1). Кроме того, отладочная плата обеспечивает удобное программирование и конфигурирование с помощью программного обеспечения Xilinx, которое предлагает широкий спектр инструментов для разработки и отладки FPGA-программ .
Рисунок 1 - Отладочная плата стартового комплекта Spartan-6 LX9 Evaluation Kits
4. Пользовательский интерфейс

Рисунок 2 - Блок-схема алгоритма и отправки сообщений кодом Морзе
5. Проектирование драйвера клавиатура

Рисунок 3 - Функционал ползунков и кнопок
· Порт PS2_DATA1 — вход последовательного приема битов клавиатуры.
· Порт PS2_CLK1 — вход приема синхроимпульсов с клавиатуры для корректной передачи битов.
· Порт CE — вход разрешения синхронизации
.· Порт CLK_50MHZ — вход приема тактовых импульсов от кварцевого генератора 50 МГц.
· Порт SCANCODE (7:0) — выходная 8 разрядная шина, по которой передается код клавиши.
· Порт BTN_PRESS — выход генерирования нового импульса, нажатой клавиши.
Драйвер состоит из следующих блоков:

Рисунок 4 - Блок K_BLOCK_RECEIVER

Рисунок 5 - Блок KEY_FILTER
6. Проектирование блока микроконтроллера

Рисунок 6 - Микроконтроллер M_CONTROLLER
Когда на входе RESET устанавливается «1», то на выходе MB_RESET формируется строб, который передает сигнал о сбросе блока передачи символов.
Когда строб поступает на выход MB_START, то информация из памяти контроллера выводится на выходы LCD (10:0) и MORSE_CODE (9:0), предназначенные для работы с ЖК-дисплеем и передачи символов соответственно.
Когда контроллер заканчивает отправку всей необходимой информации, на выходе TR_END устанавливается значение «1».

Рисунок 7 - Состав микроконтроллера
7. Проектирование блока передачи символов

Рисунок 8 - Интерфейс блока передачи символов азбукой Морзе
· MORSE_CODE(9:0) — 10-разрядная входная шина, на которую подаются длина и код передаваемого символа, где старшие 3 бита хранят длину кода Морзе символа, а младшие 7 бит – код Морзе символа;
· START — вход начала передачи символа, на который подается единичный импульс после выставления значений длины и кода передаваемого символа на вход MORSE_CODE(9:0);
· CE — вход разрешения синхронизации, на который подается «1», если блок используется, и «0», если блок не используется;
· RESET — вход сброса блока в начальное состояние, на который подается единичный импульс перед началом передачи последовательности символов;
· CLK_TR — вход для тактового сигнала передачи символов, по импульсам которого будет происходить передача элементов символа на линию связи и отсчитываться паузы;
· CLK_50MHZ — вход для вспомогательного тактового сигнала с частотой 50 МГц, частота которого должна превышать частоту тактового сигнала передачи символов в несколько раз;
· READY — выход сигнала готовности, на котором появляется «1» в случае, когда блок MORSE_BLOCK готов к передаче следующего символа;
· LINE — выход для линии передачи, на который выводятся передаваемые короткие и длинные единичные импульсы в соответствии с точками и тире кода передаваемого символа и нулевые паузы между элементами символа, между символами и между словами. Код Морзе с линии LINE считывается потребителем по срезу сигнала CLK_TR.
Для корректной передачи последовательности символов на высоких частотах передачи необходимо, чтобы микропроцессор успел за один служебный такт тактового сигнала передачи символов выполнить опрос сигнала READY, выбор нового символа передаваемого сообщения, его кодирование, выставление кода символа и его длины на вход MORSE_CODE(9:0), подачу единичного импульса на вход START.
Алгоритм работы MORSE_BLOCK для передачи символов по коду Морзе включает следующие шаги:
1. На вход RESET подается сигнал «1» перед началом передачи, чтобы вернуть блок в начальное состояние.
2. Передача символов осуществляется по одному символу за раз. Для передачи каждого символа пользователь (человек или микропроцессор) опрашивает сигнал READY для проверки готовности блока MORSE_BLOCK к передаче очередного символа. При подтверждении готовности пользователь выставляет на вход MORSE_CODE (9:0) длину и код символа или пробела в сообщении, а затем подает единичный импульс на вход START. Эти действия занимают один такт тактового сигнала передачи.
3. Если передаваемый символ является первым в сообщении или перед ним есть пробел, то блок MORSE_BLOCK не осуществляет предварительную паузу перед выводом кода символа. Если перед передаваемым символом нет пробела (то есть символ находится в середине слова), то блок MORSE_BLOCK выводит на линию предварительную паузу, равную двум тактам тактового сигнала передачи с учетом такта обслуживания. Если передается пробел, то блок MORSE_BLOCK выводит на линию паузу, длиной в шесть или пять тактов тактового сигнала передачи, в зависимости от того, был ли предыдущий символ пробелом или нет, и с учетом тактов обслуживания.
4. Элементы передаваемого символа выводятся на выход для линии передачи LINE в виде единичных импульсов с длительностью 1 такт тактового сигнала передачи для точек и 3 такта тактового сигнала передачи для тире.
5. После каждого элемента (точки или тире) блок MORSE_BLOCK делает паузу в 1 такт тактового сигнала передачи, за исключением последнего элемента.
8. Проектирование звукового генератора

Рисунок 9 - Интерфейс звукового генератора
На вход PLAY поступает конъюнкция сигналов LINE (с блока передачи символов) и SW(0), отвечающей за включение/выключение линии передачи. На выходе SOUND генерируется звук, когда на вход PLAY поступает единичный сигнал. CLK_50MHZ — вход для вспомогательного тактового сигнала с частотой 50 МГц.
9. Проектирование блока изменения частоты передачи сообщения

Рисунок 10 - Интерфейс блока управления параметрами SYNC_BLOCK
При вращении энкодера вправо по часовой стрелке сигнал передается на вход Rot_A, который используется для увеличения параметра. А при вращении эн-кодера влево сигнал передается на вход Rot_B, который используется для уменьшения параметра. Важно отметить, что энкодер является устройством для изменения параметров, и его вращение вправо или влево соответствует инкременту или декременту соответствующего параметра.
Порт CE служит для управления сигналом синхронизации. Сигнал на этот порт формируется на основе состояния переключателя SW3. Если значение SW3 равно нулю, то блок изменения частоты передачи сообщения будет заблокирован, и изменение параметров становится невозможным. Но если значение SW3 не равно нулю, то разрешается выбор и изменение параметров блока.
Порт CLK_50MHZ используется для ввода тактовой частоты, которая синхронизирует работу блока изменения частоты передачи сообщения с общей системной тактовой частотой. Иными словами, этот порт служит для обеспечения согласованности времени между операциями блока изменения частоты передачи сообщения и другими устройствами, работающими на общей системной тактовой частоте.
На выходе блока управления параметрами формируются два выходных порта, которые предоставляют информацию о выбранных параметрах. F_INDEX(4:0) является выходным портом, который генерирует пятиразрядный двоичный код F_INDEX, используемый для указания выбранной частоты. Каждому значению кода соответствует определенная частота, что позволяет выбрать одно из тридцати двух доступных значений. Другими словами, F_INDEX(4:0) — это порт вывода, который формирует код для выбора нужной частоты из 32 возможных вариантов, где каждое значение кода соответствует определенной частоте. CLK_OUT является выходным портом, который формирует выходную частоту в десятичном коде. Каждое значение соответствует двоичному коду на выходе F_INDEX.

Рисунок 11 - Функциональная схема блока управления параметрами CONTROL_BLOCK
· ROT_A — входной порт, который принимает сигнал от энкодера при его вращении вправо по часовой стрелке.
· ROT_B — входной порт, принимающий сигнал от энкодера при его вращении влево.
· CE — входной порт разрешения синхронизации.
· CLK_50MHZ — входной порт для тактовой частоты, используемой в блоке управления энкодером.
· Выходные порты блока управления энкодером следующие:
· PULSE_RIGHT — выходной порт, который формирует сигнал-импульс при вращении энкодера вправо по часовой стрелке. Этот сигнал используется для увеличения выбранного параметра.
· PULSE_LEFT — выходной порт, который формирует сигнал-импульс при вращении энкодера влево. Этот сигнал используется для уменьшения выбранного параметра.
· SAMPLE_RATE — выходной порт, который формирует сигнал, отражающий текущую выбранную частоту дискретизации.

Рисунок 12 - Функциональная схема блока управления энкодером
10. Схемотехническое проектирование общей архитектуры устройства

Рисунок 13 - Общая архитектура блока кодирования и отправки текстовых сообщений кодом Морзе
При написании программной части в двоичном коде необходимо подобрать соответствующую систему команд для процессора. В данном проекте было выбрано 29 команд, каждая из которых имеет свой уникальный шестизначный код CODE(5:0) и поле данных Data(11:0) длиной 12 символов.
11. Разработка главной программы и подпрограммы
Разработка программы происходит в Excel, что облегчает разработчику в составление алгоритма и нахождение ошибок, если они присутствуют. Код программы пишется в двоичном коде и загружается в блочную память.
В главной программе хранятся команды задержек, команды переходов и команды вызова из подпрограммы. Всё это снижает сложность самой программы. Главная программа содержит 91 команд, которые позволяют реализовать логику работы блока кодирования отправки сообщения.
В подпрограмме можно выполнять более сложные команды, так, например записывать в память CG RAM, чтобы инициализировать нужный символ, которого нет в таблице.
В подпрограмме реализовано 307 команд, где 32 команды отведены на запись в блочную память, 73 команды для программирования 8 символов, 194 команды на формирования слайдов для вывода на дисплей. В остальных пяти подпрограмм описана инициализация дисплея.
Важной частью работы являются таблицы подстановок, хранящиеся в памяти ROM_1024х18, которые выполняют различные преобразования с данными. При выполнении программы или подпрограммы, устройство может обращаться к этим таблицам для выполнения операций на основе заданных значений в таблицах.
12. Оценка аппаратных затрат для разработки устройства
Средствами САПР выполнены оценки аппаратных затрат ресурсов кристалла на реализацию схемы устройства блока кодирования и передачи текстовых сообщений азбукой Морзе. Данные оценки приведены в (см. таблицу).
Таблица 1 - Оценки аппаратных затрат ресурсов кристалла на реализацию блока кодирование и передачи текстовых сообщений кодом Морзе
Наименование используемого ресурса | Используемые ресурсы кристалла | ||
Доступно единиц ресурса | Использовано единиц ресурса | % использования | |
Секции КЛБ | 6878 | 763 | 11 |
Триггеры КЛБ | 13767 | 449 | 3,3 |
4-входовые таблицы преобразования LUT | 13767 | 943 | 6,8 |
Блоки ввода-вывода | 473 | 56 | 9,7 |
IP-ядро (RAM) | 23 | 2 | 8,7 |
По полученным данным можно сделать вывод о затратах основных аппаратных ресурсов кристалла ПЛИС (триггеров, таблиц преобразования LUT, секций КЛБ) менее 11%, что свидетельствует об экономичности разработанной схемы устройства и хорошем качестве проектирования. Затраты блока ввода-вывода в данном случае не так существенны, так как они занимают меньше одной десятой части кристалла.
13. Заключение
В рамках работы была достигнута цель по разработке блока кодирования и передачи текстовых сообщений кодом Морзе. Интерфейс пользователя был настроен так, что без каких-либо знаний схемотехники, им сможет управлять любой абонент.
Результаты экспериментальных наблюдений показали, что схема блока кодирования и передачи текстовых сообщений азбукой Морзе функционирует исправно и надежно. Аппаратные затраты на её реализацию составили не более 11% от имеющихся логических ресурсов кристалла и ресурсов памяти, что свидетельствует об общей эффективности проектирования и открывает возможности для дальнейшего развития проекта.
В перспективе работа может быть расширена за счет оптимизации алгоритмов кодирования, направленной на повышение скорости передачи сообщений без потери надежности. Одним из ключевых направлений развития является интеграция беспроводных технологий, таких как Bluetooth или LoRa, что позволит организовать беспроводную передачу данных и значительно расширит сферу применения устройства.
Дальнейшее развитие пользовательского интерфейса может включать внедрение сенсорного экрана или голосового ввода, что повысит удобство взаимодействия с системой. Важным направлением является совершенствование помехозащищенности за счет разработки алгоритмов коррекции ошибок и адаптивной фильтрации сигналов, что особенно актуально для работы в условиях сильных электромагнитных помех .
Перспективным также представляется создание миниатюрных версий устройства на базе современных программируемых логических интегральных схем, таких как Artix-7 или Zynq, что позволит уменьшить габариты и энергопотребление системы. Дополнительным направлением развития может стать автоматизация декодирования входящих сигналов с использованием методов машинного обучения , что упростит процесс приема и обработки сообщений .
Реализация этих направлений позволит не только повысить функциональность и надежность устройства, но и расширить области его применения, включая системы аварийной связи, интернет вещей и военные коммуникации, обеспечивая его востребованность в современных условиях.
