реклама на сайте
подробности

 
 
> Параллельный интерфейс, возможно ли создать или существует?
IJAR
сообщение Oct 27 2017, 08:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



Возможно ли создать или существует параллельный интерфейс
в котором будут только шины передачи данных (например 8)
а шина стробирования передачи будет отсутствовать?


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novikovfb
сообщение Oct 27 2017, 09:03
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



И как передать 2 одинаковых байта через такой интерфейс?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 27 2017, 10:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(novikovfb @ Oct 27 2017, 12:03) *
И как передать 2 одинаковых байта через такой интерфейс?

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

Цитата(IJAR @ Oct 27 2017, 11:57) *
Возможно ли создать или существует параллельный интерфейс
в котором будут только шины передачи данных (например 8)
а шина стробирования передачи будет отсутствовать?

Возможно. Когда то давно (ещё в своей программистской юности wink.gif делал подобное.
Да и в стародавние времена видел реализации передачи данных через LPT на другой LPT, судя по скоростным характеристикам которых, там как раз так и передавались данные.

Цитата(novikovfb @ Oct 27 2017, 12:48) *
Правильно ли я понял, что это будет не параллельный интерфейс, а 8 или сколько там еще одновременно работающих последовательных?

Нет. Можно передавать именно параллельно. Ничего трудного нет если немного подумать.
Go to the top of the page
 
+Quote Post
LII
сообщение Oct 27 2017, 14:22
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 255
Регистрация: 30-01-07
Из: Калининградская обл.
Пользователь №: 24 867



Цитата(jcxz @ Oct 27 2017, 12:55) *
Возможно. Когда то давно (ещё в своей программистской юности wink.gif делал подобное.
Да и в стародавние времена видел реализации передачи данных через LPT на другой LPT, судя по скоростным характеристикам которых, там как раз так и передавались данные.

И при этом не использовали, присутствующие в LPT, служебные сигналы, например "Data strobe", а использовали только Data 0-7? Это мазохизм какой-то.


--------------------
Всем творческой удачи и профессионального роста!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 27 2017, 18:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(LII @ Oct 27 2017, 17:22) *
И при этом не использовали, присутствующие в LPT, служебные сигналы, например "Data strobe", а использовали только Data 0-7? Это мазохизм какой-то.

Нет. Использовали все имеющиеся сигналы для передачи данных. Все, а не только D0-D7.

Цитата(k155la3 @ Oct 27 2017, 19:34) *
Если развить и углУбить мысль в этом направлении, то можно попробовать использовать код Грея,
но для передачи байтов все равно нужна избыточность, хотябы 9 линий sm.gif

Если есть 9 линий, то при оптимально построенном алгоритме можно передавать примерно до 8.994 бит данных за одну операцию вывода.
Надо просто подмешать сигнал стробирования в данные. При достаточных вычислительных ресурсах на обеих сторонах (приёма и передачи) можно вплотную приблизиться к пределу == 8.994 бит данных за такт на 9-разрядном параллельном интерфейсе.
Go to the top of the page
 
+Quote Post
x736C
сообщение Oct 27 2017, 18:43
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(jcxz @ Oct 27 2017, 21:23) *
можно вплотную приблизиться к пределу == 8.994 бит данных за такт на 9-разрядном параллельном интерфейсе.

Я так понимаю, что это число в итоге зависит от нестабильности кварцевых генераторов приемника и передатчика.
Если разница между частотами небольшая, то информация о тактовой частоте приемнику нужна реже. В противном случае, чаще.
Предел, равный 8.994 бита, соответствует одному 9-битному слову, отведенному для синхронизации, на 1500 информационных слов.
Почему именно такой предел?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 27 2017, 18:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(x736C @ Oct 27 2017, 21:43) *
Я так понимаю, что это число в итоге зависит от нестабильности кварцевых генераторов приемника и передатчика.
Если разница между частотами небольшая, то информация о тактовой частоте приемнику нужна реже. В противном случае, чаще.
Предел, равный 8.994 бита, соответствует одному 9-битному слову, отведенному для синхронизации, на 1500 информационных слов.

Нет. При чём тут частоты??? Никакие выделенные сигналы тактирования не нужны - сигнал тактирования можно подмешать в данные. Для достижения максимального использования линий.
Ещё раз: ключевой момент - смешивание сигналов тактирования и данных.

Предположим: для передачи можно использовать например 9 линий некоего параллельного интерфейса (D0...D8). Как наиболее оптимально их использовать с максимальной пропускной способностью при ограниченной полосе частот по этому интерфейсу?
Например так:
Имеем на входе поток байт. Преобразуем его в поток бит. Нарезаем этот поток на 9-битные символы. Их значения будут в диапазоне: 0...511.
Сигналом строба новых данных для приёмника будет изменение состояния линий D0...D8. Это значит, что для передачи слова символа X нужно проXORить его с текущим состоянием линий D0...D8.
Приёмник увидев изменение состояния D0...D8 воспринимает это изменение как сигнал строба и считывает данные, после чего делает XOR с предыдущим состоянием D0...D8 - получает
отправленный символ.
Но конечно так можно передать символы 1...511, а вот символ '0' так передать не удастся. А значит его надо экранировать из потока 9-битовых символов.
Также желательно иметь какой-то символ границы кадра. Например это символ '1'. Таким образом нужно преобразовать поток символов так, чтобы он содержал только символы 2...511.
Самый простой способ экранировать символы '0' и '1' из исходного потока - это типа как в протоколе SLIP для последовательных линий. Но конечно он имеет недостатки - может создавать избыточность передаваемых данных.
Можно придумать более сложные способы экранирования. И более эффективные.
Например:
Если реализовать многоразрядные операции умножения/деления, то можно очень эффективно преобразовать поток 0...511 в поток 2...511. А вот как раз диапазон 2...511 содержит 510 возможных значений, а это равно log(510)/log(2) = 8.994 бит.
Вобщем - если имеем умножитель на N разрядов (скажем 128, а может больше), то преобразуем 9-битовые символы в битовый поток, нарезаем его на сегменты разрядностью (N-9) бит, а далее: последовательно умножаем полученный сегмент на 511, после каждого умножения получая в старших 9 разрядах умножителя значения в диапазоне 0...510, прибавляем к ним 2 и передаём на XOR и в канал.
На приёмной стороне выполняем обратную операцию.
Чем больше разрядность N, тем эффективнее работает алгоритм (тем ближе он к пределу == log(510)/log(2)).
Ну и между кадрами вставляем символы границ кадра == '1' для кадровой синхронизации.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 28 2017, 01:50
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(jcxz @ Oct 27 2017, 19:46) *
Ну и между кадрами вставляем символы границ кадра == '1' для кадровой синхронизации.

и при потере одного бита будет вылетать целый кадр ? или в среднем половина
а что будет, если происходит задержка одного или нескольких бит относительно других, как такое принять ?
что мешает "неэффективно" использовать девятый (восьмой) бит для простой и надёжной синхронизации ?
можно по обоим фронтам на половинной частоте, чтобы полосу не расширять
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 28 2017, 06:29
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Огурцов @ Oct 28 2017, 04:50) *
и при потере одного бита будет вылетать целый кадр ? или в среднем половина

Здесь интерфейс параллельный, а не последовательный - передаются слова.

Цитата(Огурцов @ Oct 28 2017, 04:50) *
а что будет, если происходит задержка одного или нескольких бит относительно других, как такое принять ?

Точно так же как при наличии отдельной линии стробирования.

Цитата(Огурцов @ Oct 28 2017, 04:50) *
что мешает "неэффективно" использовать девятый (восьмой) бит для простой и надёжной синхронизации ?

Мешает Ваше неумение читать исходные сообщения авторов тем.

Цитата(Огурцов @ Oct 28 2017, 04:50) *
можно по обоим фронтам на половинной частоте, чтобы полосу не расширять

Хоть по одному хоть по двум - всё равно используя все 9 бит для данных можно передавать быстрее.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 28 2017, 10:32
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(jcxz @ Oct 28 2017, 07:29) *
Здесь интерфейс параллельный, а не последовательный - передаются слова.

а как же это ?:
Цитата
преобразуем 9-битовые символы в битовый поток

любой сбой и весь поток накрылся

Цитата(jcxz @ Oct 28 2017, 07:29) *
Точно так же как при наличии отдельной линии стробирования.

нет, линия стробирования стробирует уже устоявшиеся данные
тогда как неустоявшиеся данные сами себя стробировать никак не могут - стробов будет 8 штук, по одному на каждую линию

Цитата(jcxz @ Oct 28 2017, 07:29) *
Мешает Ваше неумение читать исходные сообщения авторов тем.

вот пусть и он и ответит, дурацкие желания желательно как-то обосновывать

Цитата(jcxz @ Oct 28 2017, 07:29) *
Хоть по одному хоть по двум - всё равно используя все 9 бит для данных можно передавать быстрее.

в теории да, когда канал идеальный
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 28 2017, 13:27
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Огурцов @ Oct 28 2017, 13:32) *
а как же это ?:
любой сбой и весь поток накрылся

Читайте внимательнее: "это" - описание алгоритма работы ПО.

Цитата(Огурцов @ Oct 28 2017, 13:32) *
нет, линия стробирования стробирует уже устоявшиеся данные
тогда как неустоявшиеся данные сами себя стробировать никак не могут - стробов будет 8 штук, по одному на каждую линию

Почитайте ниже и подумайте "как":
for (;...; recentValue = newValue) {
while (ReadPort() == recentValue);
newValue = ReadPort();
...
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- IJAR   Параллельный интерфейс   Oct 27 2017, 08:57
|- - IJAR   Цитата(novikovfb @ Oct 27 2017, 12:03) И ...   Oct 27 2017, 09:07
||- - Lmx2315   Цитата(IJAR @ Oct 27 2017, 12:07) Просьба...   Oct 27 2017, 09:25
||- - novikovfb   Цитата(Lmx2315 @ Oct 27 2017, 13:25) есть...   Oct 27 2017, 09:48
||- - Lmx2315   Цитата(LII @ Oct 27 2017, 17:22) И при эт...   Oct 27 2017, 14:28
||- - leocat   Цитата(LII @ Oct 27 2017, 15:22) И при эт...   Oct 27 2017, 14:54
|||- - LII   Цитата(leocat @ Oct 27 2017, 16:54) Т.е. ...   Oct 27 2017, 15:18
|||- - IJAR   Цитата(LII @ Oct 27 2017, 18:18) Если исп...   Oct 27 2017, 16:04
|||- - aaarrr   Цитата(IJAR @ Oct 27 2017, 19:04) А то ес...   Oct 27 2017, 16:50
||- - x736C   Цитата(jcxz @ Oct 27 2017, 21:46) Нет. Пр...   Oct 27 2017, 19:09
||- - Огурцов   Цитата(jcxz @ Oct 28 2017, 13:27) Читайте...   Oct 28 2017, 14:48
||- - jcxz   Цитата(Огурцов @ Oct 28 2017, 17:48) вы б...   Oct 28 2017, 22:34
||- - Огурцов   Цитата(jcxz @ Oct 28 2017, 22:34) Когда в...   Oct 29 2017, 01:29
|- - k155la3   Цитата(jcxz @ Oct 27 2017, 13:55) Кодиров...   Oct 27 2017, 16:34
- - iosifk   Цитата(IJAR @ Oct 27 2017, 11:57) Возможн...   Oct 27 2017, 09:39
- - Raven   Так какие проблемы-то? Берете нужное количество ре...   Oct 27 2017, 12:19
- - Сергей Борщ   Поищите в сети книгу "Синхронизация в телеком...   Oct 27 2017, 16:55
- - x736C   Вопрос еще в железе. Если у вас стандартный LPT в ...   Oct 27 2017, 17:51
- - kolobok0   Цитата(IJAR @ Oct 27 2017, 11:57) Возможн...   Oct 29 2017, 12:33
|- - Огурцов   с некоторого весьма далёкого времени lpt имел двун...   Oct 29 2017, 13:57
|- - IJAR   RE: Параллельный интерфейс   Oct 29 2017, 17:49
|- - jcxz   Цитата(IJAR @ Oct 29 2017, 20:49) И тем н...   Oct 30 2017, 12:01
|- - IJAR   Цитата(jcxz @ Oct 30 2017, 15:01) Так отв...   Oct 30 2017, 12:57
- - Shivers   Может немного запоздало. Но да, такие интерфейсы с...   Dec 5 2017, 05:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 04:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01536 секунд с 7
ELECTRONIX ©2004-2016