37 / 63 · Теория
Последовательный вход и границы кадра
Определите порядок входов и действительные фронты, рассчитайте размещение битов при последовательно-параллельном преобразовании.
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Превращение временного порядка в позиции вектора
Последовательный вход передаёт один бит на каждом действительном фронте. Для 3-битного регистраРегистр хранит многобитное состояние. Синхронные регистры в этом курсе записывают определённый вход на фронте тактового сигнала. Подробнее с q<={q[1:0],din}, начальным q=000 и входами 1,0,1,1:
| Число принятых битов | din | Новое q |
|---|---|---|
| 1 | 1 | 001 |
| 2 | 0 | 010 |
| 3 | 1 | 101 |
| 4 | 1 | 011 |
Новый бит входит справа, прежние идут к большим индексам. Регистр — скользящее окно последних трёх битов; при приёме четвёртого первый теряется.
Каждый столбец — запись наблюдения одного положительного фронтаПоложительный фронт — момент перехода такта из 0 в 1. Его следует отличать от уровня, означающего весь интервал CLK=1. Подробнее. Входы показаны непосредственно перед фронтом, состояния со словом «после» в имени — сразу после обновления. Выравнивание столбцов обозначает порядок выборок, а не физическую задержку распространенияЗадержка распространения — время от изменения входа до установления правильного выхода. Логическая эквивалентность выражений и их временные характеристики — разные вопросы. Подробнее.
Первый столбец — reset. Из последующих принятых 1,0,1,1 в q остаются только последние три. В последнем столбце первый бит вытесняется.
Показать данные диаграммы
| Сигнал | Диаграмма | Значения шины |
|---|---|---|
| фронт | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q после | 23452 | 000 → 001 → 010 → 101 → 011 |
MSB-first и LSB-first — правила протокола
Если отправить 8-битное значение начиная с MSBMSB — бит с наибольшим позиционным весом. Его индекс зависит от направления объявления вектора, поэтому нельзя всегда считать его битом с наибольшим номером. Подробнее и принять восемь раз указанным способом, восстановится исходный вектор. При отправке от LSBLSB — бит с наименьшим позиционным весом. Проверяйте одновременно направление записи и правила индексации. Подробнее порядок обратный, поэтому нужно менять направление соединений или итоговую перестановку. Это не настройка отображения, а протокол, согласуемый передатчиком и приёмником.
Значение данных не определяет кадр
Нужно состояние, указывающее первый бит, число принятых битов и момент, когда результат можно потреблять. Обычно используют счётчик принятых битов вместе с valid или done. При паузах входа следует считать принятые данные, а не такты.
В интерфейсе ready/validРукопожатие (handshake) — соглашение, по которому передача подтверждается, когда valid передатчика и ready приёмника равны 1 на одном фронте. Оно также задаёт правила удержания данных во время ожидания. Подробнее сдвиг и счётчик обновляются вместе только на фронте, где это условие истинно. Enable лишь для одного из них рассогласует данные и длину. Практикум с непрерывным входом показывает простой случай: данные принимаются на каждом фронте.
Попробуйте сами
После четвёртого бита 8-битного кадра valid остаётся 0 два цикла. Как должны работать счётчик приёма и сдвиговый регистр при ready=1?
Прочитать объяснение
В обоих циклах accept=0, поэтому счётчик и регистр данных хранят состояние вместе. Следующий valid-бит станет пятым. Счёт одних тактов мог бы ошибочно объявить завершение при недостатке данных.