Код SOC для приема данных с COM-порта

Код, который получает команды из консоли, к которой обращается  компьютер через  COM-порт. Команды передаются в символьном виде, типа YXXXX\n\r,
где Y — символ, означающий команду, далее любое количество символов цифр XXX и в конце, команды завершения строки \r\n. Код принимает их, переводит в цифровой вид, и передает в регистр на FPGA.

При создании проекта в Quartus`е мы создаем память, двунаправленную, которая с одной стороны подключается к процессору через мост h2p_lw по определенному адресу этой шины, а с другой стороны к  FPGA. Чтобы обратиться к этой памяти, нам сначала надо определить её виртуальный адрес. Для этого, мы открываем файл /dev/mem (33) , и с помощью функции mmap() (38), получаем интересующий нас адрес.  Далее в нем прибавляем адрес моста h2p_lw  и адрес памяти в нем с маскировкой нужных битов (46).

Со строки (48) начинается опрос ввода через консоль, которая открыта через COM-порт. Если приходит буквенный символ, подразумивающий собой команду (50), этот символ запоминается, и начинается преобразование всех последующих пришедших символов цифр ASCII в в десятичные числа (65), пока не придет конец строки. Если приходит что-то другое, то  оно игнорируется (64). Когда приходит конец строки, полученная команда записывается  в память (61). И цикл начинает ждать новую команду.

Сам проект можно скачать здесь.

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

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