exponenta event banner

Тестирование компонента фильтра в MATLAB

®

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

Для скомпилированных и разработанных HDL-файлов используется временный каталог. Как только снимок будет готов, мы начнем сеанс симулятора Cadence ® Incisive ®. (Необходимо иметь исполняемые файлы симулятора Incisive в PATH.) Мы используем совместное соединение памяти между MATLAB и имитатором HDL, так что оба должны быть на одном компьютере.

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

Файл lowpass_filter.v содержащий фильтр нижних частот, созданный кодером HDL конструкции фильтра.

Файл 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 для выполнения в имитаторе ЛПВП перед запуском моделирования. Следующие списки команд будут выполняться в оболочке Tcl. Команды компилируют и разрабатывают проект, а затем запускают ncsim с помощью команды hdlsimmatlab Tcl. Все команды, которым предшествует -input, передаются 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 ®

Теперь запускаем имитатор ЛПВП с помощью команды nclaunch. 'tclstart' приводит к выполнению указанных команд Tcl при запуске. После запуска имитатора ЛПВП запустите моделирование с помощью команды run в ncsim с указанием соответствующего времени моделирования. Например, тип run 100000.

nclaunch('tclstart',tclcmd);

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

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

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