Шифрование 32 логических выводов в 16

Обсуждаем цифровые устройства...
Ответить
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

Доброе время суток, столкнулся вот с такой проблемой:

Разрабатываю электронный модуль с обратной связью, особенность модуля заключается в том, что по каждому из 16 независимых блоков нужно отправлять в систему управления одно из 3 возможных состояний каждого модуля.
Изображение

По идее для такой обратной связи нужна 32-битная шина, но проблема в том, что со системой управления я могу состыковаться только лишь по 16-битной шине (в контроллере только 16 портов ввода/вывода).


Как теоретически можно сжать/зашифровать 32-битную шину в 16-битную так, что-бы можно было собирать информацию о состоянии (одно из 3 возможных состояний) каждого из 16 модулей? Хотел-бы услышать совет, как это можно сделать на CMOS/TTL логике.

P.S. Дискретку и полноценный курс по логическим элементам и синтезу логических схем мне ещё не читали :)
Вложения
ТЗ.png
(6.48 КБ) 506 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3794
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

В принципе, можно передать 3 состояния по одному проводу. Именно, подключить к нему 2 резистора на землю и на питание. Тогда, настроив пин на выход, можно передавать 0 и 1 как обычно. А для 3-го состояния переводить пин на вход и тогда 3-му состоянию будет соответствовать промежуточное напряжение на пине. На стороне приемника применить АЦП/компаратор, или можно поиграть с подключением внутреннего подтягивающего резистора пина на входе. Если логический уровень на входе при этом не будет меняться, то это 0 или 1, а если будет с 0 на 1 - то третье. Думаю, при определенном соотношении резисторов на стороне передатчика и внутреннего подтягивающего можно будет добиться функционирования как описано выше. Надо поэкспериментировать. Еше можно вместо логических уровней передавать по проводу импульсы переменной частоты или скважности и таким образом осуществить кодирование.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Самое простое - разделить передачу во времени, дополнительно назначив признак-адрес данных.
Скажем старшие 4 бита (d15 d14 d13 d12) - номер блока, младшие 2 бита (d1 d0) - данные.
Но это не оптимально.
Лучше та же идеология, но с группировкой. Старшие 2 бита (d15 d14) -адрес группы, младшие - данные по номерам. Как пример
d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0
0 0 x7 x7 x6 x6 x5 x5 x4 x4 x3 x3 x2 x2 x1 x1
0 1 x14 x13 x12 x11 x10 x9 x8
1 0 ------------------------------------- x16 x15
далее уже дешифратором выделяете какие данные куда отсылать
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

Ser60, В принципе можно и так, жаль АЦП в цифровом модуле нет, а вот насчёт поиграться со внутренней потяжкой - вполне годная идея.

Meteor, вот если-бы шифрование с адресацией, как в Вашем примере, можно было-бы заложить на аппаратном уровне - тогда с удовольствием взялся-бы за реализацию, а так по тех.заданию мне нельзя использовать микроконтроллеры для решения данной задачи. В арсенале у меня только 16 из 32 выводов от модуля NI Compact Rio 9403 и неубиваемая буржуйская ТТЛ-логика 54 серии. Ну может ещё какие-нибудь шифраторы на КМОП.
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков

Сообщение Dr. Alex »

Ну а почему нельзя использовать 1-Wire?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Контактная информация:
Реклама
YAA
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Чт авг 06, 2009 20:34:52
Откуда: Новосибирск

Сообщение YAA »

Chiper писал(а):...NI Compact Rio 9403...
Вот недавно делал нечто подобное на этом блоке... :tea:
Нужен мультиплексор 16:1. 4 разряда - вибирают адрес блока. 16 2-х разрядных регистра. Входы данных регистров содиняются в общую шину, 2 разряда.
1 разряд для тактового импульса подаётся на вход мультиплексора. Выходы мультиплексора подключаются к тактовым входам регистров. Итого понадобится 7 разрядов 9403.
Реклама
YAA
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Чт авг 06, 2009 20:34:52
Откуда: Новосибирск

Сообщение YAA »

YAA писал(а):Вот недавно делал нечто подобное на этом блоке... :tea:
Вот как-то так... Мультиплексор и регистры могут быть другими, этот фрагмент схемы - просто для иллюстрации моего предыдущего поста. :sleep:
Вложения
mx.PNG
(31.8 КБ) 489 скачиваний
Грызет канифоль
Аватара пользователя
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва

Сообщение EternalEngine »

Если я правильно понял задачу и сигналы можно разделять во времени, то тебе поможет сдвиговый регистр 74hc595 с последовательным входом и параллельным выходом.
Контактная информация:
Друг Кота
Сообщения: 5232
Зарегистрирован: Пт авг 25, 2006 09:26:19
Откуда: Москва

Сообщение Rokl »

Chiper писал(а):... вот если-бы шифрование с адресацией, как в Вашем примере, можно было-бы заложить на аппаратном уровне - тогда с удовольствием взялся-бы за реализацию, а так по тех.заданию мне нельзя использовать микроконтроллеры для решения данной задачи. В арсенале у меня только 16 из 32 выводов от модуля NI Compact Rio 9403 и неубиваемая буржуйская ТТЛ-логика 54 серии. Ну может ещё какие-нибудь шифраторы на КМОП.
А что самому иаппаратное адресное шифрование каналов не осилить? всего то 2 мультиплексора 16х1 (SN74150)и счетчик(SN7493). Займет всего 5 проводков для 16 блоков. Еще 11 проводков свободны и можно использовать по своему усмотрению.
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Chiper писал(а):вот если-бы шифрование с адресацией, как в Вашем примере, можно было-бы заложить на аппаратном уровне - тогда с удовольствием взялся-бы за реализацию, а так по тех.заданию мне нельзя использовать микроконтроллеры для решения данной задачи.
А где я сказал о микроконтроллере?
И вообще, не забывайте микроконтроллер тоже состоит из аппаратной части. Так что на логике это реализовать можно.
PS Вы бы все ограничения выложили. А то потом выяснится что на шине имеются иные устройства, к тому же она должна быть двунаправленной и тд.
Относительно игр с z-состоянием. Считаю необходимым предостеречь от этого шага - потому как гарантировать что состояние "выключено" это именно 1,8В некорректно. Но ради интереса, поищите на казусе темы трехлетней давности пользователя Майорка, он делал ЦАП на трехстабильных элементах. Местами что-то даже получилось.
Успехов
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

Сообщение Chiper »

YAA писал(а):
Chiper писал(а):...NI Compact Rio 9403...
Вот недавно делал нечто подобное на этом блоке... :tea:
Нужен мультиплексор 16:1. 4 разряда - вибирают адрес блока. 16 2-х разрядных регистра. Входы данных регистров содиняются в общую шину, 2 разряда.
1 разряд для тактового импульса подаётся на вход мультиплексора. Выходы мультиплексора подключаются к тактовым входам регистров. Итого понадобится 7 разрядов 9403.
Огромное спасибо, что-то я до этого не додумался... Хотя буквально на днях читал про них :oops:

Rokl писал(а):PS Вы бы все ограничения выложили. А то потом выяснится что на шине имеются иные устройства, к тому же она должна быть двунаправленной и тд.
Больше на этой шине ничего висеть не будет, двухканальную передачу я не планирую 100%. Оставшиеся 16 выводов на 9403 будут управляющими (1 вывод для каждого модуля).

И вообще, не забывайте микроконтроллер тоже состоит из аппаратной части.
Это я прекрасно понимаю, просто заказчик скептически относится к использованию микроконтроллеров в данном девайсе. :) В принципе на это есть причины, т.к. использование МК предполагает тактирование кварцевым резонатором, а устройство будет использоваться в условия повышенной вибрации. Это может негативно сказаться на тактировании. Кроме того возможна эксплуатация в условиях повышенной радиации.

EternalEngine писал(а):Если я правильно понял задачу и сигналы можно разделять во времени, то тебе поможет сдвиговый регистр 74hc595 с последовательным входом и параллельным выходом.
Ну частота изменений состояний каждого из модулей не велика, я бы даже сказал большую часть времени каждый канал будет устойчиво находиться в одном из 3 возможных состояний. Вот только синхронности/последовательности в изменении состояний каждого из модулей добиться не возможно, каждый канал живёт своей собственной жизнью. Если подробнее:
Устройство должно включиться по команде и тут-же логика должна каждого из 16 каналов должна перевести выводы идущие в NI 9403 в состояние состояние "устройство работает" либо "ошибка". Или возможен такой вариант, что произойдёт нечто мистическое и во время длительной эксплуатации на устройстве по какому-то из 16 каналов сработает защита, в таком случае об ошибке на конкретном канале должен узнать NI 9403. Возможно что какой-то из каналов просто напросто "отвалится", собственно для этого и есть необходимость в третьем состоянии "устройство выключено".
Вот только при всём этом, опрос состояния каждого из каналов должен происходить с частотой не менее 30Гц.
YAA
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Чт авг 06, 2009 20:34:52
Откуда: Новосибирск

Сообщение YAA »

Фрагмент схемы, который я привёл, предназначен для управления 16-ю блоками. Для чтения состояний этих блоков нужно просто добавить по мультиплексору на каждый бит.
Ответить

Вернуться в «Цифровая техника»