Программный драйвер для работы с разными видами интерфейсов SPI

В статье описан программный драйвер для работы с разными видами интерфейсов SPI (Serial Peripheral Interface), реализующий переключение линии ввода-вывода при передачи данных через программируемую логическую интегральную схему (ПЛИС).

При подключении аналого-цифрового преобразователя (АЦП) к отладочной плате Altera DE10-Nano по интерфейсу SPI возникла проблема, требующая не стандартного решения. Данная проблема заключается в том, что в САПР Quartus, в IP каталоге имеется готовый блок SPI, который находится в программном средстве Platform Designer (Qsys), и имеет четыре линии для подключения (рис. 1):

  • SCLK — тактовый сигнал;
  • SS_n — сигнал разрешающий передачу/прием данных;
  • MISO — прием данных;
  • MOSI — передача данных.
IP каталог Platform Designer (Qsys)

Рис. 1. IP каталог Platform Designer (Qsys)

В свою очередь АЦП имеет три линии для подключения:

  • SLKC – тактовый сигнал;
  • CSB – сигнал разрешающий передачу/прием данных;
  • SDIO – двунаправленный сигнал приема/передачи данных.

Подключение тактовых сигналов и сигналов разрешения не вызывают затруднений, а сигналы на прием и передачу данных не могут быть подключены на прямую, так как необходим специальный драйвер, отвечающий за своевременное переключение сигналов MISO и MOSI.

Решить данную проблему можно несколькими способами:

  • Аппаратным — добавив к принципиальной схеме несколько элементов, что добавило к изделию, стоимость, вес, а также дополнительное время на монтаж новых компонентов.
  • Программным — перенастроив в Quartus линии MISO и MOSI в одну, разбираясь при этом с кодом, и тратя на это значительную часть времени.
 Схема подключения драйвера

Рис. 2. Схема подключения драйвера

Поэтому возникла идея создать драйвер, реализующий в себе прямое подключение данных информационных сигналов. Подключение драйвера показано на рис. 2.

Диаграмма работы интерфейса SPI

Рис. 3. Диаграмма работы интерфейса SPI

Для того чтобы происходила корректная передача данных необходимо строго выдержать все временные параметры [1], а также выбрать правильный момент переключения драйвера (рис. 3), учитывая при этом и особенности работы интерфейса SPI в Qsys (рис. 4).

Диаграмма работы интерфейса SPI в Qsys

Рис. 4. Диаграмма работы интерфейса SPI в Qsys

Реализация данного драйвера описана на языке Verilog [2] (рис. 5) где:

  • SDIO_reg — регистр в который происходит запись данных с порта ввода-вывода SDIO;
  • SDIO_counter — счетчик положительных фронтов сигнала SCLK;
  • en — сигнал по котором осуществляется переключение;
  • wire_mux, SDIO, MISO — линии подключения.
Описание драйвера на языке Verilog

Рис. 5. Описание драйвера на языке Verilog

Разберем подробно работу данного драйвера. Когда сигнал CSB=1, происходит обнуление регистров SDIO_reg и SDIO_counter и сигнал разрешения en=1. По положительному фронту сигнала SCLK, если сигнал CSB=0, происходит увеличение счетчика SDIO_counter на единицу за такт, и в момент передачи первого бита информации происходит запись этого бита с порта SDIO в первый разряд регистра SDIO_reg.

По отрицательному фронту сигнала SCLK, если сигнал CSB=0, и, если выполняются еще два условия — SDIO_counter≥16, первый разряд регистра SDIO_reg=1, регистр en приобретает значение 0.

К линии wire_mux подключается MOSI, если en=1 и ток течет из MOSI в MISO и в SDIO, иначе линии переходит в третье состояние и тогда по пути наименьшего сопротивления ток течет из SDIO в MISO.

Подробная схема драйвера, сгенерированная в RTL Viewer показана на рис. 6.

Схема драйвера в RTL Viewer

Рис. 6. Схема драйвера в RTL Viewer

Подводя итог, хотелось бы отметить, что данный драйвер является гибким в использовании, простым в перенастройке, если необходимо использовать другой момент времени для переключения линий, а также использует незначительное количество логических элементов и регистров.

Литература
  1. AN-877: Сопряжение быстродействующих АЦП посредством интерфейса SPI
  2. Строгонов А.В. «Реализация алгоритмов цифровой обработки сигналов в базисе программируемых логических интегральных схем». СПБ: Издательство «Лань». 2019.

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

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