hdlverifier. FILSimulation

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

Описание

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

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

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

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

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

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

Создание

Чтобы создать Системный объект 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 Используя Системные объекты (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 - All выходные параметры 10 битов шириной.

Пример: [12,6,1] – проект имеет три выходных параметров: каждый 12 битов шириной, каждый 6 битов шириной, и каждый 1 бит шириной.

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

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

Пример: 'integer'

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

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

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

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

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

Пример: 10 — All длины части вывода составляет 10 битов.

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

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

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

Пример: 'out1',

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

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

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

Пример: true

Пример: [true, true, false] — Three выходные параметры, состоящие из значения со знаком, значения без знака и значения со знаком.

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

Пример 3

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

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

Пример 1

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

Пример 1

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

[hdloutputs] = filobj([hdlinputs])

Описание

пример

[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, чтобы добавить ISE или Куарта II к системному пути для текущего сеанса работы с MATLAB.

Для плат FPGA Xilinx, выполнения

>>hdlsetuptoolpath('ToolName', 'Xilinx ISE', 'ToolPath', 'C:\Xilinx\13.1\ISE_DS\ISE\bin\nt64\ise.exe');

Этот пример принимает, что исполняемый файл ISE Xilinx является C:\Xilinx\13.1\ISE_DS\ISE\bin\nt64\ise.exe. Займите место со своим фактическим исполняемым файлом, если это отличается.

Для плат Altera, выполнения

>>hdlsetuptoolpath('ToolName','Altera Quartus II','ToolPath','C:\altera\11.0\quartus\bin\quartus.exe');

Этот пример принимает, что исполняемый файл Куарта II Altera является C:\altera\11.0\quartus\bin\quartus.exe. Займите место со своим фактическим исполняемым файлом, если это отличается.

Скопируйте файлы HDL БПФ

Скопируйте файлы HDL для примера БПФ в вашу локальную директорию

copyFILDemoFiles('fft');

Запустите FilWizard

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

FPGA программы

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

run('fft8_fil/fft8_programFPGA');
### Generating iMPACT command file
### Checking iMPACT tool
### Start loading bitstream "S:\MATLAB\demo\fft8_fil\fft8_fil.bit"
### Loading bitstream "S:\MATLAB\demo\fft8_fil\fft8_fil.bit" completed successfully

Инстанцируйте системных объектов 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');

% This concludes the "FPGA-in-the-Loop simulation using MATLAB System
% Object" example.

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