Проверка фильтрующего компонента в MATLAB

®

В этом примере показано, как MATLAB ® может использоваться в качестве тестового стенда для HDL-компонента. Мы скомпилируем HDL фильтр нижних частот, а затем протестируем его с помощью matlabtb.

Временная директория используется для составленных и разработанных файлов HDL. Когда снимок готов, мы начинаем сеанс симулятора Cadence ® Incisive ®. (Вы должны иметь исполняемые файлы Incisive simulator на вашем ПУТЬ.) Мы используем соединение общей памяти между MATLAB симулятором HDL, поэтому оба должны быть на одном компьютере.

В этом примере фильтр нижних частот Verilog был разработан и сгенерирован с помощью продукта MathWorks™ Filter Design HDL Coder™, и наша задача - протестировать его путем сравнения с фильтром MATLAB. Мы не будем запускать filter designer в этом примере. Фильтр имеет шаг расчета 10 нс (скорость дискретизации 100 МГц) с полосой пропускания Fpass = 20 МГц и полосой остановки Fstop = 25 МГц. Фильтр Verilog имеет задержку в двух выборках.

Файловый lowpass_filter.v содержит фильтр нижних частот, сгенерированный Filter Design HDL Coder.

Файловая filter_tb_incisive.m содержит испытательный стенд MATLAB.

srcfile = fullfile(matlabroot,'toolbox','edalink','extensions','incisive','incisivedemos','Filter','lowpass_filter.v');

Создайте директорию проекта

Создадим временную рабочую директорию, в которой будет компилироваться проект.

projdir = tempname;
warnstatus = warning('off','MATLAB:MKDIR:DirectoryExists');
mkdir(projdir);
warning(warnstatus);

Запуск сервера MATLAB

Запускаем сервер MATLAB, hdldaemon, такой, что он использует коммуникацию общей памяти.

hdldaemon;
HDLDaemon shared memory server is running with 0 connections

Задайте команды TCL

Далее задаем команды Tcl, которые будут выполняться в Симулятор HDL до запуска симуляции. Следующие списки команд будут выполняться в интерпретаторе Tcl. Команды скомпилируют и проработают проект, а затем запустят ncsim с помощью команды hdlsimmatlab Tcl. Все команды, предшествующие -вход, передаются в ncsim и выполняются в интерпретаторе ncsim Tcl. Эти команды будут:

  • изменить рабочую директорию

  • скомпилировать фильтр verilog

  • разработать фильтр и включить доступ чтения записи к портам

  • запустите ncsim с поддержкой испытательного стенда MATLAB по вызову hdlsimmatlab, оставшиеся команды выполняются в ncsim

  • планируйте вызов функции MATLAB filter_tb_incisive каждые 10 нс

  • включите часы

  • сбросить модуль через 22 нс

  • управляйте 10 ns часами

  • инициализируйте вход фильтра в 0

tclcmd = {  ['cd ',projdir],...
            ['exec ncvlog -64bit ' srcfile],...
            'exec ncelab -64bit -access +wc lowpass_filter',...
            ['hdlsimmatlab -gui  lowpass_filter ', ...
             ' -input "{@matlabtb lowpass_filter 10ns -repeat 10ns -mfunc filter_tb_incisive}"',...
             ' -input "{@force lowpass_filter.clk_enable 1 -after 0ns}"',...
             ' -input "{@force lowpass_filter.reset 1 -after 0ns 0 -after 22ns}"',...
             ' -input "{@force lowpass_filter.clk 1 -after 0ns 0 -after 5ns -repeat 10ns}"',...
             ' -input "{@deposit lowpass_filter.filter_in 0}"',...
            ]};

Запустите симулятор Incisive ®

Теперь запускаем Симулятор HDL через команду nclaunch. The 'tclstart' свойство приводит к выполнению заданных команд Tcl при запуске. После запуска Симулятора HDL начните симуляцию с помощью команды run в ncsim консоль, задающая соответствующее время симуляции. Для примера типа run 100000.

nclaunch('tclstart',tclcmd);

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

На этом этот пример завершается.

Обязательно закройте Симулятор HDL, когда вы сделаете это с помощью этого примера, так как каждый раз, когда пример запускается, запускается новый сеанс симулятора. Также имейте в виду, что этот пример создал некоторые временные файлы во временной директории.

Для просмотра документации необходимо авторизоваться на сайте