OKW: приборные корпуса из Германии

SPI2CF - Модуль WiFi для AVR. Часть 3. Интерфейс SPI2CF на ПЛИС

Законченное WLAN решение для AVR и других микроконтроллеров

Какими будут станции зарядки электромобилей в 2030 году: лучшие решения и мировой опыт для отечественных разработок

Окончание
Начало читайте здесь:

Часть 1. Железо
Часть 2. Программа

Интерфейс SPI2CF, используемый в демонстрационной системе SPI2CF, основан на недорогой ПЛИС. Необходимый пакет поддержки проектирования WebPack ISE development system доступен для свободной загрузки с сайта Xilinx. Таким образом эту микросхему можно использовать для домашних проектов. В проекте используется плис XC9572XL, которая служит для доступа к карте CF с помощью SPI интерфейса внешнего контроллера.

Функциональные блоки SPI2CF

Функциональные блоки SPI2CF

Выбор пал на ПЛИС в корпусе PLCC44, поскольку при использовании соответствующей панельки, ее можно использовать на перфорированной макетной плате. Недостатком этого выбора является тот факт, что в корпусе имеется только 44 вывода, из которых пользователю доступны лишь 34. Оставшиеся 10 выводов нужны для подачи питания и программирования микросхемы. К счастью SPI интерфейсу требуется всего 4 контакта (SCK, SDI, SDO и SS), это обстоятельство также экономит контакты контроллера, подключенного к этому интерфейсу. Для CF интерфейса остается только 30 выводов. CF интерфейс использует 11 линий адреса и как минимум 6 линий сигналов управления доступом (CE, REG, OE, WE, IORD и IOWR). Остается менее 16 выводов, и это делает невозможным реализовать 16 битный CF интерфейс. Поэтому, в данном проекте, используется 8 битный интерфейс CF. Это не может стать ограничивающим фактором, поскольку узким местом является SPI интерфейс, и переключение CF интерфейса из 8 битного режима в 16 битный не увеличит производительности. SPI интерфейс предназначен для работы на скорости около 10 Мбит/с при тактовой частоте AVR контроллера 20 МГц. Таким образом, задача состоит в том, чтобы ПЛИС справилась с этой скоростью передачи данных по SPI.

Передача байта по SPI на скорости 10 Мбит/с занимает 800 нс. Передача байта карте CF, при использовании самого медленного режима CF, занимает 300 нс, следовательно CF интерфейс легко справится с максимальной скоростью интерфейса SPI.

Основы функционирования

Микросхема содержит в себе следующие основные компоненты:

  • Счетчик битов SPI и сдвиговый регистр
  • Машину состояний доступа
  • Счетчик и регистр хранения адреса
  • Синхронизатор для интерфейса CF

Доступ всегда инициируется внешним контроллером через SPI. Запуск нового цикла доступа происходит, когда сигнал SS на несколько наносекунд переходит в высокий уровень. Это перезапускает внутреннюю машину состояний и битовый счетчик, и заставляет микросхему ждать приема нового байта команды. Сам по себе доступ по интерфейсу CF происходит затем автономно, с помощью ПЛИС SPI2CF, в то время как чисто программные драйверы CF генерируют все временные задержки интерфейса CF в программе. Таким образом, микросхема SPI2CF значительно помогает контроллеру управлять слотом CF и, в то же время, увеличивает надежность связи из-за возможности очень точно задавать временные задержки с помощью ПЛИС.

Интерфейс SPI

Последовательный периферийный интерфейс (SPI) – это синхронный последовательный интерфейс. Он использует линию тактового сигнала и отдельные линии для исходящих и входящих данных, по которым байты передаются побитно. Четвертый сигнал, часто называемый SS, используется для выбора SPI устройства и/или синхронизации передачи. Точное назначение этого вспомогательного сигнала меняется от приложения к приложению.

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

В SPI интерфейсе ПЛИС SPI2CF одновременная двунаправленная передача также не используется. Т. е., если в данный момент от контроллера к SPI2CF был послан байт команды, принятый в момент передачи байт от SPI2CF не содержит полезной информации и просто выбрасывается. С другой стороны, при чтении данных с ПЛИС SPI2CF, байт-пустышка с любым значением посылается от контроллера к SPI2CF, а значение имеет возвращаемый в ответ байт.

Текущая версия SPI2CF тестировалась на тактовой частоте интерфейса SPI 8 МГц. Интерфейс CF гарантирует , что время доступа к карте не будет превышать 300 нс при частоте SPI интерфейса до 10 МГц. К сожалению, тест на 8 МГц провалился.

Пример: временные диаграммы команды io_read
Кликните для увеличения


Пример: временные диаграммы команды io_read

Изображенная выше диаграмма иллюстрирует цикл чтения/записи. Первые три последовательности соответствуют сигналу SET_ADDR с 16 битами адреса, загружаемыми в ПЛИС. Последние четыре – команды IO_READ, включая последний байт, передаваемый во время «фальшивой» фазы команды GET_ID. Этим гарантируется отсутствие коллизий, когда следующий байт, считывается из CF в то время, когда последний еще передается по SPI.

Команды интерфейса SPI2CF

В командах используются только 3 бита из 8. В таблице представлены допустимые команды:

Команда

3-битный
код

Байтовый
код

Описание

GET_ID

000

0x00

Чтение 16 битного id ПЛИС

SET_ADDR

001

0x20

Установить 16 битный адрес

REG_READ

010

0x40

Чтение пространства атрибутов CF

REG_WRITE

011

0x60

Запись пространства атрибутов CF

IO_READ

100

0x80

Чтение пространства ввода/вывода CF

IO_WRITE

101

0xa0

Запись пространства ввода/вывода CF

MEM_READ*

110

0xc0

Чтение пространства памяти CF

MEM_WRITE*

111

0xe0

Запись пространства памяти CF

*) Эти команды не используются микросхемой WLAN, и не тестировались

Использование только первых трех бит давало преимущество в первой версии ПЛИС: микросхема знала, что делать уже после приема этих трех бит и могла начать выполнять команду, не дожидаясь получения остальных пяти. Если полученная команда была командой чтения, ПЛИС может произвести чтение с карты CF во время приема этих пяти бит, и контроллер может немедленно начать считывать результат. Таким образом, байт, считанный с CF карты во время приема команды, будет передан в следующем SPI цикле. Это легко увидеть на примере временной диаграммы выше. Первый цикл чтения уже был запущен (CE перешел в низкий уровень), в то время как байт команды IO_READ еще передавался. Последняя версия SPI2CF не использует пяти битовый цикл, а использует команды длиной 8 бит. В этом есть недостаток, но это позволяет повысить скорость SPI интерфейса до 8 МГц. Таким образом, общая производительность значительно увеличивается.
Просмотрев файл avr/cf.c, вы найдете в нем часть драйвера, реализующего этот алгоритм.

Исходный код

Данная разработка является частью проекта SPI2CF и распространяется свободно. Код для ПЛИС написан на языке Verilog. Версии на языке VHDL нет.

Расположение выводов ПЛИС

Ниже представлено расположение выводов ПЛИС SPI2CF, если смотреть снизу панельки PLCC44. Черный треугольник обозначает ключ корпуса.

Расположение выводов ПЛИС SPI2CF

Замечание

Этот чип тестировался только с WLAN картами. Его использование с другими (в том числе картами памяти) картами не тестировалось.

Загрузки

Исходный код ищите в секции загрузок SPI2CF демо проекта.

harbaum.org

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

На английском языке: SPI2CF - WLAN for the AVR. Part 3

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя