- •3.2. Использование чисел и констант в языке ahdl
- •3.2.1 Использование чисел
- •3.2.2. Использование констант
- •3.4. Последовательностная логика
- •3.4.1. Объявление регистров
- •3.4.2. Объявление регистровых выходов
- •3.4.3. Создание счетчиков
- •3.5. Цифровые автоматы с памятью (statemashine)
- •3.5.1. Реализация цифровых автоматов (statemachine)
- •3.5.2. Установка сигналов Clock, Reset и Enable
- •3.5.3. Задание выходных значений для состояний
- •3.5.4. Задание переходов между состояниями
- •3.5.5. Присвоение битов и значений в цифровом автомате
- •3.5.6. Цифровоые автоматы с синхронными выходами
- •3.5.7. Цифровые автоматы с асинхронными выходами
- •3.5.8. Восстановление после неправильных состояний
- •3.6. Реализация иерархического проекта
- •3.6.2. Создание и применение пользовательских макрофункций
- •3.6.3. Определение пользовательской макрофункции
- •3.6.4. Импорт и экспорт цифровых автоматов (statemachine)
- •Использование входных буферов плис в качестве элементов памяти конечных автоматов
- •Введение
- •Структуры конечных автоматов классов e и f
- •Синтез конечных автоматов класса e
- •Алгоритм 1
- •Синтез конечных автоматов класса f
- •Программная реализация методов синтеза автоматов классов e и f
- •Результаты экспериментальных исследований методов синтеза автоматов классов e и f
- •Вопрос3.2
- •Последовательный интерфейс spi
- •1 Описание интерфейса i2c
- •Вопрос 3.3Интерфейс Avalon
1 Описание интерфейса i2c
Этот интерфейс был предложен фирмой Philips®, которая применила его для организации связи между микросхемами в своих телевизорах. I2C (аббревиатура слов Inter-IntegratedCircuit), и представляет собой двунаправленную асинхронную шину с последовательной передачей данных. Физически шина I2C представляет собой две сигнальные линии, одна из которых (SCL) предназначена для передачи тактового сигнала, а вторая (SDA) для обмена данными. Для управления линиями применяются выходные каскады с открытым коллектором, поэтому линии шины должны быть подтянуты к источнику питания +5 В через резисторы сопротивлением 1...10 кОм, в зависимости от физической длины линий и скорости передачи данных. Длина соединительных линий в стандартном режиме может достигать 2-х метров, скорость передачи данных – 100 кбит/с.
Все абоненты шины делятся на два класса – "Master" и "Slave". Устройство "Master" генерирует тактовый сигнал (SCL) и, как следствие, является ведущим. Оно может самостоятельно выходить на шину и адресовать любое "Slave"-устройство с целью передачи или приёма информации. Все "Slave"-устройства "слушают" шину на предмет обнаружения собственного адреса и, распознав его, выполняют предписываемую операцию. Кроме того, возможен так называемый "MultiMaster"-режим, когда на шине установлено несколько "Master"-абонентов, которые либо совместно разделяют общие "Slave"-устройства, либо попеременно являются то "Master"-устройствами, когда сами инициируют обмен информацией, то "Slave", когда находятся в режиме ожидания обращения от другого "Master"-устройства. Режим "MultiMaster" требует арбитража и распознавания конфликтов. Естественно, он сложнее в реализации (имеется ввиду программная реализация) и, как следствие, реже используется в реальных изделиях.
В начальный момент времени – в режиме ожидания – обе лини SCL и SDA находятся в состоянии лог. 1 (транзистор выходного каскада с открытым коллектором закрыт). В режиме передачи (рисунок 1) бит данных SDA стробируется положительным импульсом SCL. Смена информации на линии SDA производится при нулевом состоянии линии SCL. "Slave"-устройство может "придерживать" линию SCL в нулевом состоянии, например, на время обработки очередного принятого байта, при этом "Master"-устройство обязано дождаться освобождения линии SCL, прежде чем продолжать передачу информации.
Рисунок 1 – Диаграмма процесса передачи данных по шине I2C
Для синхронизации пакетов шины I2C различают два условия – "START" и "STOP", ограничивающие начало и конец информационного пакета (рисунок 2). Для кодирования этих условий используется изменение состояния линии SDA при единичном состоянии линии SCL, что недопустимо при передаче данных. "START"-условие образуется при отрицательном перепаде линии SDA, когда линия SCL находится в единичном состоянии, и наоборот, "STOP"-условие образуется при положительном перепаде линии SDA при единичном состоянии линии SCL.
Рисунок 2 – Диаграмма "START" / "STOP" условий шины I2C
Передача данных начинается по первому положительному импульсу на линии SCL, которым стробируется старший бит первого информационного байта. Каждый информационный байт (8 битов) содержит 9 тактовых периодов линии SCL. В девятом такте устройство-получатель выдаёт подтверждение (ACK) – отрицательный импульс, свидетельствующий о "взаимопонимании" передатчика и получателя. Следует отметить, что любой абонент шины, как "Master", так и "Slave" может в разные моменты времени быть как передатчиком, так и получателем и в соответствии с режимом обязан либо принимать, либо выдавать сигнал ACK, отсутствие которого интерпретируется как ошибка.
Чтобы начать операцию обмена, устройство "Master" выдаёт на шину "START"-условие, за которым следует байт с адресом "Slave"-устройства (рисунок 3), состоящий из семибитового адреса устройства (биты 1...7) и однобитового флага операции – "R/W" (бит 0), определяющего направление обмена, причём 0 означает передачу от "Master" к "Slave" (рисунок 3а), а 1 – чтение из "Slave" (рисунок 3б). Все биты по шине I2C передаются в порядке старший-младший, то есть первым передаётся 7-ой бит, последним 0-ой. За адресом могут следовать один или более информационных байтов (в направлении, определённом флагом R/W), биты которых стробируются сигналом SCL из "Master"-устройства.
При совершении операции чтения "Master" абонент должен сопровождать прочитанный байт сигналом ACK, если необходимо прочитать следующий байт, и не выдавать сигнал ACK, если собирается закончить чтение пакета (см. рисунок 3б).
