2013-01-21
Входные сообщения могут быть разной длины, в зависимости от значения поля EventSync. Если EventSync=0, то поле (4) SyncPortData будет отсутствовать.
Поля во входном сообщении:
1) Поле EventSync
- EventSync=0 — событие без изменений синхронных данных относительно предыдущего события (поле 4 в сообщении отсутствует)
- EventSync=1 — событие с предварительным изменением синхронных данных
2) Поле Events
- ширина поля определяется по формуле log2 (N+M), где N – число синхросигналов, M – число асинхронных сигналов
- Первыми кодируются синхросигналы, затем асинхронные сигналы (см. пример). Фиксируется номер первого асинхронного сигнала
- ClockNumber – число синхросигналов
- AsyncPortNumber – число асинхронных сигналов
- AsyncPortFirstNumber = ClockNumber – порядковый номер первого асинхронного сигнала
- Если срабатывает событие только на одном выводе, то зачем нумеровать синхросигналы и асинхронные сигналы? Можно передавать либо то, либо другое.
3) Поле AsyncPortData
- принимает значение активного асинхронного сигнала
- игнорируется при событии на синхросигнале
4) Поле SyncPortData
- Ширина поля SyncPortDataWidth = числу цифровых синхронных сигналов
- принимает значения синхронных сигналов
Таблица — Поля в сообщении
EventSync | Events | AsyncPortData | SyncPortData |
0 | log2 (ClockNumber + AsyncPortNumber) | 0/1 | SyncPortDataWidth-1:0 |
1 | log2 (ClockNumber + AsyncPortNumber) | 0/1 | – |
Поля в выходном сообщении:
1) Поле Outputs
- Ширина равна числу выходов
2) Поле InternalSignals
- Ширина равна числу внутренних сигналов, выводимых на временные диаграммы
Вопросы
- Как называть файлы?
- Как называть новые архитектуры и entity?
- Начальная установка?
- Что делать с портами типа вх./вых.
Как пеердать сообщения через протокол RS232?!
Поля в сообщении (OLD):
1) Поле ClockDataBlock: кодироние номера активного клока
- Ширина поля ClockWidth = 1, если 1 клок
- Ширина поля ClockWidth = log2 N+1, если N клоков
- При ClockDataBlock = 0, если событие на асинхронном сигнале
- При ClockDataBlock > 0 - номер синхросигнала, на котором прошло событие
2) Поле AsyncPortDataBlock: значения асинхронных цифровых сигналов
- Ширина поля AsyncWidth = числу асинхронных сигналов
Если изменяется значение в посылке по сравнению с предыдущим значением, то считается, что по этому выводу прошло событие (при этом должно быть ClockDataBlock=0)
2.1) Другой вариант реализации поля AsyncPortDataBlock:
- Так как принято, что в один момоент может изменяться только один асинхронный сигнал, то передаётся новое значение и порядковый номер асинхронного сигнала, на котором произошло событие.
- Т.е. поле AsyncWidth = log2 M+1(или + 2-номер и значение) если ClockDataBlock=0, M-число асинхронных сигналов
- Может совместить тогда номера синхронных и асинхронных, и зашивать GENERIC с номером, где заканчиваются одни и начинаются другие
30)
- Возможно есть смысл добавить поле сигнализирующее о том было ли изменение на входных Синхронных сигналах или тока нужно сделать клок
- EventSync=0 - значит все данные без изменений и SyncWidth = 0
- EventSync=1 - Было изменение на шине данных синхронного сигнала и следом за этим полем идет поле шириной SyncWidth.
Чтобы не грузить срезы данных, если изменений не было не засорять так сказать трафик
3) Поле SyncPortDataBlock: значения синхронных цифровых сигналов (все остальные)
- Ширина поля SyncWidth = числу цифровых синхронных сигналов