I²S

I²S (рус. ай-сквэ́ард-эс / и-два-эс) — стандарт интерфейса электрической последовательной шины, использующийся для соединения цифровых аудиоустройств. Применяется для передачи ИКМ-аудиоданных между интегральными схемами в электронном устройстве. Шина I²S передает по разным линиям сигналы синхронизации и сигналы данных, что приводит к снижению фазового дрожания, типичного для систем связи, восстанавливающих сигналы синхронизации из целого потока. Название представляет собой аббревиатуру слов Integrated Inter-chip Sound.

Этот стандарт был введен в 1986 году и последний раз был пересмотрен в 1996 году.

Интерфейс I²S электрически представляет собой 3 проводника, которые идут от активного устройства к пассивному, а также 4 сигнала, им соответствующие следующим образом:

  1. Тактовый сигнал битовой синхронизации (CLK)
  2. Тактовый сигнал фреймовой (по словам) синхронизации (WS)
  3. Сигнал данных, который может передавать или принимать 2 разделённых по времени канала. (SD) [1]

Каналы для приёма и передачи данных разделены, то есть существуют отдельно канал для приёма данных и канал для передачи данных. Контроллер принимает данные, передаваемые звуковым кодеком, но возможна и обратная ситуация.

Существуют два формата передачи данных по звуковому интерфейсу — I²S и DSP (Digital Signal Processing, цифровая обработка сигналов), в которых идет двухсторонний обмен данными, регулируемый активным устройством (контроллером). В формате I²S фреймовая синхронизация задает смену канала. Низкий уровень кадровой синхронизации задает левый канал, высокий — правый. Тактовые сигналы не изменяются (не прерываются) в отличие от приборного интерфейса. Тактовый сигнал подается непрерывно, что упрощает алгоритм.

С приходом сигнала кадровой синхронизации с задержкой на один или два такта начинают передаваться или приниматься данные, причем идет передача начиная со старшего, более значащего разряда. Изменяя длительность кадровой синхронизации, можно изменять число передаваемых разрядов, отсчетов сигналов. Поэтому в общем случае будет число N передаваемых бит — число тактовых интервалов, которые будут использоваться для передачи данных. Но после того как данные требуемой длины переданы, наступает пауза до прихода следующего перехода сигнала кадровой синхронизации. По этому переходу передают или принимают данные по другому каналу. Смещение относительно перехода сигнала кадровой синхронизации до начала приема данных настраивается конфигурированием контроллера, который управляет передачей данных. Далее передаются разряды, которые равны по числу разрядов левого канала и правого канала, это повторяется, то есть попеременно передаются отсчеты левого и правого сигнала.

Согласно заявленной спецификации, стандарт I²S обладает следующими параметрами

  • Программно конфигурируемое разрешение 16/32 бит;
  • Стабильность тактирования: не менее 0,5 %
  • Возможность работать в режимах ведущего и ведомого;
  • Поддержка частот семплирования от 8 до 192 кГц;
  • Два независимых приемопередатчика.[1]

Формат DSP ведет себя иначе — он требует синхронизацию в виде импульса с большой скважностью, каналы передает как удвоенное число разрядов, чтобы упростить прием и передачу. И в этом случае имеется последовательная передача разряда от левого канала, а потом без пропусков разрядов правого канала. Далее следующий импульс приходит и цикл повторяется.

Организация контроллера

[править | править код]

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

Первая часть — сам контроллер со входами. Для работы ему нужен генератор тактовой частоты, который выдает события канала прямого доступа. Прием-передача звука может осуществляться не микропроцессором, а каналом прямого доступа, специальным процессором для ввода-вывода данных. Этот канал прямого доступа нуждается в событиях начала считывания данных регистров приема или передачи данных в регистры передаточные.

Вторая часть — регистры интерфейса, предусмотрены следующие их типы:

  1. Регистры флагов прерывания;
  2. Регистр разрешения прерываний от того или иного источника (по числу флагов прерывания или по числу разрядов регистра разрешения прерываний)
  3. Регистр управления, в котором задаются режимы работы контроллера;
  4. Регистр генератора частоты выборки, в котором можно задавать тактовый сигнал и его частоту для битовой синхронизации — если данные принимаются, то регистр записывает эти данные и те могут быть подсчитаны программно;
  5. Два регистра приема данных;
  6. Регистры передачи данных по каналам, в которых могут быть два 32-х битовых регистра, передаваемых последовательно.

Сигналы прерывания говорят о том, какие события возникли внутри контроллера и нуждаются в обработке. Существуют две группы прерываний: первая есть прерывания, связанные с приемом и передачей данных и событий, вторая — связанные с обработкой и генерацией тактовых сигналов. Она вырабатывает сигналы для канала прямого доступа и контроллера прерываний.

Если устройство пассивное (играет роль ведомого), то сигналы поступают извне в синхронизатор. В одном случае он принимает и усиливает, переформировывает тактовые сигналы, делая из плавных по контуру в четкие и резкие. В другом случае он выдает сигнал синхронизации во внешнее устройство. Сигналы блока, отвечающего за разрешение или запрещение работы, формируются по состоянию бита в регистре управления.

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

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

Приём данных

[править | править код]

Последовательный приёмник четко фиксирует уровни сигналов, которые тактируются синхронизатором. Далее эти данные побитно поступают по линии принимаемых данных в регистр сдвига, который синхронизирует данные от синхронизатора. После того, как регистр сдвига заполнится, он переписывается в буфер регистра приёма. Размер разрядности регистра сдвига задается длиной слова. После того, как буфер регистра регистрирует принятые данные, может произойти расширение знака. Так как заведомо используется формат с фиксированной запятой, надо расширить знак до 32-х разрядов, получив 12 разрядов данных. Старший разряд полученных данных распространяется во все старшие разряды регистра, чтобы было правильное число, представленное в дробном формате.

Передача данных

[править | править код]

Данные из регистра считываются в схему сужения знака, которая отбрасывает лишние разряды, сужает знак, выделяет передаваемые данные и записывает их в буфер передачи. Она сужает знак с разных частей и число записывается в соответствующие разряды передатчика. Как только регистр сдвига освободится, одновременно записываются биты сдвига и начинают выдвигать по одному разряду, начиная со старшего, передавая данные в передатчик, которые передает данные в выходную цепь.

Тактовое питание

[править | править код]

Существует схема, которая отвечает за подачу тактового питания на устройство. Для этого в ней предусмотрен читальный регистр, то есть регистр конфигурации затворов тактового питания. Если подать ноль, то его значение станет единицей и сигнал пойдет. Если будет единица, то произойдет затвор, другими словами тактовое питание при единице на устройство подаваться не будет. Имеются две формулы — тактовая и кадровая синхронизация. В каждой из них берется частота, которая поступает в первый тактовый сигнал и делится на то число раз, которое задано в регистре делителя тактовой частоты или в регистре делителя кадровой частоты.

Завершение ввода-вывода

[править | править код]

Для завершения процесса ввода-вывода необходимо последовательно запретить прерывание, очистить флаги, остановить канал прямого доступа и снять тактовое питание.

Примечания

[править | править код]
  1. [https://web.archive.org/web/20131107141350/http://www.compeljournal.ru/images/articles/2011_2_8.pdf Звуковые возможности микроконтроллера STM32F]. Compeljournal.ru. Дата обращения: 2011. Архивировано из оригинала 7 ноября 2013 года.