Перейти к содержанию
    

bus/harness в схематике

В проекте есть несколько одинаковых каналов.

Канал в схематике оформлен, как отдельный лист.

Несколько каналов в виде SheetSimbol'ов расположены на Top-уровне схемы (на картинке ниже).

В состав канала входит микросхема с интерфейсом I2C. Адрес I2C конкретного экземпляра микросхемы выбирается соединением ее пинов MUX_A[2:0] с землей и питанием.

Хочу вывести шину MUX_A[2:0] из каждого канала на верхний уровень иерархии чтобы там каждому каналу присвоить свой адрес:

Sch.thumb.png.2b9301194d3212b0e344894aaa6d0ecd.png

На картинке я уже попытался обойти проблему конфликта имен цепей с помощью портов. Ошибок при компиляции нет, но и цепи назвались не так, как нужно: например в PCB редакторе G0_MUX_A2 получила какое-то имя, хотя должно быть GND.

Как это правильно сделать?

Иначе говоря, как выборочно соединить какие-то разряды шины скажем с землей?

В идеале было бы сделать это через NetLabel шины как-то так: [GND,VCC,GND]. Это, пожалуй, самый наглядный вариант.

Вытаскивать из SheetSimbol'а отдельные биты (не в виде единой шины) очень бы не хотелось - некрасиво и займет очень много места.

 

Возможно нужно использовать Harness, но я не понял как.

Нашел решение с Net tie. Но оно неправильное, как мне кажется, в данном случае.

 

Настройки иерархии проекта:

option.thumb.png.129d476906fddc003b2fd265495b1c84.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигналы MUX_A[2..0] выведите из блока по отдельности, т.е. на УГО блока будет MUX_A2, MUX_A1, MUX_A0. А уже эти сигналы подключать к VCC, GND. Я делал подобным образом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, KSN сказал:

Сигналы MUX_A[2..0] выведите из блока по отдельности, т.е. на УГО блока будет MUX_A2, MUX_A1, MUX_A0. А уже эти сигналы подключать к VCC, GND. Я делал подобным образом.

+1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

Вытаскивать из SheetSimbol'а отдельные биты (не в виде единой шины) очень бы не хотелось - некрасиво и займет очень много места.

Дело в том, что в каждом блоке по 2 таких микросхемы и получается очень не эстетично. Если "правильного" решения с шиной не найдется. придется так и сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Шина передается вся на все блоки. Вы хотите в блоках по разному использовать сигналы шины. Это не получится.

Да и вопрос "эстетики" весьма субъективен. Так как на рисунке, с моей точки зрения, только запутывает других пользователей вашей схемы.

"Правильного" решения по вашему пути не будет.
Вам предложили верный путь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я использовал жгут (AD16 и AD17). 

1. Внутри блока разворачивал шину, заводил ее в жгут, на шину внутри ставил метку NO ERC на Dublicate Nets.

image.png.4cfdd7b4bd50511101b9c391e2423993.png

2. Снаружи разворачивал жгут от нужного блока к нужным цепям. 

image.png.b36e03046d412414f7245009cb65397a.png

3. Чтоб все имена цепей в топологии именовались однозначно, в настройках Project Options - Options - галка Higer Level Names Take Priority, а то у меня в экспериментах некоторые цепи брали имена из базового блока, а некоторые с верхнего уровня, системы здесь я не уловил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to dee2mon:

Боюсь я не понял пример.

Первый фрагмент находится внутри блока Single_Chan_SchDoc, верно? 

Вместо шины вы используете harness, но где собственно переименование цепей?

Цепи в результате получили названия вида BITB_x из верхнего уровня иерархии?

Поясните, пожалуйста, хочу разобраться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, первая картинка внутри блока Single_Chan_SchDoc. 

На верхнем уровне блок Single_Chan_SchDoc вставлен два раза его выводы подключены как BITA_x и BITB_x. Если открыть схему блока в скомпилированном проекте, то видно, что для каждого вхождения блока цепи переименовалисть из Bx в BITA_x и BITB_x.

Определение harness это просто перечисление, скажем так, проводов (красный, зеленый, желтый и т.д.), он просто соединяет одну цепь из верхнего уровня в соответствующей цепью блока. Например, для блока A1 провод жгута BIT0 соединяет внутри B0 снаружи BIT_A0, т.к. у меня стоит галка Project Options - Options - галка Higer Level Names Take Priority, то имя объединенной цепи становиться BIT_A0. И т.д. для всех остальных. 

С просто шиной через жгут (без разбора ее на отдельные цепи) или просто без жгута при нескольких каналах у меня так не получилось, шина переименоваться для каждого канала не захотела, может я не разобрался.

Могу выложить проект, он был чисто учебный.

Картинки, это скомпилированные имена цепей в блоках A1 и A2.

image.png.d03f5d5d75e486ef7630bf7ffdefdec0.pngimage.png.1c1fb371841431394b3cf43521e15da9.png

 

Изменено пользователем dee2mon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собрал тестовый проект. Дословно так же получилось сделать. 

test_unit.png.9cd0200503e24aa5ec33f758ec507852.png

Переворачивать биты можно. И имена наследуются с верхнего уровня:

conn_1.png.4e3db0d16cbe2b28efc6eec8595379a2.png

conn_2.png.df0af5b8538f2f903a5b56f49f58adf6.png

А вот при попытке один из битов в Top'е подключить к земле компилятор выдает ошибку "Net input0 has only one pin (Pin J7-1)":

conn_3.thumb.png.fd772ba246c5656ee5331e5106e00782.png

Пробовал разные комбинации настроек - никак не работает.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо было и пробовать. Harness вам не поможет. 
Все равно возврат на то, чтобы убрать Repeat с этих сигналов.
А сигнала у вас вполне попадают под Bus/
Зачем куча лишней графики.

Тогда уж проще 3 SheetSymbol раздельно поставить и вообще не Юзать Repeat.

В вашем случае это самое то, так как будет достигнута связь при минимуме ненужно графики

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данном случае вынужден согласиться.
Чтобы не терять время уже оформил отдельными входами MUX_A2, MUX_A1, MUX_A0, как вы предложили выше. Время не ждет, нужно двигаться дальше.

Но в целом вопрос остался открытым. Если в следующий раз будет больше нескольких блоков или сигналов для выбора будет существенно больше чем 3, то решения пока нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет нерешаемых проблем в этом направлении.

Просто их начинают решать в достаточно сложных проектах
И не всегда одним и тем же способом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Писали, что решения нет, но оно есть. Исходя из опыта рекомендую следующее: сделайте в библиотеке элемент типа Net Tie и соединяйте "вытащенные" комопненты групповой линии связи с землёй или питанием через такие компоненты. В документации на Altium Designer указано, что этот тип комопнентов как раз предназначен для решения подобных задач, позволяя соединять разноимённые цепи. Единственной проблемой станет то, что компоненты могут располагаться только на слоях Top и Bottom, что принуждает выводить компонент "шины" со внутренноего слоя на поверхностный для выполнения соединения с цепью питания. Проблема не актуальна на платах с малым количеством слоёв.

Немного оффтопа, просто наболело: ответил на сообщение через полгода потому, что ящик буквально завален реклмой от electronix и среди неё сложно сразу найти сообщения по подписанным темам форума. А на реклам мозг уже не реагирует - за годы развилась защитная реакция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Lninio said:

сделайте в библиотеке элемент типа Net Tie и соединяйте "вытащенные" комопненты групповой линии связи с землёй или питанием через такие компоненты.

Единственной проблемой станет то, что компоненты могут располагаться только на слоях Top и Bottom, что принуждает выводить компонент "шины" со внутренноего слоя на поверхностный для выполнения соединения с цепью питания.

У меня набор Net Tie со стандартными размерами падов разных резисторов (0201, 0402, 0603, 0805), но с медной перемычкой между площадками и полностью открытые (без силкскрина). Это позволяет лего найти их, если надо порезать перемычку, припять пермычку к другим цепям или порезать и припаять стандартный резистор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...