II Всероссийская конференция пользователей MATLAB, 25-26 мая 2004 года >>
На первую страницу
Рубрика Matlab&Toolboxes
Российские MATLAB-разработки
Вход
Раздел "Simulink Blocksets\Fixed-Point Blockset"

К.Г.Жуков,"Справочное руководство пользователя Fixed-Point Blockset": Содержание

В оглавление \ К следующему разделу \ К предыдущему разделу

3. Метод почленного масштабирования

3.1. Понятие масштаба

Решению задач с помощью Simulink (Fixed Point- Blockset) предшествует подготовительная работа, называемая программированием. Программирование в Simulink имеет много общего с программированием на аналоговых вычислительных машинах (АВМ). В процессе программирования по заданным мате-матическим зависимостям определяются необходимые функциональные (решающие) блоки и способ их соединения для воспроизведения решения исходной задачи. Кроме того, при программировании устанавливается соответствие между математическими переменными и машинными переменными Simulink.

Окончательный результат программирования (программа) представляет собой функциональную блок-диаг-раму (в АВМ структурная схема аналогового набора), которая при подготовки Simulink к работе использу-ется для соединения и установки параметров функциональных блоков.

Представление числовых данных в Simulink осуществляется в форме с плавающей точкой и поэтому не требует выполнения операции масштабирования. Математические переменные в Fixed -Point Blockset с помощью масштабов представляют в виде физических величин - машинных переменных. Зависимым мате-матическим переменным в Fixed - Point Blockset соответствуют машинные переменные - переменные представленные в форме с фиксированной точкой.

Масштабирование зависимых математических переменных - один из наиболее ответственных и сложных этапов программирования из-за противоречивости требований, предъявляемых к выбору масштабов. Главнейших требований три.

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

Второе - машинные переменные должны быть "наблюдаемы". Это значит, что они не должны быть малы, иначе их нельзя будет с достаточной точностью зафиксировать "измерительными средствами" Fixed - Point Blockset (Display, Scope, XYGraph). Значение машинной переменной считается малым, если оно соизмеримо с погрешностью функциональных блоков Fixed - Point Blockset.

Третье - машинная переменная не должна оставаться малой в течение значительного промежутка времени, ибо это может привести к отсутствию повторяемости результатов при повторном решении той же задачи из-за случайного характера погрешностей блоков Fixed - Point Blockset.

Зависимые математические переменные x, y, z в Fixed - Point Blockset представляются машинными переменными xf=mx*x, yf=my*y, zf=mz*z с помощью масштабов mx, my, mz.

Масштабы не имеют размерности. Масштаб математической (физической) переменной x представляет собой отношение машинной переменной xf к математической x, т.е.

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

(3.1)

где и максимальные (по модулю) значения машинной и математической переменных.

Величины максимальных значений обычно известны при постановке задачи. Когда же они неизвестны и не могут быть определены заранее даже ориентировочно, прибегают к введению единичных масштабов и функциональная блок - диаграмма формируется по физическому уравнению.

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

Зависимость текущего значения машинной переменной xf от текущего значения физической переменной x можно записать в виде

xf=mx*x (3.2)

и обратно - связь между физической и машинной переменными может быть записана как

(3.3)

Выбор масштабов для всех зависимых математических переменных в соответствии с выражением (3.1) по их максимальным значениям требует последующего согласования масштабов. Основная причина этого в том, что масштабы представления переменных при выполнении операций над машинными переменными должны удовлетворять определенным соотношениям, зависящим от вида операции и способа ее реализации функциональными блоками Fixed - Point Blockset. Для согласования масштабов используются блоки Gain.

Проиллюстрируем методику согласования масштабов на примерах реализации арифметических операций.

Рис.3.1. Окно для задания параметров блока Gain

Основу методики составляет известный в математике способ неопределенных коэффициентов. Применительно к рассматриваемым вопросам способ сводится к приравниванию коэффициентов исходного математического выражения коэффициентам математического выражения, отражающего работу функционального блока. В этом последнем математическом выражении фигурируют машинные переменные, выраженные через известные масштабы и через подлежащие определению параметры функциональных блоков.

3.2 Умножение на постоянный коэффициент с помощью блока FixPt Gain

Пусть требуется реализовать операцию

(3.4)

Масштабы представления переменных x, y выбраны по xmax, ymax и соответственно равны mx, my . На рис.3.2 показана функциональная блок - диаграмма для машинных переменных, поэтому коэффициент еще не определен. Его необходимо выбрать таким, чтобы машинная переменная yf , соответствующая переменной была представлена именно в масштабе my. Для определения запишем аналитическое выражение, связывающее машинные переменные my*y, mx*x

(3.5)

После деления правой и левой части выражения (3.5) на масштаб my получаем

(3.6)

Сравнивая теперь коэффициенты при переменной x в выражениях (3.4) и (3.6), находим

(3.7)

отсюда искомый коэффициент равен:

(3.8)

Коэффициент называют масштабным коэффициентом. Этим в названии подчеркивается важная функция по согласованию масштабов, которую выполняет блок Gain. Итак, согласование масштабов при реализации (3.4) приводит к выводу: масштабный коэффициент равен произведению структурного коэффициента на отношение масштабов выходной и входной переменных.

Рис.3.2. Функциональный блок Gain

Рассмотрим использование блока Gain при различных вариантах значений в выражении (3.4).

Пример 1.

Реализовать вычисление по формуле y=0.5x . Переменные xf , yf и постоянный коэффициент должны быть представлены 16-ти разрядными беззнаковыми дробными числами. Математическая переменная изменяется в диапазоне .

Масштаб переменной x определяется по формуле (3.1) и равен:

(3.9)

Максимальное значение машинной переменной отличается от 1 на величину веса младшего значимого разряда 2-16 (1-2-16). Замена его на 1 не вносит значительной погрешности при вычислении mx . Выбор масштаба переменной зависит от значения структурного коэффициента. В данном случае (=0.25) my целесообразно взять равным масштабу переменной x . В результате подстановки масштабов mx=my и =0.25 получим ==0.25.

Sim - модель, реализующая пример1, представлена на рис.3.3. Для задания значений переменной x используется блок Constant . Четыре значения xf из диапазона изменения x заданы в виде 1D массива и равны [0.25 0.5 0.75 1]. Результаты вычислений отображаются функциональными блоками Display. Блоки MinMax введены в модель для оценки погрешности. Абсолютная погрешность вычислений не превышает 10-5. Поля окна установки параметров блока Gain(рис.3.1) заполнены следующим образом:

Gain: 0.25
Multiplication: Element-wise (K.*U)
Parameter data type mode: Specify via dialog
Parameter data type: ufix(16)
Parameter scaling mode: Use specifed scaling
Parameter scaling: 2^-16
Out data type mode: Specify via dialog
Output data type: ufix(16)
Output scaling value: 2^-16

Рис.3.3. Sim-модель примера 1

Пример 2.

Вычислить длину окружности по формуле . Переменные и константу представить в той же форме, что и в примере 1. Значения радиуса - числа из диапазона . Учитывая выбранный формат данных, необходимо осуществить тождественное преобразование заданного выражения. После деления константы 2pi на число 10 и умножения переменной r на это же число получим:

(3.10)

Умножение радиуса r на 10 приведет к изменению заданного диапазона и увеличению максимального значения в 10 раз. Масштаб переменной r определяется выражением:

(3.11)

Значение масштаба выходной переменной l принимается равным значению mr . При этом масштабный коэффициент с точностью до пяти десятичных разрядов будет равен 0.62832. Sim - модель будет аналогична предыдущей. Необходимо изменить коэффициент усиления блока Gain и элементы входного массива блока Constant.

3.3. Выполнение операции сложения двух переменных с помощью блока FixPt Sum

Необходимо воспроизвести линейную комбинацию двух переменных x и y :

(3.12)

где , - заданные положительные числа

Пусть масштабы представления переменных x , y, z уже выбраны по максимальным значениям xmax , ymax , zmax соответственно равны mx , my , mz . Блок - диаграмма, воспроизводящая переменную zf ,представлена на рис.3.4. Блоки Gain1 и Gain2 на входах сумматора Sum осуществляют умножение переменных xf и yf на масштабные коэффициенты и . Для определения и запишем аналитическое выражение, связывающее машинные переменные mzz , mxx, myy.

Рис.3.4. Реализация операции сложения
(3.13)

После деления (3.13) на mz получаем:

(3.14)

Сравнивая коэффициенты при одинаковых переменных в выражениях (3.12) и (3.14), находим:

,

отсюда находим и

, (3.15)

Пример 3.

Вычислить по формуле (3.12) значение z при =15 и =0.5 . Максимальные значения входных переменных равны xmax=10 и ymax=100. В результате подстановки значений xmax и ymax в (3.12) найдем значение zmax=200. Масштабы переменных x, y, z соответственно равны mx=10-1, my=10-2, mz=0.5*10-2. Масштабные коэффициенты, вычисленные по формулам (3.15) имеют значения =0.75 и =0.25.

На рис.3.5 представлена функциональная блок-диаграмма, реализующая данный пример.

Моделирование подтверждает правильность выполненных расчетов. При максимальных значениях входных переменных отсутствует переполнение разрядной сетки, возникающее при выполнении операции сложения.

Рис.3.5. Sim-модель реализации примера 3

Замечание

В состав арифметических блоков Fixed-Point Blockset входит специальный блок Subtract. На практике нет необходимости использования этого блока, так как операция вычитания заменятся операцией сложения с представлением отрицательного слагаемого в дополнительном коде. Для реализации выражения z=x-y его преобразуют к виду z=x+(-y).

3.4. Выполнение операции умножения с помощью блока FixPt Product

Необходимо выполнить операцию умножения

(3.16)

где - некоторое положительное число. Масштабы переменных x, y, z фиксированы и равны mx , my, mz. Операция выполняется по схеме рис.3.6. Масштабный коэффициент подлежит определению из условия согласования масштабов.

Запишем уравнение, связывающее машинные переменные . Поделив последние уравнение на mx и сравнивая коэффициенты с исходным выражением, получаем

(3.17)
Рис.3.6. Умножение двух переменных

Пример 4.

Реализовать выражение (3.16) с помощью блоков Fixed-Point Blockset. Переменные и константу представить 16-ти разрядными беззнаковыми дробными числами в формате ufix(16). Значение коэффициента =0.5 , а входным переменным x и y соответствуют диапазоны и . Принимая mz=mxmy на основании формулы (3.17), получим значение коэффициента усиления блока Gain ==0.5. На рис.3.7 представлена Sim- модель с машинными переменными, соответсвующими x=xmax=1000 и y=2 . На дисплеи результат вычисления в машинных единицах. После деления на масштаб mz получим значение математической переменной z=1000.

Рис.3.7. Sim-модель реализации примера 4

3.5. Выполнение операции деления

Операция деления не играет обычно той решающей роли, которая при аппаратной реализации устройств цифровой обработки сигналов принадлежит сложению, вычитанию, умножению и умножению с накоплением результата. Если деление не реализуется отдельным операционным блоком, то оно может осуществляться путем итерационного процесса, включающего сложения, вычитания и умножения, по специальной процедуре. Такая процедура, может содержать 15-20 операций (в зависимости от необходимой точности, системы команд и других обстоятельств). Полагая, что деление будет встречаться в среднем один раз на 20 операций (5% делений из общего числа операций) найдем, что отсутствие деления снизило бы быстродействие системы примерно вдвое. С другой стороны, программисты, долго работающие с процессорами без операции деления, утверждают, что деление в действительности необходимо значительно реже.

Набор арифметических команд DSP обусловлен спецификой алгоритмов ЦОС, в которых основными операциями являются сложение (вычитание), умножение и их комбинация - умножение с накоплением (MAC). Операция деления (DIV) реализуется итерационной процедурой.

В Fixed - Point Blockset операцию деления выполняет арифметический блок Product в результате определенной настройки параметров.

В оглавление \ К следующему разделу \ К предыдущему разделу


О получении локальных копий сайтов
  Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro   
E-mail:    
  Информация на сайте была обновлена 11.05.2004 Copyright 2001-2004 SoftLine Co 
Наши баннеры