Измерение коэффициента нелинейных искажений в программе LTSpice

См. так же Применение LTSpice для измерения входного и выходного сопротивлений усилительных каскадов

Исследуемая схема

На рисунке 1 изображена схема генератора синусоидального напряжения на основе пятиступенчатого однонаправленного кольцевого сдвигового регистра на D - триггерах, срабатывающих по фронту сигнала. По положительному перепаду тактового сигнала на входах CLK динамических D - триггеров происходит запись текущего состояния с выхода предыдущего триггера на вход последующего. Если на входе D первого триггера A1 присутствует логическая единица, а на выходах всех триггеров установлен низкий логический уровень, то с каждым тактовым импульсом на входах CLK эта единица будет последовательно появляться на прямых выходах каждого из триггеров A1-A5. Как только высокий логический уровень установится на прямом выходе последнего триггера A5, то поскольку его инверсный выход соединён со входом D первого триггера, теперь с каждым тактом на выходах триггеров A1-A5 будет появляться низкий логический уровень, и как только сигнал с низким логическим уровнем дойдёт до выхода последнего триггера, процесс повторится.

Схема цифрового генератора синусоидального сигнала на кольцевом сдвиговом регистре

Рис.1
Скачать LTSpice модель схемы.

К выходам триггеров A2-A5 подключены суммирующие резисторы R1-R4, в точке соединения которых формируется ступенчатое синусоидальное напряжение (рис. 2). Ступеньки напряжения сглаживаются конденсатором С1 (рис.3).

Ступенчатое напряжение на суммирующих резисторах

Рис.2. Ступенчатое напряжение на суммирующих резисторах R1-R4 при отключённом конденсаторе С1.

Осциллограмма сглаженного ступенчатого напряжения на суммирующих резисторах R1-R4

Рис.3. Сглаженное ступенчатое напряжение на суммирующих резисторах R1-R4.

Как видно из схемы (рис.1) суммирующие резисторы имеют разные номиналы - R1, R4 - по 10 кОм, R2, R3 по 6,8 кОм. Такое подключение упрощает схему, но при этом имеет и существенный недостаток - выходы триггеров нагружены на разную нагрузку, что потребует в реальной схеме подбора номиналов резисторов какой-либо пары.

Теоретический предельный коэффициент гармоник (в процентах) для цифро-аналогового преобразователя рассчитывается по формуле
THD = 100/2N,
где N - число бит в АЦП. В данном случае у нас пятибитный АЦП, следовательно THD = 100/25 = 3.12%. Этот коэффициент достигается после соответствующей фильтрации ступенчатого сигнала.

Создание схемы в LTSpice

Соберём схему, изображённую на рисунке 1. Как располагать компоненты на схеме объяснялось ранее. Необходимо пояснить, как разместить триггеры A1-A5 на схеме. Для этого из меню Edit --> Component (или нажатием клавиши F2) следует вызвать окно выбора компонентов, и в директории Digital выбрать компонент dflop (Behavioral D-flipflop):

Выбор символа D - триггера

Рис.4.

Далее следует разместить этот компонент на схеме, навести на него курсор мыши и нажать правую кнопку мыши для редактирования. Откроется окно с с параметрами D - триггера, и в этом окне следует заполнить параметр Value таким значением:
Td={Td} Vhigh={Vhigh}

Параметры D - триггера

Рис.5.

Что бы это введённое значение не отображалось на схеме и не загромождало её, следует двойным кликом убрать крестик напротив значения, и закрыть окно. Теперь D - триггер A1 следует пять раз скопировать (клавиша F6), все копии будут иметь те же самые параметры, что и первый триггер. В данном случае параметр Td - это время задержки, если его не указать, то триггер будет идеальным, и схема работать не будет. Параметр Vhigh определяет напряжение логической единицы на выходе триггера (и соответственно порог срабатывания триггера). На схеме необходимо указать значения этих параметров, введя Spice команды (клавиша S) .param Td=1u и .param Vhigh=5.

Как видно из рисунка 1, на схеме размещены резисторы, условное графическое обозначение которых выполнено в виде прямоугольника. Для размещения на схеме этих резисторов с более привычным обозначением следует из окна выбора компонентов (клавиша F2) выбрать в меню Misc компонент EuropeanResistor.

Далее на схеме размещается источник напряжения (клавиша F2 - корневой каталог - voltage) и заполняются параметры источника сигнала в расширенном режиме (нажать правую кнопку мыши над источником напряжения и далее нажать кнопку advanced):

Параметры источника сигнала

Рис.6.

(PULSE(0 15 0 0.00001u 0.00001u 100u 200u 1000000))
Напряжение логической единицы (Von) = 15 вольт, частота (Tperiod) = 1/200μ = 5 кГц, скважность импульсов Tperiod/Ton = 200μ/100μ = 2.

Закончив рисование, можно будет запустить схему с такими параметрами симуляции:

Окно настроек параметров моделирования

Рис.7.

.tran 0 0.1 0 0.0000001
Следует отметить очень небольшую величину параметра Maximum Timestep = 0.0000001. Чем она меньше, тем точнее будет полученный результат, хотя расчёт будет происходить дольше. Для повышения точности вычислений можно отключить сжатие данных, так как компрессия происходит с потерями (в меню Simulate --> Control panel --> Compression убрать все галочки - но эти настройки не запоминаются, так что их нужно изменять при каждом запуске программы LTSpice), при этом скорость симуляции существенно возрастёт, но потребуется гораздо больше места на диске (в 50 раз больше!) для временных файлов. Что бы не изменять настройки программы, сжатие можно отключить добавив на схему Spice - команду .options plotwinsize=0. Ещё более увеличть точность расчётов можно путём добавления на схему другой Spice - команды - .options numdgt=7. Эта команда с любым параметром, большим шести включает режим вычислений с двойной точностью.

Ручной расчёт КНИ

Запустив симуляцию и установив курсор в точку схемы OUT, в окне расчётов появится синусоидальный сигнал (рис.3). Наведя курсор на окно расчёта и нажав правую клавишу мыши, выберем из пункта меню View пункт FFT (Быстрое преобразование Фурье):

Выбор из меню Быстрое преобразование Фурье

Рис.8.

Далее появится окно настроек, в котором следует выбрать ту точку на схеме, для которой будет производиться расчёт, в данном случае это V(out), и указать диапазон времени (Specify time range), который будет учитываться. В этом случае важно, что бы начало синусоиды не попало в эти рамки, так как переходные процессы в самом начале расчёта приведут к искажению результатов. Поэтому выбирается диапазон от 10 ms до конца расчёта, в данном случае это 100 ms.

Окно выбора узла для FFT анализа

Рис.9.

Нажав ОК, появится окно анализатора спектра FFT:

Окно анализатора спектра FFT

Рис.10.

Здесь видно, что основная гармоника имеет уровень 0 дБ. Кликнув по нижней шкале, появится окно с настройками горизонтальной оси, введём туда следующие параметры:

Окно настройки горизонтальной шкалы

Рис.11.

В данном случае начало шкалы = 0 Гц, конец шкалы = 8 кГц, шаг = 500 Гц. Эти параметры выбраны потому, что частота исследуемого сигнала составляет 500 Гц, и все гармоники будут расположены на графике с шагом 500 Гц.

Спектр сигнала

Рис.12.

Из этого графика видно, что частота первой (основной) гармоники составляет 500 Гц, второй - 1 кГц, третьей - 1,5 кГц и т.д.

Для того, что бы измерить коэффициент нелинейных искажений, необходимо определить амплитуды всех гармоник. Для этого надо навести курсор на вершину каждой гармоники, внизу в строке состояний программы будет отображаться положение курсора на графике (по оси X - частота (Гц), по оси Y - амплитуда (дБ)). Считав амплитуды гармоник со второй по N (чем больше гармоник будет использовано, тем точнее получится результат), необходимо будет их величины перевести из Децибел в Ватты, это делается по формуле
W = 10(dBW/10)
Полученные результаты суммируются и результат вычисляется по формуле
КНИ (%) = 100*(W2+W3+..+WN)0,5/W1
Здесь W1 = 1, так как основная (первая) гармоника имеет уровень 0 дБ.

Для расчёта КНИ можно воспользоваться ниже приведённым калькулятором, введя амплитуды соответствующих гармоник в таблицу:

ГармоникаАмплитуда, дБМощность, Вт
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Иногда программа LTSpice неправильно определяет положение амплитуды первой (главной) гармоники на графике - в этом случае необходимо в первую строку таблицы ввести текущую амплитуду первой гармоники, её величина будет вычтена из амплитуд остальных гармоник.

Гармоники с амплитудой меньше -100 дБ можно не учитывать, они вносят не большой вклад в общий КНИ. В те графы таблицы, куда данные не вводятся, кроме первой графы, следует ввести значения -1000 дБ, что бы исключить соответствующие гармоники из расчёта. Считав амплитуды гармоник с рисунка 12, получим

W3 = -44.3
W7 = -58.8
W9 = -35.9
W11 = -39.4
W13 = -69.5

Если теперь ввести эти данные в таблицу, то коэффициент нелинейных искажений получится равным 2,0259 %.

Автоматический расчёт уровня коэффициента нелинейных искажений

Для автоматического расчёта КНИ можно воспользоваться следующей Spice - директивой:
.four 500 13 V(out)
Эту директиву следует разместить на схеме (клавиша S). Первый параметр директивы (в данном случае 500) задаёт частоту основной гармоники, второй параметр (13) - число анализируемых компонент (гармоник), и третий параметр - V(out) указывает, что в каком узле рассчитывать (в данном случае рассчитывается напряжение узла out).

После завершения симуляции результаты расчёта выводятся в .log - файл, находящийся в той же директории, что и .asc файл со схемой. Этот файл можно посмотреть из меню View --> Spice Error log (или нажав комбинацию клавиш Ctrl+L). Ниже приведён пример с фрагментом .log - файла с результатами расчёта коэффициента нелинейных искажений:

Harmonic Frequency Fourier Normalized Phase Normalized
Number [Hz] Component Component [degree] Phase [deg]
1 5.000e+02 1.387e+00 1.000e+00 -139.52° 0.00°
2 1.000e+03 3.118e-07 2.247e-07 100.57° 240.09°
3 1.500e+03 8.529e-03 6.148e-03 -164.56° -25.03°
4 2.000e+03 1.642e-06 1.184e-06 149.35° 288.87°
5 2.500e+03 9.172e-06 6.611e-06 -33.45° 106.07°
6 3.000e+03 1.529e-06 1.102e-06 178.40° 317.93°
7 3.500e+03 1.584e-03 1.142e-03 6.92° 146.45°
8 4.000e+03 2.526e-06 1.821e-06 -78.17° 61.36°
9 4.500e+03 2.244e-02 1.617e-02 3.53° 143.05°
10 5.000e+03 1.146e-06 8.257e-07 25.28° 164.80°
11 5.500e+03 1.506e-02 1.085e-02 -177.75° -38.23°
12 6.000e+03 1.479e-06 1.066e-06 -115.80° 23.72°
13 6.500e+03 4.526e-04 3.263e-04 178.96° 318.49°
Total Harmonic Distortion: 2.045901%

Самая нижняя строка и показывает коэффициент нелинейных искажений, равный 2.045901%.

Проверка полученных результатов

Что бы проверить правильность полученного результата, запишем полученный сигнал в wave файл. для этого несколько изменим схему (рис. 13). Вместо резистора R5 поставим делитель, состоящий из резисторов сопротивлением 7 кОм и 3 кОм, верхний по схеме резистор соединим с источником постоянного напряжения величиной -0,8 вольт. Применение делителей напряжения необходимо для того, что бы амплитуда полученного сигнала не выходила за пределы допустимого диапазона -1..+1 В, а источник напряжения обеспечивает необходимое смещение, что бы среднее значение сигнала было в районе нуля, в противном случае полученный сигнал будет искажён клиппированием.

Делитель напряжения и источник напряжения смещения на схеме

Рис.13. Фрагмент схемы синтезатора синусоидального сигнала, настроенной на вывод сигнала в файл.
Скачать LTSpice модель схемы.

Для вывода в .wav файл необходимо будет увеличить время расчёта хотя бы до трёх секунд (параметры расчёта будут такими: .tran 0 0.3 0 0.0000001), в этом случае расчёт займёт некоторое время (где-то полчаса - час). На схеме так же необходимо будет расположить Spice команду .wave ./file.wav 16 44100 V(out), обеспечивающую запись сигнала в файл. Подробнее о выводе сигнала в файл можно прочитать в кратком руководстве по LTspice IV.

Полученный .wav файл анализировался программой Arta (рис. 14):

Окно программы Arta

Рис.14. Окно программы Arta.

Как видно из рисунка, коэффициент нелинейных искажений составляет 2,01%.

Так же файл был проанализирован программой Analyzer2000 (рис. 15):

Окно программы Analyzer2000

Рис.15. Окно программы Analyzer2000.

Эта программа выводит данные в текстовый файл, из которого видно, что КНИ составляют 2,1%, что так же близко к расчётным результатам.

BACK MAIN PAGE

Рейтинг@Mail.ru