Использование WAV файлов в моделировании в LTspice
Рассмотрим, как использовать файлы WAV в LTSpice на примере универсальных регистратора и проигрывателя данных, а также, когда может понадобиться подобная техническая возможность.
LTSpice имеет возможность записывать данные с узлов напряжений и токов как часть моделирования переходных процессов. Данные при этом записываются в файл WAV. Затем эти данные могут считываться источниками напряжения и тока и использоваться в качестве входных данных для других схем в LTSpice, просматриваться с помощью простой схемы воспроизведения или передаваться обычным приложениям анализа данных.
В данной статье рассматриваются примеры универсальных схем записи и воспроизведения и подробности формата данных.
Запись данных моделирования
Интересной возможностью LTSpice является запись данных моделирования переходных процессов (во временной области) в виде WAV файлов. Я не понимал, что это значит, пока не посмотрел подробную спецификацию LTSpice и не увидел, как эти спецификации согласуются с низкоуровневыми деталями формата WAV файла. WAV файлы – это не только для звука. Важно знать, что WAV файлы не используют сжатие. Вы вводите число, и вы получаете то же самое число. По всей видимости, в музыкальной индустрии это предел для качественной записи. Кроме того, данные организованы в каналы, как и следовало ожидать от студийной звукозаписи. А количество каналов может быть очень большим. Больше того, что может потребоваться для записи музыки. По-моему, это идеальный формат для многоканального универсального регистратора данных.
В таблице ниже приведены спецификации из LTSpiceHelp.
Характеристики LTSpice .WAVE | Значение |
---|---|
Директива LTSpice | .WAVE |
Количество каналов | от 1 до 65535 |
Разрядность выборки | от 1 до 32 |
Количество выборок на моделируемую секунду | от 1 до 4 294 967 295 (232-1) |
Диапазон шкалы напряжения | от -1 до +1 В |
Диапазон шкалы тока | от -1 до +1 А |
Вот это да! Представьте себе реальный регистратор данных с более чем 60 000 каналами, 32-разрядным аналого-цифровым преобразованием и более одного миллиарда выборок в секунду. Я хочу себе такой.
Мои тесты показали, что максимальное количество выборок в секунду составляет примерно ½ от значения в таблице при моделировании переходных процессов, запущенном для 10 наносекунд. Кроме того, я не смог проверить разрядность выборки, превышающую 24 бита.
Всё это делается путем помещения на схему директивы .WAVE
. Ниже показан пример директивы.
.wave Circuit_Data.wav 16 10K V(ab) V(cd) V(ef) V(gh)
Я намеренно не использовал пример из LTSpiceHelp. Тот пример подходит для создания файла WAV, который можно воспроизводить как аудио. Мы идем в совершенно другом направлении. Команда разбивается следующим образом:
- Circuit_Data.wav – выходной файл;
- 16 – разрядность выборки. Вспомните о разрешении аналого-цифрового преобразователя;
- 10K – количество выборок в секунду;
- V(ab) и т.д. – список узлов в схеме для записи. В данном случае их четыре. V(ab) – это канал 0.
Универсальный регистратор данных в WAV
Ниже показан универсальный регистратор, который может быть добавлен на схему. На рисунке показана пользовательская схема (User Circuit), подключенная к регистратору. В данном примере всего четыре канала, но их может от 1 до 65535. Я пробовал только до восьми!
Обратите внимание, что все рисунки кликабельны (для увеличения размера).
Источники напряжения, управляемые напряжением (E100 и т.д.), выполняют две функции. Во-первых, они изолируют имя узла в пользовательской схеме (User Circuit) от имен узлов в директиве .WAVE
. Узел в пользовательской схеме подключается к входу регистратора без необходимости беспокоиться об именах узлов. Во-вторых, источники E обеспечивают масштабирование для входов, поскольку функция .WAVE
имеет фиксированный размер шкалы. Операторы .PARAM
в списке User Parameters (пользовательские параметры) модифицируются для независимой настройки размера шкалы для каждого канала. Еще один пользовательский параметр, WavSamples
– это количество выборок в секунду. Имя файла я указал непосредственно в директиве .WAVE
.
Воспроизведение данных WAV
Ниже показан соответствующий проигрыватель, который считывает данные для построения графиков или подачи сигналов на другие схемы.
Источники напряжения считывают данные для каждого канала. Напряжения, которые были масштабированы в регистраторе, теперь «демасштабируются» с помощью источников напряжения, управляемых напряжением. Масштабные коэффициенты для каждого канала устанавливается с помощью операторов .PARAM
, данные коэффициенты соответствуют операторам .PARAM
на схеме регистратора. Директива .TRAN
работает как обычно и используется для воспроизведения всех или части данных.
Примеры графиков записи и воспроизведения
Графики слева – это моделирование для записи. Схема представляет собой резистивный делитель напряжения с дополнительным конденсатором для придания различной формы фронтам и спадам импульсов сигнала. Запись ведется в течение двух секунд. Графики справа – это выходы проигрывателя. При воспроизведении первая секунда записи пропускается, и отображается последняя секунда. Как и с любым аналого-цифровым преобразователем, убедитесь, что частота дискретизации достаточно высока, чтобы избежать искажений.
При создании этих схем и графиков у меня было четыре открытых окна. Два окна со схемами и два окна с графиками. Просто нажмите Run (запуск) на регистраторе, а затем на проигрывателе.
Совместимость с приложениями для анализа данных
Формат данных очень универсален и может быть прочитан другими программами анализа данных. В качестве теста регистратор работал с источником напряжения, измененным для простоты с генератора импульсов на источник постоянного напряжения +1 В. Файл WAV был прочитан SciLab с помощью функции wavread(имя_файла)
в матрицу. Никакой дополнительной обработки не потребовалось.
Каждая строка матрицы представляет собой канал WAV, а каждый набор выборок в определенный момент времени – это столбец. В примере ниже верхняя строка – это первые шесть выборок канала 0, вторая строка – выборки канала 1 и т.д.
0.1000061 0.1000061 0.1000061 0.1000061 0.1000061 0.1000061
0.0750122 0.0750122 0.0750122 0.0750122 0.0750122 0.0750122
0.0499878 0.0499878 0.0499878 0.0499878 0.0499878 0.0499878
0.0249939 0.0249939 0.0249939 0.0249939 0.0249939 0.0249939
Помните, что запись была установлена для диапазона ±10 В. Это означает, что, чтобы оставаться в диапазоне от -1 В до +1 В функции .WAVE
, данные были разделены на 10; напряжение 1 В в узле записывается как 0,1 В, 0,75 В записывается как 0,075 В и т.д. Проигрыватель, чтобы вернуть исходные значения напряжений, умножает эти данные на 10.
Создаст ли соответствующая функция SciLab wavwrite(y, filename)
файл, совместимый с LTSpice? Правильно ли будет воспроизводиться этот файл? Да, всё будет работать!
В MATLAB есть такие же функции, но я их не проверял. Существует сторонняя функция для чтения «сырых» файлов LTSpice в MATLAB, LTSPICE2MATLAB()
. У нее будет максимальное разрешение по амплитуде и по времени. Но упоминаний об обратном пути, с помощью функции MATLAB2LTSPICE()
, нет.
Заключение
Запись и воспроизведение файлов WAV с помощью LTSpice могут оказаться полезными в нескольких случаях.
- Файлами WAV можно обмениваться между LTSpice и программами анализа данных. Это позволяет обоим типам симуляторов работать совместно, и мы сможем использовать сильные стороны каждого из них.
- Записанные данные можно использовать в качестве входных данных для другого моделирования LTSpice. Например, записанные данные могут быть тестовыми данными, которые многократно используются во время разработки. Кроме того, выходные данные моделирования, выполненного одной группой разработчиков, могут использоваться в качестве входных данных для другой группы разработчиков, и этим группам не нужно будет постоянно синхронизировать файлы проекта.
- Результат моделирования может быть воспроизведен без исходной схемы. Например, производительность схемы может быть продемонстрирована, но схема остается конфиденциальной. Кроме того, результаты могут быть просмотрены и изучены кем-то, у кого нет навыков для запуска сложного моделирования LTSpice. Для просмотра графиков в LTSpice особой подготовки не требуется, или же для просмотра можно использовать приложение для анализа данных.