Я ищу мультиплексор IC с 128: 1 или более входов (256 было бы неплохо). Я бы подумал, что такое устройство будет довольно распространенным, но мне трудно его найти. Может быть, я смотрю в неправильных местах, но почему-то мне кажется, что я что-то упускаю - возможно, большие входные мультиплексоры не так часто используются? Если так, какова альтернатива?
Макс. Мне удалось найти это верный старый 74150 с 16 входами.
Я понимаю, что могу создать большой мультиплексор, комбинируя 16 входных мультиплексоров - но я надеюсь на более интегрированное решение.
Я разрабатываю схему, которая может проверить на обрыв и короткое замыкание в автомобильной электропроводке. Типичный жгут может содержать около 200 проводов. В настоящее время схема использует 16 мультиплексоров для обработки 128 проводов.
Мультиплексоры подключены к одному 16-входному мультиплексору, который, в свою очередь, подключен к разъему uC. Аналогично, на другом конце 16 демультиплексоров. Демультиплексоры переключают провода на напряжение. В то же время этот провод подключается к одному из входов uC через мультиплексор.
Если провод в порядке, ОК должен видеть высокий на своем входе. ОК проверяет все остальные провода. Если какой-либо из них высокий, это означает, что между этими двумя проводами есть короткое замыкание.
Примечание: эта схема не была разработана мной. Это было сделано в 2003 году. Я просто хочу улучшить эту схему. Также обратите внимание, что ни один из жгутов проводов не содержит шину данных CAN или какую-либо другую шину. Это просто простые провода для питания и сигналов.
Вот очень грубая блок-схема, которую я быстро сделал только для этого поста. Я надеюсь, что это проясняет проблему, так как английский не является моим родным языком, и у меня есть проблемы с объяснением вещей через текст. Хотя диаграмма не очень хорошая, я надеюсь, что она улучшит ситуацию. Линии, идущие в сторону от demux и mux от MCU, являются адресными линиями.
Обратите внимание, что один из проводов разделен на 3. Я сделал это намеренно, чтобы показать, что некоторые соединения один-ко-многим, а не просто один-к-одному. Самый сложный, который я видел, это провод, разделенный на 60 соединений. Вот почему у demux и mux есть отдельные адресные строки. Демукс может быть при входе №. 20, тогда как мультиплексор может переключаться между 20,21,22 и т. Д. Проверьте все линии, которые соединены от линии 20.
Если вы считаете, что есть лучший способ сделать это, пожалуйста, дайте мне знать.
источник
Ответы:
Хотя огромный mux / demux, безусловно, будет работать, подключение нескольких мультиплексоров 16: 1 - большая работа, и у нее есть некоторые ограничения, которые могут быть или не быть проблемой. Более традиционный подход заключается в использовании сдвиговых регистров. Используйте последовательный вход / параллельный выход для «ведущего» конца и параллельный вход / последовательный выход для принимающего конца. Хорошая вещь о сдвиговых регистрах состоит в том, что они могут быть легко соединены последовательно, чтобы сделать более длинный сдвиговый регистр. 256-битный или даже 1024-битный сдвиговый регистр вообще не является проблемой. С некоторой буферизацией последовательный поток может даже передаваться по кабелю на другую печатную плату (если это облегчает создание вашей вещи).
Есть много 8-битных регистра сдвига фишек , как 74xx597, но CPLD является гораздо лучше для этого. Но вам не нужен гигантский 256-контактный CPLD. Вместо этого вы можете использовать несколько небольших CPLD и объединить их в цепочку. Хотя я не занимался математикой, я вполне уверен, что использование CPLD более малого и среднего размера будет дешевле, чем одного большого CPLD - и вам не нужно беспокоиться о BGA.
Этот CPLD будет довольно интенсивным. Это означает, что обычная архитектура CPLD (например, используемая в Xilinx) не так хороша, как нечто более похожее на FPGA. У Altera и Lattice есть CPLD с гораздо большим количеством триггеров на доллар, чем у Xilinx.
Хотя у вас может не быть большого опыта работы с CPLD, этот дизайн очень прост, и преимущества использования CPLD огромны. Было бы очень полезно узнать, как запрограммировать CPLD для этого.
Кроме того, преимущества использования сдвигового регистра вместо мультиплексирования не так просто увидеть изначально. В основном вы получаете большую гибкость в том, как вы водите и чувствуете провода. Вы можете даже протестировать несколько ремней одновременно (если у вас достаточно сменных регистров). Все, что вы можете проверить с помощью мультиплексоров, можно сделать с помощью сдвиговых регистров, но сдвиговые регистры могут сделать больше. Недостатком сдвиговых регистров является то, что он медленнее, хотя все равно будет быстрее, чем вам нужно (IE, парень, подключающий и отключающий жгут, будет гораздо медленнее, чем время для тестирования с помощью сдвиговых регистров).
Я также должен сказать, что даже если вы используете CPLD, сдвиговые регистры все же проще, чем мультиплексоры. Главное, что они меньше - хотя, чтобы увидеть реальное преимущество / недостаток, вам нужно было бы сделать дизайн в обоих случаях и посмотреть, какой размер CPLD вам нужен. Это будет в значительной степени зависеть от типа используемой архитектуры CPLD, поэтому любые обобщения, сделанные с помощью Xilinx, не будут применяться к Altera.
Изменить: Ниже немного подробнее о том, как на самом деле выполнить тест с использованием сдвиговых регистров ...
Для выполнения теста вы можете игнорировать тот факт, что вы используете сдвиговые регистры, и только считать, что данные приводятся на «движущей стороне» и, надеюсь, читаются на «принимающей стороне». Как вы получили данные туда и обратно (через последовательный порт) в значительной степени не имеет значения. Важно то, что данные, которые вы можете использовать, абсолютно произвольны.
Данные, с которыми вы работаете, называются «тестовыми векторами». Данные, которые вы ожидаете прочитать, также являются частью тестовых векторов. Если кабель соединен с соотношением 1: 1, вы можете ожидать, что данные вождения и данные приема будут такими же, как и у вас. Если кабель не 1: 1, то он, очевидно, будет другим.
Если вы использовали подход, основанный на MUX, вы все еще используете тестовые векторы, но у вас нет контроля над типом тестового вектора. У муксов этот паттерн называется «Ходячие» или «Ходячие нули». Допустим, у вас есть 4-контактный кабель. При ходьбе вы должны следовать следующей схеме: 0001, 0010, 0100, 1000. Нули при ходьбе такие же, но перевернутые.
Для простого теста на непрерывность ходячие нули работают достаточно хорошо. В зависимости от того, как вы подключили кабель, существуют другие схемы, которые могут быть использованы для ускорения теста или для проверки конкретных вещей. Например, если некоторые выводы никогда не могут быть закорочены относительно других выводов, вы можете оптимизировать тестовый шаблон, чтобы не рассматривать эти случаи и, следовательно, работать быстрее. Работа с чем-то отличным от ходячих / нулей может усложнить работу программного обеспечения.
Окончательный метод генерации тестовых векторов сделан для тестирования JTAG. JTAG, также называемый граничным сканированием, является аналогичной схемой для тестирования соединений между микросхемами на печатной плате (и между печатными платами). Большинство чипов BGA используют JTAG. JTAG имеет сдвиговые регистры в каждой микросхеме, которые можно использовать для записи / считывания каждого вывода. Сложное и дорогое программное обеспечение просматривает список соединений для печатной платы и генерирует тестовые векторы. Сложный кабельный тестер мог бы сделать то же самое - но это было бы много работы.
К счастью, для вас есть гораздо более простой способ создания тестовых векторов. Вот что вы делаете ... Подключите заведомо исправный кабель к сдвиговым регистрам. Запустите паттерн "ходячие нули / единицы" через движущийся конец. Когда вы это сделаете, запишите, что видно на принимающей стороне. На простом уровне вы можете просто использовать это как свои тестовые векторы. Когда вы подсоединяете неисправный кабель и выполняете те же «гуляющие» / нули, данные, которые вы получаете, не будут соответствовать данным, которые вы записали ранее - и, следовательно, вы знаете, что кабель плохой. Это происходит под несколькими именами, но все имена представляют собой некоторую вариацию термина «обучение», например, самообучение или самообучение.
До сих пор это легко обрабатывает случай, когда один контакт на приводном конце идет к более чем одному контакту на приемном конце, но не обрабатывает другой случай, когда несколько контактов на приводном конце соединены вместе. Для этого вам понадобятся некоторые специальные средства для предотвращения повреждения из-за конфликта шины, и все ваши контакты регистра сдвига должны быть двунаправленными (IE, функционирующий как драйвер и приемник). Вот что вы делаете:
Поместите понижающий резистор на каждый контакт. Что-то около 20 кОм должно быть в порядке.
Поместите последовательный резистор между CPLD и кабелем. Что-то около 100 Ом. Это поможет предотвратить повреждение от электростатического разряда и прочего. Заземление 2700 пФ на землю (со стороны выводов CPLD 100-омного резистора) также поможет с ESD.
Запрограммируйте CPLD так, чтобы он приводил только к высокому сигналу, а не к низкому. Если ваши выходные данные равны «0», то CPLD будет трижды устанавливать этот вывод и позволять понижающему резистору понижать линию. Таким образом, если несколько выводов CPLD выводят один и тот же провод на кабеле высокого уровня, то никакого повреждения не произойдет (поскольку CPLD также не будет выводить один и тот же провод низкого уровня).
Каждый пин-код является как драйвером, так и приемником. Таким образом, если у вас есть 256-контактный кабель, то ваши сдвиговые регистры будут иметь 512 бит для драйвера и 512 бит для приемника. Вождение и прием могут осуществляться в одном и том же CPLD, поэтому сложность PCB из-за этого не меняется. У вас будет 3 или 4 триггера на каждый кабельный вывод в этом CPLD, поэтому планируйте соответственно.
Затем вы выполняете ту же схему «ходячих / нулей», сравнивая полученные данные с ранее записанными. Но теперь он будет обрабатывать все виды произвольных соединений в жгуте проводов.
источник
Я не думаю, что существуют решения с одним чипом. Они будут дорогими из-за большого количества операций ввода-вывода и, вероятно, также из-за низкого спроса. Большинство конструкций будут каскадными 8 или 16 входными мультиплексорами.
Если вы действительно хотите более интегрированное решение, вам придется искать CPLD . Существуют CPLD с более чем 256 входами / выходами , например Xilinx CoolRunner XC2C512 , который доступен в версии BGA с 270 пользовательскими входами / выходами . Имейте в виду, что для мультиплексора на 256 входов вам потребуются дополнительные 8 входов для сигналов выбора, конечно же, выход и, возможно, также включение, поэтому 270 входов / выходов не будет слишком большим.
Вы также должны иметь в виду, что ваша упаковка, скорее всего, будет BGA ; не уверен, что тебе понравится. В любом случае, я еще не видел QFP с примерно 300 контактами ...
источник
Хотя CPLD / FPGA кажется правильной идеей для большого количества выводов, автомобильный жгут обычно будет физически достаточно разложенным, а разъемы - умеренно большими. Поэтому вместо того, чтобы разветвляться от устройства с большим количеством выводов на большое количество разъемов, Модульная система с, скажем, 16 ввода-выводами на сдвиговых регистрах, связанных небольшим количеством линий синхронизации / сдвига, может быть более подходящей, а также очень масштабируемой.
Что-то еще нужно учитывать при тестировании кабеля: вы можете использовать цепочку резисторов для подачи, скажем, 16 напряжений на 16 линий, и аналоговый мультиплексор для проверки напряжения на каждом конце. Это обнаружит открытия и шорты и будет дешевым.
источник
Использование сдвигового регистра для чтения большого количества входных данных - хороший пример. Однако поскольку Дэвид Кесснер предложил использовать CPLD, я бы предложил другой шаблон. Предположим, вы хотите, чтобы каждый CPLD обрабатывал 32 входа. Назначьте каждому CPLD общий вход синхронизации, отдельный вход разрешения, выход разрешения (который связан с входом включения следующего чипа) и вывод общих данных. Каждая микросхема имеет пятибитный счетчик и индикатор переполнения. Когда вход разрешения сброшен, очистите счетчик и индикатор переполнения. Когда разрешающий вход подтвержден, но индикатор переполнения не установлен, выведите состояние входного бита, указанного счетчиком. Когда тактовый импульс получен и чип включен, и счетчик не переполнен, увеличьте счетчик. Бит переполнения будет подавать на выход «enable». Общий эффект всей этой логики состоит в том, что можно получить всего лишь около 8 макроэлементов для обработки 32 входов. Таким образом, можно уместить в CPLD другие функции, которые требуют больше вычислений или регистров, но не требуют большого количества операций ввода-вывода.
Если у вас есть CPLD с цепями держателя выводов, можно использовать аналогичный подход для вывода, особенно если есть способ вывода вывода из одного макроячейки на несколько выводов (без необходимости тратить макроячейку на каждый вывод). Микросхема будет иметь общие входы синхронизации и данных, вход разрешения и выход разрешения. Внутренне, это потребовало бы пятибитного счетчика, дополнительной копии нижнего бита счетчика, зафиксированного на противоположном фронте тактового сигнала от первых пяти, бит переполнения и сигнал общих данных, который подал бы все выводы. Семь макроэлементов, а также большое количество было необходимо для копирования сигнала входных данных на все контакты (элементы управления выходом для контактов будут служить в качестве защелки).
Одна прекрасная особенность этого подхода (который, между прочим, часто используется в драйверах ЖК-дисплеев) состоит в том, что можно иметь несколько линий данных, перемещающих данные параллельно, и при этом все же требуется только один последовательный провод между микросхемами. Это также позволяет исключить замыкающую цепь с каждого входа или выхода.
источник
Как это звучит для идеи, если предположить, что наибольшая группа контактов, которые должны быть подключены, это, например, 20 контактов: используйте набор микросхем драйвера привода регистра сдвига с открытым коллектором (один выход на контакт), каждый из которых может утопить не менее 2 мА; подключите резистор 1 кОм от каждого контакта к общей точке и используйте схему, источник которой составляет одно вольт при 20,1 мА (хорошо, если напряжение выше, когда ток ниже, при условии, что оно составляет один вольт при 20,1 мА), и укажите, является ли попытка делается, чтобы привлечь больше этой суммы. Для некоторых конфигураций кабеля может потребоваться небольшое количество «запасных» выводов, которые имеют резисторы 1К, но не подключены к кабелю. Может быть желательно иметь запасной контакт с резистором 1 кОм, один с резистором 500 Ом (или двумя параллельными 2 кОм), один с резистором 250 Ом (четыре 1 кОм)
Чтобы проверить кабель, сформулируйте сценарии, которые должны привести к тому, что ровно двадцать выводов будут опущены, и сценарии, которые должны привести к тому, что ровно двадцать выводов будут опущены (запасные контакты могут быть полезны для этого), и подтвердите, что сценарии с двадцатью выводами не сообщается, что используется более 20,5 мА, но есть сценарии с 21-контактным разъемом.
Предположим, например, что у вас есть жгут проводов, который должен соединять 1-2, 3-4, 5-6 и т. Д. До 39-40. Проверьте наличие коротких замыканий, выбрав различные комбинации из десяти пар выводов, и снизьте обе пары каждого вывода. У вас будет 20 низких пинов, и никакие пины не должны быть низкими, кроме тех, которые вы ведете, поэтому ток всегда должен быть ниже 20 мА. Если все закончится, что-то замкнуто. Если можно найти какую-либо комбинацию из десяти пар, которая не считывает перегрузку по току, то по одной отключите активную пару и включите другую пару, пока что-то не станет перегрузочным; последняя включенная пара замкнута на что-то, чего не должно быть.
Проверьте наличие открытий, опустив запасной штифт на низком уровне, а затем выбрав различные комбинации из десяти пар, ведя по одному штифту из каждой пары (иногда нечетный, а иногда четный). Если есть какие-либо размыкания, такое действие приведет к тому, что менее 21 булавки будут переведены в низкий уровень, и, таким образом, будет считан недостаточный ток. Если это произойдет, то по одному, возьмите каждую пару, где проходит один провод, и вместо этого возьмите оба. Если текущее значение превышает 20,1 мА, эта пара открыта.
Можно использовать CPLD для этого приложения, но система, как я описал, может быть лучше. Это может быть дополнительно улучшено путем добавления схемы для фактического измерения тока (а не просто с помощью индикатора превышения / уменьшения). Такое измерение позволит установить значения допуска для сопротивления.
источник
Это то, что вы ищете?
Maxwell 81840 - 128 канальный мультиплексор
источник