LTspice: когда я превращаю схему в подсхему, она ведет себя по-другому. Почему?

Я пытаюсь смоделировать низкочастотную светодиодную мигалку на основе BEAM Pummer (в основном пара инверторов CMOS, подключенных как генератор, плюс насос заряда) в LTspice. У меня есть базовая схема мигалки, подключенная к источнику напряжения и выходу светодиода, и, похоже, она работает правильно, создавая пики тока ~ 40 мА через светодиод каждые ~ 2 с или около того.

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

  • Журнал ошибок SPICE сообщает Singular matrix: Check node d:u1:6#int1 Iteration No. 19, что не отображается в автономной версии. Я не уверен, как найти node d:u1:6#int1.
  • Мое первоначальное предположение заключалось в том, что GNDсоединение не было выполнено должным образом, но я пытался передать заземление через внешний контакт несколькими различными способами, и это не имело никакого значения.
  • Есть причуда в том, что мне нужно использовать PULSEисточник напряжения со 100% рабочим циклом, а не постоянное напряжение постоянного тока в автономной версии, иначе генератор не запустится. Может ли это быть связано? Установка напряжения тестовой цепи, похоже, PULSEне имела никакого значения.

Что еще я могу делать неправильно? Я трижды проверил порядок выводов списка соединений .subckt в сравнении с порядком, определенным в файле символов, и я почти уверен, что он правильный. Документы говорят мне, что это GNDуже должно быть глобально подключено. Это стартап? Два инвертора соединены в цепочку, чтобы сделать генератор, нужно ли мне явно устанавливать вход одного на 5 В, а другого на 0 В при запуске?

Для справки, здесь есть zip-файл , содержащий тестовую схему и определения .sub и .asy, а также автономную версию подсхемы флешера, чтобы доказать, что она действительно работает.

Любая помощь очень ценится!

Ответы (1)

Чтобы ответить на мой собственный вопрос: кажется, LTspice требует, чтобы текстовые файлы сохранялись с кодовой страницей Windows Latin 1, окончаниями строк CRLF. Я использую Wine на Mac, и мой текстовый редактор по умолчанию сохраняет код в кодировке UTF-8. Я предполагаю, что LTspice неправильно интерпретирует UTF-8 µ в значениях конденсатора как что-то недопустимое, но, как ни странно, не выдает сообщение об ошибке.

Учитывая, что SPICE — это (довольно старый) компьютерный язык, замена u на µ, вызывающая проблемы, вероятно, не слишком удивительна.
LTSpice требователен к единицам измерения. Например, если вы хотите использовать мегаомы, вы должны правильно указать единицы измерения, иначе они молча заменят другое сопротивление, которое отличается на несколько порядков. М не принимает, только Мэг с большой буквы М.
Нет, @Kaz, ты не прав. Ни в коем случае LTspice «молча не заменяет» сопротивление! Если используется допустимый суффикс (M, m, Meg, MEG и т. д. все допустимы), то LTspice не нужно «жаловаться», в противном случае, конечно, это произойдет. СПЕЦИИ, в т.ч. LTspice НЕЗАВИСИМЫ ОТ РЕГИСТРА, поэтому любая «комбинация прописных и строчных букв» MEG (mEg, MeG,...) интерпретируется как «мега» (x 1e6), как «M», так и «m» как «милли» (x 0,001). Поскольку SPICE игнорирует последующие символы, можно также ввести единицы измерения, например. 4,7 мкФ (эта «F» не влияет). Обратите, однако, внимание: 0,001F = 0,001фемтоФарад, а не 0,001Фарад!
@EricBest Это ошибка, потому что в стенографии электроники мы различаем Mи m. Если я вижу 2M рядом с резистором на схеме, это для меня означает два миллиона Ом, а не два миллиома. Можно рассматривать как эквиваленты Meg, MEG и meg, но не M и m.
@Kaz, это не ошибка, это просто следствие того факта, что SPICE (исторически) НЕЗАВИСИМЫ ОТ РЕГИСТРА. Вот почему пришлось пойти на «компромисс», чтобы различить эти общеизвестные сокращения для «милли» (м) и «мега» (М). С этим надо просто смириться...
@EricBest: Вы когда-нибудь случайно писали 10mig или 10mug или 10mfg или подобное для номинала резистора? Это будет интерпретироваться как 10 милли. Это ошибка удобства использования, если только вы не скажете, что отчеты об ошибках не нужны, и всякий раз, когда вы делаете что-то не так в вашем файле .asc, носовые демоны являются правильным следствием .
@PlasmaHH: Нет. Ошибка — это ошибка, допущенная во время программирования, которая возникла непреднамеренно. Это не вариант. Основная функциональность SPICE заключается в том, что они НАМЕРЕННО распознают (разбирают) только !first! буква, помещаемая НЕМЕДЛЕННО за значением (другие произвольные буквы могут следовать за ней без какого-либо эффекта), если только эти буквы не создают слово MEG (или его комбинации верхнего и нижнего регистра), и в этом случае оно оценивается как префикс «мега». Только если эта 1-я буква не идентична одному из ожидаемых префиксов или это не описанный выше «мег-кейс», выдается сообщение об ошибке.
@EricBest: ошибка также является ошибкой в ​​спецификации, которая позже оказывается не совсем тем, что вы хотели, и / или полезной. Когда калькулятор выводит 3 вместо 1+1, это ошибка, независимо от спецификации.
@PlasmaHH: Нет. Еще раз: описанное поведение полностью ПРЕДНАЗНАЧЕНО с самого начала. Ваш пример сравнения неверен - он не аналогичен. Если калькулятор выдает 3 вместо 1+1, это, без сомнения, ошибка. Входные значения были введены правильно, а ожидаемый результат неверен. В нашем случае, если ввод в порядке (согласно заданной спецификации), результат также будет в порядке. Вы не можете ожидать правильного результата, если в качестве входных данных вы ввели бессмыслицу. (продолжение)
@PlasmaHH: (продолжение) Спецификация ясна: независимо от того, что начинается с «m» или «M» (цена за присущую нечувствительность к регистру), это всегда означает «милли», если оно не продолжается «например...», «Eg...», «eG...» или «EG...», тогда это означает «мега». Это свойство позволяет вставлять такие единицы, как мВ, мВольт, мА, миллиампер, мГн, миллигенри и т. д., поскольку все последующие буквы игнорируются.
OMG пенис, машущий здесь, как удивительно.
@PlasmaHH +1 "носовые демоны"