hdlverifier.FILSimulation

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

Описание

The 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-адрес платы

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

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

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

Проект тестируемого (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.

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

Типы данных: 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 ® System и FPGA, чтобы проверить проект уровня передачи регистров (RTL) быстрого преобразования Фурье (FFT) размера 8, написанного в Verilog. БПФ обычно используется в цифровой обработке сигналов для создания частотного распределения сигнала.

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

Настройка окружения программного обеспечения Проект

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

Запуск FilWizard

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

filWizard('fft_hdlsrc/fft8_sysobj_fil.mat');

Программа ПЛИС

Запрограммируйте 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 в цикле

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

Fft = fft8_fil;

Запуск симуляции

Этот пример моделирует генератор синусоиды и реализацию FFT 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');

На этом Цикле симуляции на примере MATLAB System Object ".

Введенный в R2012b