СПОСОБ ОКРУГЛЕНИЯ КОДОВ ФУНКЦИИ
METHOD OF ROUNDING-OFF FUNCTION CODES

Предлагаемое изобретение относится к области измерительной техники и может быть использовано для точного генерирования напряжения с помощью цифроаналоговых преобразователей.
m
m
Известен способ округления кодов функции (Орнатский П.П. - Автоматические измерения и приборы. - Учебник для ВУЗов. - 4-е изд. перераб. и доп. - Киев: Вища школа. Головное изд-во. 1980. - 560 с. - 30502.2402000000. стр.221), являющийся аналогом предлагаемого способа. Способ заключается в том, что если точное значение кодов функции в заданной точке имеет большее число двоичных разрядов, чем необходимо, например m двоичных разрядов, то округление кода осуществляется путем отбрасывания всех двоичных разрядов, номера которых больше m. Если в коде всего m двоичных разрядов, то это означает, что в коде существует всего 2:0, 1, 2…(2-1) различных уровней. Таким образом, в рассматриваемом способе округление кода функции в заданной точке осуществляется по недостатку, то есть до ближайшего снизу уровня, под которым находится истинное значение кода функции.
Также известен способ, приведенный в указанном выше литературном источнике (стр.222), в котором осуществляется округление с избытком, то есть до ближайшего сверху уровня, под которым находится истинное значение кода функции.
Однако указанные способы округления характеризуются методическими погрешностями: в первом способе она по максимуму равна плюс расстоянию между уровнями, во втором способе - минус расстоянию между уровнями.
Кроме того, известен способ, являющийся прототипом (Орнатский П.П. - Автоматические измерения и приборы. - Учебник для ВУЗов. - 4-е изд. перераб. и доп. - Киев: Вища школа. Головное изд-во. 1980. - 560 с. - 30502.2402000000. стр.223-224) округления кодов, задаваемых в n точках функции, заключающийся в том, что округление в каждой из n точек осуществляется до ближайшего уровня, между которыми находится истинное значение кода функции. В этом случае погрешность округления лежит в диапазоне от -1/2 до +1/2 расстояния между уровнями. В дальнейшем для генерирования функции с помощью цифроаналоговых преобразователей округленные значения кодов запоминаются.
Таким образом, в прототипе отсутствует постоянная составляющая погрешности округления. Кроме того, округление до ближайшего уровня обеспечивает наилучшую аппроксимацию функции в метрике среднеквадратического отклонения, то есть получается наименьшее значение суммы квадратов погрешностей округления, взятых по всем точкам.
Однако указанный способ округления при заданном числе двоичных разрядов m и числе дискрет n на периоде функции не дает наиболее точное воспроизведение синусоидального сигнала (первой гармоники), не минимизирует значение К-той гармоники в спектре генерируемого сигнала, не воспроизводит наиболее точно среднеквадратическое значение генерируемого сигнала и т.д. Назовем критерием оптимальности получение наименьшего значения погрешности воспроизведения первой гармоники, наименьшего значения К-той гармоники и наименьшего значения погрешности воспроизведения среднеквадратического значения сигнала.
Задачей предлагаемого изобретения является создания способа округления кода функции, который оптимизирует выбранный критерий оптимальности, то есть при заданных числе двоичных разрядов m и числе дискрет n на периоде функции минимизирует погрешность воспроизведения синусоидального сигнала (первая гармоника), либо минимизирует значение К-той гармоники в спектре воспроизводимого сигнала, либо воспроизводит с наибольшей точностью среднеквадратическое значение генерируемого сигнала.
Поставленная задача достигается тем, что в известном способе, при котором округление кодов функции, заданных в n дискретных точках, производят до ближайшего уровня, и запоминают полученные коды, кроме того, вычисляют и запоминают критерий оптимальности, а затем, начиная с некоторого начального номера L дискретного значения функции, изменяют направление округления кода и вычисляют критерий оптимальности, если критерий оптимальности улучшается, то округленное значение сохраняют и соответствующий код запоминают, и вычисляют и запоминают новое значение критерия оптимальности, в противном случае запоминают предыдущее значение кода и критерий оптимальности, и производят переход к следующему номеру дискретного значения функции L+1, в котором проверяют на улучшение (ухудшение) критерия оптимальности аналогичным образом, и далее процесс продолжают до тех пор, пока не будет улучшения критерия оптимальности в последовательности n дискретных точках, отсчитанных от дискретного значения, в котором последний раз произошло улучшение критерия оптимальности.
m
Способ осуществляется следующим образом, если в качестве критерия оптимальности берут минимизацию значения погрешности воспроизведения синусоидального сигнала, коды которого заданы в n дискретных точках его периода. Если амплитуда синусоидального сигнала равна 2, то тогда имеется следующий набор кодов:
m
N(i)={2*sin(2πi/n); i=t, 2, 3…n}
H
H
H
m
На первом этапе производят округление до ближайшего уровня n кодов последовательности N(i), и полученные коды запоминают. Затем вычисляют с помощью преобразования Фурье значения амплитуды первой гармоники спектра А последовательности N(i), и запоминают ее значение. Далее, находят абсолютную погрешность Δ между амплитудами первой гармоники спектра A и идеального синусоидального сигнала 2, и также запоминают ее значение:
H
H
m
Δ=2-A.
H
H
Абсолютная погрешность Δ и значение амплитуды А характеризуют последовательность N(i), прошедшую округление кодов функции до ближайшего уровня (исходное состояние способа).
1
1
1
1
H
1
1
1
1
H
1
j
j
Далее выбирают некоторый код функции в последовательности N(i), например, при i=1, то есть N(1). Изменяют направление округления в коде N(1) на противоположное N(1). Затем выполняют преобразование Фурье новой последовательности N(i), и определяют амплитуду первой гармоники А, а затем вычисляют погрешность Δ. Если |Δ|>|Δ|, то округленный код N(1) сохраняют, а также запоминают значение А. Если |Δ|>|Δ|, то код N(1) и А запоминают, и используют на следующем этапе округления. В дальнейшем будем обозначать запоминаемые параметры после j-того цикла округления через N(j), Δ и А, независимо от того, изменились ли эти параметры по сравнению с предыдущим j-1 циклом округления.
1
2
2
1
1
2
1
2
2
1
2
1
1
Далее переходят к следующему коду функции: N(2), меняют направление округления, получают код N(2) и определяют А и Δ точно так же, как это было сделано для кода N(1). Если |Δ|>|Δ|, то код N(2), Δ и А запоминают. Если же |Δ|<|Δ|, то запоминают значение кода N(2), Δ и А.
j
j
j-1
j
1
j
j
j-1
j
j-1
j-1
Этот процесс протекает для N(i) с последовательным перебором кодов. Если следующий код N(j) (j<n), то опять определяют А и Δ точно так же, как в предыдущих случаях. Если |Δ|>|Δ|, то округленный код N(j), а также Δ и А запоминают. Если |Δ|<|Δ|, то запоминают код N(j), Δ и A и переходят к следующему коду функции из последовательности N(i).
Если последний раз улучшение критерия оптимальности (в данном случае, уменьшение модуля абсолютной погрешности амплитуды синусоидального сигнала последовательности кодов N(i)) произошло в L-той (L<n) точке последовательности кодов функции N(i), а в последующих n точках уменьшения абсолютной погрешности не произошло, то процесс округления заканчивается.
Таким образом, после осуществления предложенного способа округления кодов функции по критерию оптимальности, минимизирующего модуль погрешности воспроизведения первой гармоники последовательности кодов N(i), как показывает моделирование, уменьшается на порядок, по сравнению с округлением кода до ближайшего уровня, значение абсолютной погрешности при числе двоичных разрядов m=(5…12) и числе точек на периоде n=(20…100). Аналогичные результаты получены при подавлении 2-й или 3-й гармоник в спектре последовательности N(i). Еще лучшие результаты получены по критерию оптимальности, связанному с точным генерированием среднеквадратического значения синусоидального сигнала. При тех же условиях по m и n выигрыш по точности достигает 50 раз по сравнению с округлением кодов в прототипе.