hdlverifier.FILSimulation

Симуляция FIL с MATLAB

Описание

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

Запускать симуляцию, состоящую из испытательного стенда MATLAB, связывающегося с выполнением FPGA:

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

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

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

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

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

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

  • Тип подключения

  • IP-адрес Совета

  • (Дополнительный) Мак адрес Совета

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

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

Высокоуровневое имя проекта под тестом (DUT) в виде вектора символов или строкового скаляра.

Пример: 'inverter_top'

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

Плата FPGA называет в виде вектора символов или строкового скаляра.

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

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

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

Имя производителя чипов FPGA в виде 'Xilinx', 'Microsemi', или 'Altera'.

Пример: 'Altera'

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

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

Пример: 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')

Знак выходных параметров в виде лжи (без знака), верной (подписанный), или как логический вектор.

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

Пример: 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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Чтобы проверить правильность этого БПФ, испытательный стенд Системного объекта MATLAB обеспечивается. Этот испытательный стенд генерирует периодический синусоидальный вход к проекту под тестом (DUT) HDL и строит Коэффициенты Фурье в Комплексной плоскости.

Установите программную среду проекта FPGA

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

Запустите FilWizard

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

FPGA программы

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

run('fft8_fil/fft8_programFPGA');

Инстанцируйте системных объектов SineWave

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

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

Инстанцируйте FPGA в системном объекте цикла

fft8_fil является индивидуально настраиваемым Системным объектом FILSimulation, который представляет реализацию HDL БПФ, работающего на FPGA в этой системе симуляции.

Fft = fft8_fil;

Запустите симуляцию

Этот пример симулирует генератор синусоиды и реализацию HDL БПФ через FPGA в Системном объекте цикла. Этот раздел кода вызывает цикл обработки, чтобы обработать выборку выборкой данных.

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 в использовании симуляции цикла пример" Системного объекта MATLAB.

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