Соединение и дублирование блоков
Для объединения блоков в систему необходимо соединить их входные и выходные порты, которые на пиктограммах блоков отмечены значком ">". В качестве примера на рис. 5 показаны порты блока Gain (коэффициент усиления). Для того, чтобы соединить два блока между собой, надо подвести курсор мыши к порту одного из соединяемых блоков (при этом курсор примет форму крестика, как показано на рис. 6а), нажать левую клавишу мыши и, удерживая ее в нажатом положении, переместить курсор к порту другого блока (курсор примет вид двойного крестика, что отражено на рис. 6б), после чего отпустить удерживаемую клавишу.
Рисунок 5. Входные и выходные порты
Рисунок 6. Соединение блоков: а) в этом положении курсора нажать левую клавишу мыши; б) в этом положении курсора отпустить нажатую клавишу
Из рис. 1 видно, что для построения модели требуется по два блока Zero-Order Hold, Scope, Mux, Constant, Buffered FFT Frame Scope, Sum и три блока Gain. Конечно, можно многократно повторять процедуру перемещения одного и того же блока из библиотеки в окно создаваемой модели, однако Simulink позволяет создавать копии (дубликаты) блоков из имеющихся в окне модели. Для создания копии блока надо установить курсор на требуемый блок в окне модели, нажать на клавиатуре клавишу "Ctrl" и затем левую клавишу мыши. В результате, слева от курсора появится знак "+" (рис. 7а). Затем, удерживая клавиши в нажатом положении, переместить в нужное место курсор и отпустить нажатые клавиши. При построении модели, как видно из рис. 1, требуется не только соединять блоки между собой, но и делать ответвления от существующих соединительных линий. Например, линия, соединяющая блоки Quantizer и сумматор, имеет ответвление к блоку Gain1. Проведение линии, соединяющей входной порт какого-либо блока с существующей линией, выполняется аналогично дублированию блоков, то есть при нажатой клавише "Ctrl". Разница лишь в том, что в этом случае курсор мыши устанавливается на линию, от которой проводится ответвление, и перемещается к входному порту соединяемого блока, или, наоборот (от входного порта к линии).
Рисунок 7. Дублирование блоков: а) начальное положение курсора и результат нажатия левой клавиши мыши и "CTRL" на клавиатуре; б) результат перемещения курсора при удерживаемых клавишах
Задание параметров модели
Следующим шагом после построения модели простейшего АЦП является задание параметров входящих в неё блоков. Для этого надо дважды щёлкнуть левой клавишей мыши по выбранному блоку. В результате откроется окно, в котором показаны значения параметров, введённые ранее или установленные по умолчанию. В качестве примера на рис. 8 показано окно блока Signal Generator, в котором задана частота синусоидального сигнала, равная 128 Гц (по умолчанию – 1 Гц). Чтобы новые установки вступили в сипу, после ввода параметров надо щёлкнуть по кнопке "Apply" или "ОК". Окно параметров каждого блока имеет кнопку "Help" для получения необходимой справочной информации, поэтому здесь мы ограничимся рассмотрением лишь некоторых блоков, представляющих интерес с точки зрения обработки сигналов, а именно, Variance, Histogram и Buffered FFT Frame Scope. Эти блоки, как, впрочем, большинство блоков библиотеки DSP, работают как со скалярными, так и с векторными последовательностями (скалярными и векторными дискретными сигналами).
Рисунок 8. Окно и значения параметров блока Signal Generator
Примером скалярной последовательности может служить одноканальный сигнал, когда данные следуют одно за другим, то есть каждому временному отсчету соответствует одно значение сигнала. Многоканальный сигнал, когда одному и тому же временному отсчету соответствуют несколько значений, представляет собой векторную последовательность. Таким образом, скалярный сигнал задается вектором или одномерным массивом и (рис. 9а), в то время как векторный сигнал – матрицей U размерности MxN, в которой М строк соответствуют моментам времени 1, 2, ... М, а N значений k-ой строки представляют собой мгновенную выборку сигнала в момент времени к (рис. 9 б).
Окно параметров блока Variance показано на рис. 10. Блок предназначен для вычисления дисперсии входной последовательности данных и, в зависимости от параметра Running Variance, может работать в двух режимах: Basic Operation и Running Operation. Если этот параметр не включен, работа выполняется в режиме Basic Operation. В этом случае, если входная последовательность векторная, блок на каждом временном шаге вычисляет дисперсию текущей мгновенной выборки, если же входная последовательность скалярная, то, поскольку мгновенная выборка состоит из одного значения, выходом блока будет нуль.
Рисунок 9. Скалярные и векторные сигналы: а) скалярный сигнал; б) векторный сигнал
Рисунок 10. Окно и значения параметров блока Variance
В нашем случае (рис. 10) параметр Running Variance включен. Это означает, что блок работает в режиме Running Operation Если входной сигнал является скалярным, как это имеет место для обсуждаемой модели, дисперсия вычисляется на каждом временном шаге с учётом всех данных, поступивших на текущий момент времени, и отображается на пиктограмме блока Display Другими словами, в процессе работы модели блок Variance вычисляет, a Display отображает число, изменяющееся с частотой следования данных и равное дисперсии сигнала на интервале от начального до текущего момента времени. Если входной сигнал векторный, и мгновенная выборка содержит N значений, блок на каждом временном шаге вычисляет N значений дисперсии.
Включение параметра Reset Port (установка флажка, как показано на
рис. 10) приводит к появлению дополнительного входного порта Rst показанного на пиктограмме блока под основным входом In. Порт Rst принимает скалярный входной сигнал. В момент, когда в порт поступает ненулевое значение, происходит сброс накопленных данных, и блок выдаёт нулевое значение дисперсии. Таким образом, использование порта Rst целесообразно, когда требуется управлять размером временного окна, на котором оценивается дисперсия входного сигнала. Переключая ключ Switch двойным щелчком левой клавиши мыши, можно осуществлять это управление.
Обратимся теперь к блоку Histogram, окно параметров которого и введённые значения показаны на рис. 11. Параметр Running Histogram определяет способ обработки входных данных, он аналогичен параметру Running Variance блока Vanance Целое число Number of bins задаёт количество бинов (столбцов) для расчета гистограммы, a Minimum value of input u Maximum value of input определяют, соответственно, минимальное и максимальное значения, откладываемые по оси абсцисс при расчёте и построении гистограммы. Выходом блока является векторный сигнал, размерность которого равна количеству столбцов гистограммы а компоненты – высоте каждого из столбцов. Если установлен флажок Normalised, каждый выходной векторный отсчёт нормализуется к единице, то есть площадь гистограммы приводится к 1.
Рисунок 11. Окно и значения параметров блока Histogram
Построение гистограммы, динамически изменяющейся в соответствии с поступающими данными, выполняется блоком User-Defined Frame Scope. Форма отображения данных требует небольшого пояснения. На рис. 12 изображена гистограмма некоторого сигнала (серые столбики) и чёрная пиния, представляющая собой результат соединения отрезками прямых середин вершин соседних столбиков (отмечены кружочками). В обсуждаемой модели простейшего АЦП ("Chip News', № 2) блок User-Defined Frame Scope используется для построения таких кусочно-пинейных функций по выходным сигналам блока Histogram. Следует обратить внимание на то, что по оси абсцисс отложены номера интервалов группировки (начальный номер равен 0), а не границы этих интервалов.
Рисунок 12. Формирование графика блоком User-Defined Frame Scope (черная линия) для
отображения гистограммы (серые столбики)
Рассматриваемая модель содержит блоки Buffered FFT Frame Scope. Каждый из блоков вычисляет оценку СПМ дискретного сигнала по данным, находящимся в буфере. Окно параметров блока показано на рис. 13. Здесь длина последовательности, над которой выполняется преобразование Фурье, и длина буфера заданы как переменная N. Это означает, что в данном случае перед запуском модели в командном окне MATLAB необходимо присвоить этой переменной конкретное численное значение.
Рисунок 13. Окно и значения параметров блока Buffered FFT Frame Scope
Ряд блоков требует определения периода дискретизации (параметр Sample Time). Его можно задавать либо в численном виде, либо с помощью переменной, например, Т. В последнем случае перед запуском модели параметр Т должен быть определён в командном окне. Присвоение этому параметру значения "-1" приводит к тому, что данный блок автоматически устанавливает период дискретизации по входному сигналу. Автоматическое определение периода дискретизации возможно только тогда, когда буферизация данных выполняется без перекрытия (параметр Buffer overlap равен «0»), в противном случае, получаемые результаты будут некорректны.
После того, как параметры блоков модели определены, необходимо ввести информацию о начальном и конечном времени моделирования, методе численного интегрирования, используемого при расчете протекающих процессов, шаге интегрирования и другие сведения, определяемые пользователем [1,2]. Для этого в окне модели надо открыть раздел Parameters, находящийся в меню Simulation, и ввести необходимые данные. На этом процедура построения модели заканчивается, и полученную модель необходимо сохранить, для чего следует воспользоваться командой Save или Save as в меню File.
Результаты моделирования
После того, как модель построена и введена вся необходимая информация, модель готова к работе. Запуск модели осуществляется либо открытием меню Simulation и выбором команды Start, либо нажатием кнопки Start/Pause Simulation, либо из командного окна MATLAB.
Рисунок 14. Гистограмма шума квантования
Рисунок 15. СПМ входного и выходного сигналов АЦП
Результаты моделирования представлены на следующих рисунках:
• рис. 14 – гистограмма шума квантования;
• рис. 15 – СПМ сигнала;
• рис. 16 – СПМ шума округления;
• рис. 17 – фрагменты входного (светлая линия) и выходного (тёмная линия) сигналов АЦП.
Рисунок 16. СПМ шума квантования
При моделировании использовались следующие значения параметров: период дискретизации Т— 2-10; длина буфера данных N— 256; разрядность n моделируемого АЦП— 12; пределы измерений ±А входного сигнала (вводится значение А)— 1; мощность шума (блок Band-Limited White Noise) – 10-3; шаг квантования (блок Quantezer) – 2А/(2n); начальное и конечное время моделирования {start time и finish time в меню Simulation/Parameters) – соответственно, 0 и inf.
Рисунок 17. Фрагменты входного и выходного сигналов АЦП
Для оценки зависимости дисперсии шума квантования от разрядности АЦП было выполнено моделирование для значений разрядности n от 2 до 12 включительно, результаты представлены на рис. 18. Из него видно, что увеличение количества разрядов на единицу ведёт к уменьшению дисперсии шума приблизительно на 6 дБ, что согласуется с известными теоретическими результатами.
Рисунок 18. Зависимость дисперсии шума квантования от разрядности АЦП
Заключение
Как было отмечено, одним из достоинств системы Simulink являются простота и гибкость процесса построения модели. По мере накопления опыта, пользователь несомненно оценит и другие возможности, делающие Simulink мощным инструментом построения, отладки и исследования моделей разнообразных динамических систем. Важной особенностью функциональных блоков системы (в том числе, и входящих в рассматриваемую модель) является их многофункциональность. В зависимости от заданных параметров, один итот же блок может работать со скалярными или векторными сигналами, иметь или не иметь дополнительные входы и выходы и так далее. Например, в рассмотренной модели блок Signal Generator позволяет генерировать синусоидальные, пилообразные, прямоугольные и случайные сигналы. Изменяя параметры отдельных блоков при неизменной компоновке, можно моделировать системы с совершенно различными динамическими свойствами, что в полной мере относится и к модели, рассмотренной в статье.
Литература
"Chip News" № 2, стр.5
http://www.dsp.sut.ru/eng/research/publications/download/2000_3_matlab_for_dsp.pdf
Лабораторная работа 4