|
Параллельный интерфейс, возможно ли создать или существует? |
|
|
|
 |
Ответов
|
Oct 27 2017, 10:55
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(novikovfb @ Oct 27 2017, 12:03)  И как передать 2 одинаковых байта через такой интерфейс? Кодировать поток таким образом, чтобы не было подряд двух одинаковых. Цитата(IJAR @ Oct 27 2017, 11:57)  Возможно ли создать или существует параллельный интерфейс в котором будут только шины передачи данных (например 8) а шина стробирования передачи будет отсутствовать? Возможно. Когда то давно (ещё в своей программистской юности  делал подобное. Да и в стародавние времена видел реализации передачи данных через LPT на другой LPT, судя по скоростным характеристикам которых, там как раз так и передавались данные. Цитата(novikovfb @ Oct 27 2017, 12:48)  Правильно ли я понял, что это будет не параллельный интерфейс, а 8 или сколько там еще одновременно работающих последовательных? Нет. Можно передавать именно параллельно. Ничего трудного нет если немного подумать.
|
|
|
|
|
Oct 27 2017, 14:22
|

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

|
Цитата(jcxz @ Oct 27 2017, 12:55)  Возможно. Когда то давно (ещё в своей программистской юности  делал подобное. Да и в стародавние времена видел реализации передачи данных через LPT на другой LPT, судя по скоростным характеристикам которых, там как раз так и передавались данные. И при этом не использовали, присутствующие в LPT, служебные сигналы, например "Data strobe", а использовали только Data 0-7? Это мазохизм какой-то.
--------------------
Всем творческой удачи и профессионального роста!
|
|
|
|
|
Oct 27 2017, 18:23
|
Гуру
     
Группа: Свой
Сообщений: 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 линий  Если есть 9 линий, то при оптимально построенном алгоритме можно передавать примерно до 8.994 бит данных за одну операцию вывода. Надо просто подмешать сигнал стробирования в данные. При достаточных вычислительных ресурсах на обеих сторонах (приёма и передачи) можно вплотную приблизиться к пределу == 8.994 бит данных за такт на 9-разрядном параллельном интерфейсе.
|
|
|
|
|
Oct 27 2017, 18:43
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(jcxz @ Oct 27 2017, 21:23)  можно вплотную приблизиться к пределу == 8.994 бит данных за такт на 9-разрядном параллельном интерфейсе. Я так понимаю, что это число в итоге зависит от нестабильности кварцевых генераторов приемника и передатчика. Если разница между частотами небольшая, то информация о тактовой частоте приемнику нужна реже. В противном случае, чаще. Предел, равный 8.994 бита, соответствует одному 9-битному слову, отведенному для синхронизации, на 1500 информационных слов. Почему именно такой предел?
|
|
|
|
|
Oct 27 2017, 18:46
|
Гуру
     
Группа: Свой
Сообщений: 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' для кадровой синхронизации.
|
|
|
|
|
Oct 28 2017, 01:50
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(jcxz @ Oct 27 2017, 19:46)  Ну и между кадрами вставляем символы границ кадра == '1' для кадровой синхронизации. и при потере одного бита будет вылетать целый кадр ? или в среднем половина а что будет, если происходит задержка одного или нескольких бит относительно других, как такое принять ? что мешает "неэффективно" использовать девятый (восьмой) бит для простой и надёжной синхронизации ? можно по обоим фронтам на половинной частоте, чтобы полосу не расширять
|
|
|
|
|
Oct 28 2017, 06:29
|
Гуру
     
Группа: Свой
Сообщений: 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 бит для данных можно передавать быстрее.
|
|
|
|
|
Oct 28 2017, 10:32
|
Гуру
     
Группа: Участник
Сообщений: 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 бит для данных можно передавать быстрее. в теории да, когда канал идеальный
|
|
|
|
|
Oct 28 2017, 13:27
|
Гуру
     
Группа: Свой
Сообщений: 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(); ... }
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|