Введение
Тестирование цифровых устройств и микросхем является неотъемлемым этапом их производства и верификации. В аппаратных стендах тестирования широко применяется связка персонального компьютера и USB-UART преобразователя для передачи тестовых данных на тестируемое изделие [1]. Несмотря на простоту и универсальность данного подхода, он обладает существенным ограничением: операционная система вносит межпакетные задержки в диапазоне 1–15 мс между последовательными UART-пакетами, тогда как время передачи одного пакета составляет единицы — десятки микросекунд. При увеличении объёма передаваемых данных или символьной скорости доля накладных расходов возрастает и начинает доминировать в структуре суммарного времени передачи, что непосредственно влияет на производительность стенда и себестоимость продукции при серийном тестировании.
Целью настоящей работы является разработка аппаратного модуля на базе ПЛИС, обеспечивающего автономное чтение данных из встроенной SPI Flash-памяти и их последовательную передачу через интерфейс UART без постоянного участия внешней вычислительной системы.
Концепция решения
Предложенное решение основано на переносе функций хранения, обработки и передачи данных непосредственно на устройство на базе ПЛИС. В качестве аппаратной платформы использовалась отладочная плата Nexys A7–100T на базе ПЛИС XC7A100T-1CSG324C [5]. Существенным преимуществом данной платформы является наличие встроенной SPI Flash-памяти S25FL128S [6], расположенной на одной печатной плате с ПЛИС, а также поддержка загрузки конфигурации непосредственно из неё.
Конфигурация ПЛИС и тестовые данные предварительно записываются во Flash-память средствами внешней ЭВМ. При включении устройство автоматически загружает конфигурацию и получает доступ к данным без участия ЭВМ; передача данных далее осуществляется автономно средствами ПЛИС, что полностью исключает влияние межпакетных задержек операционной системы.
Разработка RTL-модулей
Все модули системы разработаны на языке SystemVerilog в среде Vivado. В каждом модуле определён пользовательский перечислимый тип state_t для описания состояний конечного автомата, что повышает читаемость кода и упрощает отладку. Сигналы разделены на текущие (q) и последующие (d) значения — типовой приём при проектировании последовательностной логики, предотвращающий образование защёлок и неопределённых состояний.
Модель Flash-памяти. Первоначальной задачей являлась разработка поведенческой модели Flash-памяти, необходимой для отладки основного модуля без физического устройства. Модель реализует приём команд по SPI, чтение идентификатора устройства, чтение данных по указанному адресу и передачу данных по линии MISO. Работа построена на конечном автомате с состояниями IDLE, COMMAND_CATCH, SEND_ID, READ_ADDR, SEND_DATA, SYNC.
Основной модуль SPI-взаимодействия. Модуль формирует SPI-команды, передаёт адресную информацию и принимает данные по интерфейсу SPI, реализуя полный цикл обмена: управление сигналом Chip Select, последовательную передачу команд и адресов по линии MOSI, приём данных по линии MISO и синхронизацию операций. Конечный автомат модуля включает состояния IDLE, COMMAND_READ_RECEIVE, COMMAND_RECEIVE, FEEDBACK, DATA_FEEDBACK, DATA_UART_BYTE, DATA_BITS_S. После получения каждого байта данных выполняется переход в состояние DATA_UART_BYTE для его передачи через UART с одновременной инкрементацией адреса считываемой ячейки, что позволяет избежать хранения большого массива данных во внутренней памяти ПЛИС.
Модуль UART-передатчика. Реализует последовательную передачу данных стандартным кадром из 10 бит: стартовый бит, восемь информационных бит, стоп-бит; бит чётности не используется. Скорость передачи определяется параметром CLK_CYCLES_ON_BIT, что позволяет адаптировать модуль под различные значения baud rate.
Формирование тактового сигнала. Для тактирования интерфейса SPI использовался встроенный IP-блок Clocking Wizard, понижающий системную частоту 100 МГц до 25 МГц. Поскольку прямое назначение тактового сигнала на встроенную конфигурационную Flash-память через файл ограничений XDC невозможно, для вывода сигнала flash_clk использован специализированный примитив STARTUPE2, предоставляемый производителем ПЛИС Xilinx и предназначенный для доступа пользовательской логики к выделенным конфигурационным ресурсам кристалла.
Верификационное окружение. Для проверки корректности разработанной логики до её загрузки в ПЛИС был создан тестовый модуль (testbench), моделирующий взаимодействие устройства с поведенческой моделью Flash-памяти. В процессе моделирования формировался массив случайных байтов, записываемый в модель памяти и используемый как эталонный набор данных; по мере считывания каждого байта выполнялось его сравнение с ожидаемым значением. Дополнительно проводился анализ временных диаграмм средствами встроенного симулятора Vivado для контроля корректности формирования сигналов управления SPI и соответствия временных параметров UART заданной символьной скорости.
Заключение
В результате работы разработан аппаратный модуль на языке SystemVerilog, реализующий побайтовое чтение данных из встроенной SPI Flash-памяти и их последовательную передачу через интерфейс UART без участия внешней вычислительной системы. Модульная организация решения (поведенческая модель Flash-памяти, основной модуль SPI-взаимодействия, UART-передатчик, блок формирования тактового сигнала и верификационное окружение) обеспечивает корректность работы устройства, подтверждённую как функциональным моделированием в среде Vivado, так и последующим тестированием на физической аппаратной платформе.
Литература:
- Харрис Д. М., Харрис С. Л. Цифровая схемотехника и архитектура компьютера / пер. с англ. — М.: ДМК Пресс, 2013. — 1664 с.
- Chu P. P. FPGA Prototyping by SystemVerilog Examples: Xilinx MicroBlaze MCS SoC Edition. — Hoboken: John Wiley & Sons, 2018. — 704 p.
- Угрюмов Е. П. Цифровая схемотехника. — СПб.: БХВ-Петербург, 2010. — 816 с.
- Максфилд К. Проектирование на ПЛИС. Архитектура, средства и методы / пер. с англ. — М.: ДМК Пресс, 2007. — 408 с.
- Nexys A7 FPGA Board Reference Manual [Электронный ресурс]. — Digilent Inc. — URL: https://digilent.com/reference/programmable-logic/nexys-a7/reference-manual (дата обращения: 05.04.2026).
- S25FL128P 128-Mbit 3.0 V Flash Memory Datasheet [Электронный ресурс]. — Infineon Technologies. — URL: https://www.infineon.com/assets/row/public/documents/non-assigned/49/infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf (дата обращения: 05.05.2026).
- Vivado Design Suite User Guide: Design Flows Overview [Электронный ресурс]. — AMD Xilinx. — URL: https://docs.amd.com (дата обращения: 06.04.2026).

