Технология дифференциальной передачи сигналов [13, 14] основана на применении двух комплементарных, то есть одинаковых по модулю напряжения, но противоположных по полярности, сигнальных линий (дифференциальной пары) для организации одной линии передачи данных. Общее схематическое изображение дифференциальной линии передачи представлено на рисунке 1.2. [14]
Рисунок 1.2 – Дифференциальная передача сигнала
Логический выход линии данных определяется через разницу напряжений на сигнальных линиях.
Поскольку дифференциальная передача требует две сигнальных линии для представления одной линии данных, ее реализация сложнее и дороже реализации несимметричной передачи, когда требуется всего одна сигнальная линия. Но преимуществ у дифференциальной передачи гораздо больше [13]:
1. Главное преимущество дифференциальной передачи – высокая помехоустойчивость. Поскольку используется два проводника, которые, во-первых, постоянно находятся под напряжением, а во-вторых, это напряжение одинаково по модулю и противоположно по знаку, при появлении внешней помехи она затрагивает оба сигнала в равной степени. Поскольку приемник реагирует на разницу напряжений между сигнальными линиями, на логическом выходе внешняя помеха не сказывается.
2. Еще одно преимущество дифференциальной передачи – малая генерация собственных помех. Каждая сигнальная линия при переключениях сигнала создает собственные ЭМП помех, при этом создаваемые ЭМП очень близки по амплитуде, но противоположны по полярности, соответственно, при условии близкого расположения сигнальных линий (например, при использовании витой пары), помехи от сигнальных линий будут взаимно гасить друг друга.
3. Вследствие высокой помехоустойчивости дифференциальная передача может работать на малых напряжениях, что позволяет использовать низковольтные источники питания и, соответственно, уменьшить потребляемую мощность устройства и повысить рабочие частоты.
Передача данных с помощью дифференциальной пары на электрическом уровне сейчас широко распространена в высокоскоростных интерфейсах передачи данных.
LVDS (Low-Voltage Differential Signaling) – стандарт, регламентирующий технологию высокоскоростной низковольтной дифференциальной передачи данных [15]. Схема типичной LVDS-пары «передатчик-приемник» представлена на рисунке 1.3.
Рисунок 1.3 – Пара «передатчик-приемник» в LVDS
В передатчике находится источник тока номиналом 3.5 мА, который по первой сигнальной линии дифференциальной пары протекает к резистору номиналом 100 Ом, на котором, в свою очередь, появляется напряжение в 350 мВ(дифференциальное напряжение), после чего ток по второй сигнальной линии дифференциальной пары возвращается на линию земли. При прямом направлении тока на выходе приемника появляется логическая единица, при обратном – логический ноль.
Регламентированные стандартом LVDS значения напряжений [16]:
– высокий выходной уровень напряжения передатчика: максимум 1,602 В, минимум 1,249 В;
– низкий выходной уровень напряжения передатчика: маскимум 1,148 В, минимум 1,002 В;
– дифференциальное выходное напряжение передатчика: максимум 454 мВ, минимум 247 мВ;
– напряжение смещения передатчика: максимум 1,375 В, минимум 1,125 В;
– выходное напряжение смещения приемника: максимум 2,35 В, минимум 0,5 В;
– порог чувствительности приемника: <100 мВ;
Обеспечение высокой чувствительности приемника в его диапазоне напряжений обеспечивает хорошую помехоустойчивость и устойчивость к синфазным сдвигам между приемником и передатчиком [15].
Благодаря своим характеристикам LVDS обеспечивает высокую скорость передачи данных при низком энергопотреблении, что играет ключевую роль в таких задачах как обмен данными между DSP и другими устройствами. Для этих целей и существует интерфейс Link.
Интерфейс Link предназначен для передачи данных как между несколькими DSP, так и между DSP и внешними устройствами через порты связи. В рамках данной работы поставлена задача разработать модуль сопряжения с Link, на другой стороне которого стоит DSP 1967ВН028 производства фирмы «Миландр» [17].
Порты связи DSP представляют собой пары «передатчик-приемник» с раздельными LVDS-шинами приема и передачи данных. Разрядность каждой шины – 4 бита, присутствует поддержка однобитного режима передачи данных. Конфигурация Link-порта представлена на рисунке 1.4.
Порты связи поддерживают двойную скорость передачи данных, то есть передачу данных на обоих фронтах тактового сигнала. Данные передаются в формате 128-битных квадрослов. Иллюстрация принципа передачи данных представлена на рисунке 1.5 [18]. Описание выводов Link-порта представлено в таблице 1.3 [17]. На линии LVDS P подается истинное значение сигнала, на линии LVDS N – противоположное.
Рисунок 1.4 – Link-порт, конфигурация связи между приемником (справа) и передатчиком
Рисунок 1.5 – Принцип передачи данных порта связи
Таблица 1.3 – Link, описание выводов
Сигнал |
Описание |
DATO3-0P |
Шина данных передачи, LVDS P |
DATO3-0N |
Шина данных передачи, LVDS N |
CLKOUTP |
Тактовый генератор передачи, LVDS P |
CLKOUTN |
Тактовый генератор передачи, LVDS N |
ACKI |
Входной сигнал подтверждения передатчика |
BCMPO |
Выходной сигнал завершения блока передатчика |
DATI3-0P |
Шина данных приема, LVDS P |
DATI3-0N |
Шина данных приема, LVDS N |
CLKINP |
Тактовый генератор приема, LVDS P |
CLKINN |
Тактовый генератор приема, LVDS N |
ACKO |
Выходной сигнал подтверждения приемника |
BCMPI |
Входной сигнал завершения блока приемника |
С помощью сигнала ACKO приемник указывает передатчику, принимающему сигнал ACKI, что можно продолжать передачу. С помощью сигналов BCMPO передатчик информирует приемник, принимающий сигнал BCMPI, что передача блока данных завершена.
На стороне FPGA требуется реализовать приемник и передатчик данных Link-порта, а также устройства работы с этими данными.
Поскольку модуль сопряжения с Link используется только для связи DSP и FPGA и не предполагается его подключение к внешним устройствам, реализовывать его с применением системы на кристалле в рамках работы нецелесообразно. Следовательно, путей разработки остается немного:
1. Разработать составные части модуля сопряжения с нуля. Возможный вариант такой реализации – разработать приемник и передатчик с помощью модулей LVDS компании Intel. [19] Также для реализации приемника и передатчика нужно разработать схему для поддержки двойной передачи данных. Данный способ достаточно время- и трудозатратен.
2. Взять шаблонные реализации приемника и передатчика Link-порта. В этом случае нужно разработать только устройства работы с данными, а также разобрать и оттестировать работу шаблонных приемника и передатчика.
Поскольку в наличии имелись шаблонные модули для Link-порта, отвечающие требованиям по протоколу интерфейса, было принято решение разработать модуль сопряжения с использованием шаблонных реализаций.
В результате выполнения обзора системы эмулятора и анализа реализуемых интерфейсов передачи были избраны методы разработки каждого модуля (для Ethernet – разработка модуля сопряжения на транспортном уровне с использованием протокола UDP с помощью системы на кристалле типа HPS-SoC, для Link – разработка модуля сопряжения с применением шаблонных модулей приемника и передатчика). Сформулированы конкретные действия, которые требуется произвести в рамках разработки:
– Ethernet: написание UDP-сервера на языке C и модулей работы с памятью на FPGA;
– Link: написание устройств работы с данными, подключение шаблонных модулей;
Данная глава посвящена разработке модуля сопряжения с интерфейсом Ethernet, описанию алгоритмов функционирования модуля и его реализации.
2.1 Описание функционирования модуля сопряжения с Ethernet Модуль сопряжения с Ethernet задействует ARM-компонент и FPGA-компонент SoC, а также память на чипе (On-Chip Memory), через которую FPGA- и АRM-компоненты взаимодействуют. Память на чипе разделена на четыре блока: блок для служебной информации, два блока для входных данных, блок для выходных данных.
Общая
схема модуля сопряжения представлена
на рисунке 2.1.
Рисунок 2.1 – Общая схема модуля сопряжения с Ethernet
На стороне ARM запущен сервер, который принимает с порта и отправляет в порт датаграммы, соответствующие протоколу UDP, а также работает с памятью на чипе. На стороне FPGA происходит выгрузка данных из памяти на чипе в тестируемую цепочку модулей и загрузка в память результатов тестирования.
Сервер, запущенный в HPS-части системы на кристалле, исполняет два сценария: прием с порта и передачу в FPGA служебной информации и входных данных; прием полученных в FPGA в результате тестирования данных и передачу их в порт.
Алгоритм для операции приема:
1. Принять от клиента датаграмму, содержащую служебную информацию (служебная датаграмма).
2. Принять датаграмму, содержащую данные (датаграмма данных).
3. В случае успешного приема датаграмм записать служебную информацию и данные в соответствующие блоки памяти на чипе, в противном случае завершить работу.
4. Перейти в режим ожидания готовности выходных данных.
Алгоритм для операции передачи:
1. По сигналу готовности выходных данных сформировать из данных в выходном блоке памяти на чипе датаграмму выходных данных.
2. Отправить датаграмму выходных данных клиенту.
3. В случае успешной отправки датаграммы перейти в режим ожидания новой служебной датаграммы, в противном случае завершить работу.
Служебная датаграмма содержит следующую информацию:
1. Количество каналов радара.
2. Номер первого блока в цепочке.
3. Номер последнего блока в цепочке.
4. Количество входных данных.
На данном этапе наибольший интерес представляет количество входных данных.
Поскольку всё взаимодействие с Ethernet происходит в ARM-части, в FPGA-части нужно только работать с памятью на чипе, выгружая и загружая данные в соответствующие блоки. Для успешной операции сопряжения нужно выполнить три операции:
1. По сигналу готовности входных данных (успешный прием и выгрузка служебной датаграммы и датаграммы входных данных) выгрузить и обработать информацию из блока служебной информации.
2. Выгружать и передавать на вход цепочки модулей первичной обработки входные данные из одного из блоков входных данных.