Современная электроника №8/2023
ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 22 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 8 / 2023 правки . Значение частоты синхросиг - нала процессорного IP- ядра , по умол - чанию равное 50 МГц , необходимо задать равным 54 МГц , как показано ниже : #define XTAL (54000000UL) /* Oscillator frequency */ #define SYSTEM_CLOCK XTAL /* 54MHz */ Это связано с тем , что выходная частота системы PLL нашего про - екта ПЛИС , которую предполагает - ся использовать в качестве синхро - сигнала процессорного IP- ядра , была нами задана при конфигурировании PLL равной 54 МГц – удвоенному зна - чению частоты синхросигнала ПЛИС (27 МГц ), как описано в [1]. При обращении к линиям GPIO в программе используются имена GPIO_Pin_0 – GPIO_Pin_15, так как процессорное IP- ядро Gowin_EMPU_ M1 поддерживает в ПЛИС перифе - рийное IP- ядро GPIO, состоящее из 16 линий GPIO. Установка и сброс выходов GPIO в программе осу - ществляются с помощью стандарт - ных функций GPIO_SetBit() и GPIO_ ResetBit() соответственно . Чтение входа GPIO в программе осущест - вляется с помощью функции GPIO_ ReadInputDataBit(). Проверка принятия байта данных через UART осуществляется с помо - щью следующей программной кон - струкции : //------------------------- #define Simvol_UART_OK ‘A’ // символ, ожидаемый на при- ёме UART // Проверяем, не принят ли символ через UART if ((UART0->STATE & UART_ STATE_RXBF)) { DATA_UART_RX = UART_ ReceiveChar(UART0); // Если принят, сохраняем его // проверяем, не ожидаемый ли символ принят if (DATA_UART_RX == Simvol_ UART_OK) { UART_Send_OK (); // если ожидаемый, отвечаем OK GPIO_SetBit(GPIO0,GPIO_ Pin_15); // уст. контрольный выход ПЛИС } else { UART_Send_ERR (); // если другой, отвечаем ERR GPIO_ResetBit(GPIO0,GPIO_ Pin_15); // сбр. контрольный выход ПЛИС } } //------------------------- Передача байта данных через UART осуществляется с помощью стандартной функции UART_SendChar(). При старте программа выдаёт через UART начальное приветствие : «Test IP-Core soft Keil». После завершения написания исход - ного кода необходимо произвести его компиляцию . Для этого в главном меню нужно выбрать : Project > Rebuild all target files или кликнуть на иконке на инструментальной панели . После завершения компиляции необходимо убедиться в отсутствии ошибок и заме - чаний , информация о которых выводит - ся в поле Build Output в нижней части окна IDE ARMKeil MDK, как показано на рис . 9. В частности , без ошибок и замечаний должны быть выполнены две пользовательские команды , испол - няемые после сборки проекта . Инфор - мация об их выполнении предваряет - ся в поле Build Output следующими префиксами . After Build – User command #1: After Build – User command #2: В заключение необходимо убедить - ся , что в каталоге PROJECT нашего проекта появились четыре выходных файла с именами itcm0–itcm3, которые далее будут использоваться в качестве входных в проекте ПЛИС c программ - ным процессорным IP- ядром . Для получения дополнительной информации по использованию IDE ARM Keil MDK для разработки встро - енного ПО процессорных IP- ядер ПЛИС GOWIN рекомендуется обратиться к источнику [3]. Разработка аппаратной части проекта ПЛИС с программным IP- ядром в GOWIN FPGA Designer В среде IDE GOWIN FPGA Designer открываем проект ПЛИС fpga_ project из каталога Proba. В главном меню «Tools» выбираем инструмент «IP-Core Generator», далее в открыв - шемся окне выбираем : Soft IP-Core > Microprocessor System > Soft-Core-MCU > Gowin_EMPU_M1. При выборе курсо - ром позиции Gowin_EMPU_M1 справа появляется описание этого процессор - ного IP- ядра , как показано на рис . 10. Слева на рисунке представлен пере - чень поддерживаемых инструментом «IP-Core Generator» в ПЛИС GOWIN аппаратных модулей и программных IP- ядер . Позиции доступных для син - Рис . 8. Страница «Debug» окна настройки проекта Рис . 9. Безошибочное завершение компиляции проекта
RkJQdWJsaXNoZXIy MTQ4NjUy