exponenta event banner

hdlverifier. FILSimulation

Моделирование FIL с помощью MATLAB

Описание

FILSimulation Система object™ соединяет выполнение FPGA с тестовым стендом MATLAB ®. Это достигается путем применения входных сигналов к модели HDL, работающей на FPGA, и считывания выходных сигналов из нее. Этот объект можно использовать для моделирования исходного или приемного устройства путем конфигурирования объекта только с портами ввода или вывода.

Для запуска моделирования, состоящего из тестового стенда MATLAB, связанного с выполнением FPGA:

  1. Настройте средство hdlverifier. Объект FILSimulation с помощью мастера FPGA-in-the-Loop.

  2. Создайте объект в конструкции и задайте его свойства.

  3. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Создание hdlverifier.FILSimulation Системный объект, используйте мастер FPGA-in-the-Loop для настройки FILSimulation Системный объект. Выходные данные FILWizard представляют собой файл с именем toplevel_fil, где toplevel - имя модуля HDL верхнего уровня. Затем можно создать объект System, присвоив его локальной переменной.

filobj = toplevel_fil создает системный объект, настроенный мастером FPGA-in-the-Loop. toplevel - имя модуля верхнего уровня в коде HDL.

Можно создать системный объект и задать его свойства:

filobj = toplevel_fil('InputSignals', {'/top/in1','/top/in2'}, ...
                           'OutputSignals', {'/top/out1','/top/out2'}, ...
                           'OutputDataTypes', {'double','fixedpoint'}, ...
                           'OutputSigned', [true,false]);
Можно также настроить свойства, доступные для записи, после создания объекта System:
filobj = toplevel_fil;
filobj.OutputDataTypes = char('fixedpoint', 'integer', 'fixedpoint');
filObj.OutputSigned = [false, true, true];

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Это свойство доступно только для чтения.

Параметры соединения с платой FPGA, определяемые как вектор символов или строковый скаляр. Вектор состоит из трёх частей:

  • Тип соединения

  • IP-адрес платы

  • MAC-адрес платы (необязательно)

Пример: char('UDP','192.168.0.2','00-0A-35-02-21-8A') указывает UDP-соединение с IP-адресом 192.168.0.2, где MAC-адрес платы 00-0A-35-02-21-8A.

Это свойство доступно только для чтения.

Имя верхнего уровня тестируемого проекта (DUT), указанное как вектор символов или строковый скаляр.

Пример: 'inverter_top'

Это свойство доступно только для чтения.

Имя платы FPGA, определяемое как вектор символов или строковый скаляр.

Путь к файлу программирования FPGA, определяемый как вектор символа или скаляр строки.

Пример: 'c:\work\filename'

Это свойство доступно только для чтения.

Наименование поставщика микросхемы FPGA, указанное как 'Xilinx', 'Microsemi', или 'Altera'.

Пример: 'Altera'

Это свойство доступно только для чтения.

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

Пример: 10 - Все входы имеют ширину десять битов.

Пример: [12,6,1] - Конструкция имеет три входа: Один 12 бит шириной, один 6 бит шириной, и один 1 бит шириной.

Это свойство доступно только для чтения.

Входные пути в коде HDL, указанные как символьный вектор, массив ячеек символьных векторов, строковый скаляр или строковый массив.

Пример: '/top/in1'

Пример: char('in1','in2')

Это свойство доступно только для чтения.

Ширина вывода в битах, заданная как целое число или вектор целых чисел.

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

Пример: 10 - Все выходы имеют ширину 10 бит.

Пример: [12,6,1] - Конструкция имеет три выхода: один - шириной 12 бит, один - шириной 6 бит, а один - шириной 1 бит.

Типы выходных данных, заданные как символьный вектор, массив ячеек символьных векторов, строковый скаляр или строковый массив.

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

Пример: 'integer'

Пример: char('integer','fixedpoint','integer')

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

Пример: [3,1]

Выходные длины дробей, заданные как целое число или как вектор целых чисел.

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

Пример: 10 - Все длины выходных дробей равны 10 битам.

Пример: [16,8] - одна выходная дробная длина составляет 16 бит, а другая имеет дробную длину 8 бит.

Это свойство доступно только для чтения.

Имена портов вывода в модуле верхнего уровня HDL, заданные как символьный вектор, массив ячеек символьных векторов, строковый скаляр или строковый массив.

Пример: 'out1',

Пример: char('out1','out2')

Знак вывода, заданный как false (неподписанный), true (подписанный) или как логический вектор.

Если предоставляется только скаляр, каждый вывод имеет один и тот же знак. В противном случае следует указать вектор того же размера, что и количество выходов.

Пример: true

Пример: [true, true, false] - три вывода, состоящие из подписанного значения, неподписанного значения и подписанного значения.

Аппаратный коэффициент оверклокинга, заданный как целое число.

Пример: 3

Это свойство доступно только для чтения.

Положение FPGA в цепочке сканирования JTAG, указанное как положительное целое число.

Пример: 1

Размер кадра источника, заданный как целое число. Это свойство релевантно только для исходных блоков HDL, то есть блоков HDL, не имеющих входов.

Пример: 1

Использование

Описание

пример

[hdloutputs] = filobj([hdlinputs]) подключается к FPGA, записывает hdlinputs в FPGA и читает hdloutputs от FPGA.

Входные аргументы

развернуть все

Входные данные для запуска в FPGA, заданные как массив значений. Размер массива должен соответствовать количеству входов модуля, выполняемого в FPGA.

Пример: [RealFft, ImagFft] = fft_obj(3,12); значения 3 и 12 вводятся в FPGA.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | Fixed-point

Выходные аргументы

развернуть все

Выходные данные, возвращаемые из FPGA, указаны как массив значений. Размер массива соответствует количеству выходов модуля, выполняемого в FPGA.

Пример: [RealFft, ImagFft] = fft_obj(real_in,imaginary_in); возвращает комплексное число из FPGA с двумя значениями: RealFft и ImagFft.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | Fixed-point

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

В этом примере используется объект MATLAB ® System и FPGA для проверки конструкции уровня передачи регистров (RTL) быстрого преобразования Фурье (FFT) размера 8, написанного в Verilog. БПФ обычно используется в цифровой обработке сигналов для получения частотного распределения сигнала.

Для проверки правильности этого БПФ предусмотрены средства тестирования объектов системы MATLAB. В этом испытании генерируются периодические синусоидальные входные данные в тестируемую конструкцию ЛПВП (DUT) и строятся графики коэффициентов Фурье в комплексной плоскости.

Установка среды программного обеспечения для проектирования FPGA

Перед использованием FPGA-in-the-Loop убедитесь, что системная среда правильно настроена для доступа к программному обеспечению FPGA. Функцию hdlsetuptoolpath можно использовать для добавления программного обеспечения FPGA к системному пути для текущего сеанса MATLAB.

Запустить мастер файлов

Запустите мастер FIL, предварительно заполненный информацией примера FFT. Введите информацию о плате FPGA на первом шаге, следуйте каждому шагу мастера и создайте файл программирования FPGA и объект FIL System.

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

Программа FPGA

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

run('fft8_fil/fft8_programFPGA');

Создание экземпляра системных объектов SineWave

Следующий код создает экземпляры системных объектов, которые представляют генератор синусоидальных волн (F = 100 Гц, Sampling = 1000 Гц, выход комплексной фиксированной точки).

SinGenerator = dsp.SineWave('Frequency ', 100, ...
                          'Amplitude', 1, ...
                          'Method', 'Table lookup', ...
                          'SampleRate', 1000, ...
                          'OutputDataType', 'Custom', ...
                          'CustomOutputDataType', numerictype([], 10, 9), ...
                          'ComplexOutput',true);

Создание экземпляра системного объекта FPGA-in-the-Loop

fft8_fil является настраиваемым объектом FILSimulation System, который представляет реализацию HDL FFT, выполняемую на FPGA в этой симуляционной системе.

Fft = fft8_fil;

Запуск моделирования

В этом примере моделируется генератор синусоидальных волн и реализация БПФ HDL через объект FPGA-in-the-Loop System. Этот раздел кода вызывает цикл обработки для обработки выборки данных.

for ii=1:1000
    % Read 1 sample from the sine wave generator
    ComplexSinus = step(SinGenerator);
    % Send/receive 1 sample to/from the HDL FFT on the FPGA
    [RealFft, ImagFft] = step(Fft,real(ComplexSinus),imag(ComplexSinus));
    % Store the FFT sample in a vector
    ComplexFft(ii) = RealFft + ImagFft*1i;
end

Отображение коэффициентов Фурье

Постройте график коэффициентов Фурье в комплексной плоскости.

% Discard the first 12 samples (initialization of the HDL FFT)
ComplexFft(1:12)=[];
% Display the FFT
plot(ComplexFft,'ro');
title('Fourier Coefficients in the Complex Plane');
xlabel('Real Axis');
ylabel('Imaginary Axis');

На этом завершается пример моделирования FPGA-in-the-Loop с использованием системного объекта MATLAB.

Представлен в R2012b