FPGA в цикле

FPGA в цикле (FIL) позволяет вам запустить симуляцию Simulink®, которая синхронизируется с проектом HDL, работающим на Intel® или плате Xilinx® FPGA. Эта ссылка между средством моделирования и платой позволяет вам проверить реализации HDL непосредственно по алгоритмам MATLAB® или Simulink. Можно применить реальные данные и сценарии тестирования от этих алгоритмов до проекта HDL на FPGA.

При симуляции блоков LTE HDL Toolbox™ необходимо использовать демонстрационный интерфейс потоковой передачи. Потоковая передача выборочных данных, в то время как требуется для аппаратных реализаций систем связи, длительна в FPGA в интерфейсе цикла с Simulink.

Можно преобразовать от систем координат до выборок и выборок к системам координат или в Simulink или в MATLAB. В зависимости от вашего рабочего процесса можно оптимизировать FPGA в симуляции цикла одним из двух способов.

Один рабочий процесс является моделью Simulink, которая импортирует обрамленные данные из MATLAB. Этот тип модели затем использует Frame To Samples и блоки Samples To Frame, чтобы преобразовать формат данных. Для FPGA в цикле замените эти блоки преобразования на блоки FIL Samples To Frame и FIL Frame To Samples.

Другой рабочий процесс является моделью Simulink, которая импортирует данные о потоковой передаче из MATLAB. Этот тип модели идет со скриптом MATLAB, который использует ltehdlFrameToSamples и ltehdlSamplesToFrames функции. Для FPGA в цикле измените свой скрипт и модель Simulink так, чтобы они передали векторы данных к FPGA в интерфейсе цикла.

Когда вы генерируете файл программирования для цели FIL в Simulink, инструмент создает модель, чтобы сравнить симуляцию FIL с вашим проектом Simulink. Для проектов LTE HDL Toolbox блок FIL в той модели реплицирует передающий потоком выборку интерфейс и отправляет одну выборку за один раз в FPGA. И эти модификации создают векторы, которые делают более эффективное использование интерфейса между моделью Simulink и платой FPGA.

Инструкции, которые следуют, показывают, как изменить FPGA в моделях цикла для Проверять Турбо Декодера с Потоковой передачей Данных MATLAB и Проверить Турбо Декодер с Обрамленными Данными из примеров рабочего процесса MATLAB.

Рабочий процесс FIL: обрамленные данные MATLAB

Автоматически сгенерированная модель FIL

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

Синяя подсистема ToFILSrc переходит демонстрационный потоковый ввод блока HDL Algorithm к подсистеме FromFILSrc. Синяя подсистема ToFILSink переходит демонстрационный поток выход блока HDL Algorithm в подсистему Compare, где это по сравнению с выходом блока HDL Algorithm_fil. Эта настройка является медленной, потому что модель отправляет только одну выборку и ее связанные управляющие сигналы, в каждом пакете к и от платы FPGA.

Измененная модель FIL

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

Создать эту модифицированную модель FIL:

  1. Удалите синие подсистемы и создайте ветвь во входном порту frame блока Frame To Samples.

  2. Вставьте блок FIL Frame To Samples перед блоком HDL Algorithm_fil. Вставьте блок FIL Samples To Frame после блока HDL Algorithm_fil.

  3. Установите Output frame size на блоке FIL к размеру входного кадра.

  4. В FIL Frame To Samples и блоках FIL Samples To Frame, установленных параметры, чтобы совпадать с настройками Frame To Samples и блоков Samples To Frame.

  5. Ветвь система координат выход блока Samples To Frame для сравнения. Можно сравнить целую систему координат целиком с блоком Diff. Сравните validOut сигналы с помощью блока XOR.

Входной размер в блоке FIL является форматом кадра от систем координат входных данных. Размер вектора портов блока FIL не изменяет сгенерированный HDL-код. Это влияет только на пакетный размер связи между средством моделирования и платой FPGA. Эта модифицированная модель передает целый кадр к плате FPGA в каждом пакете, значительно повысив эффективность линии связи.

Рабочий процесс FIL: потоковая передача данных MATLAB

Автоматически сгенерированная модель FIL

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

Синяя подсистема ToFILSrc переходит демонстрационный потоковый ввод блока HDL Algorithm к подсистеме FromFILSrc. Синяя подсистема ToFILSink переходит демонстрационный поток выход блока HDL Algorithm в подсистему Compare, где это по сравнению с выходом блока HDL Algorithm_fil. Эта настройка является медленной, потому что модель отправляет только одну выборку и ее связанные управляющие сигналы, в каждом пакете к и от платы FPGA.

Измененная модель FIL

Чтобы улучшить коммуникационную пропускную способность с платой FPGA, используйте сгенерированный блок FIL в различной модели. Альтернативная модель импортирует и экспортирует векторы сглаженных данных. Сопроводительный скрипт MATLAB изменяет входные и выходные данные и проверяет FIL выход по поведенческой модели. Изменение данных в MATLAB легче, и симуляция быстрее, чем изменение в Simulink.

Во-первых, измените сопроводительный скрипт MATLAB:

  1. Выберите формат кадра для симуляции FIL. Этот размер не должен совпадать с фактическими форматами кадра в сгенерированных данных. Это может содержать ваш целый набор данных. Блок FIL делит данные на максимальные пакеты размера для связи с платой FPGA.

    filframesize = 99;

  2. Объедините массив ячеек входных кадров в одну матрицу.

    allframes = [inframes{:}];
    

  3. Сгладьте выборки и управляющие сигналы, таким образом, существует один вектор для каждого входного порта на блоке FIL. Эта модель включает блок Turbo Decoder, таким образом, входные выборки состоят из трех значений.

    sysIn = allframes(1:3:end); 
    p1In  = allframes(2:3:end);
    p2In  = allframes(3:3:end);
    
    ctrlstartIn = ctrlIn(1:3:end);
    ctrlendIn   = ctrlIn(2:3:end);
    ctrlvalidIn = ctrlIn(3:3:end);

  4. Вызовите модель FIL.

    simTime = size(allframes,1);
    modelname = 'TurboDecoderStreamingFILVectortoSL';
    open_system(modelname);
    sim(modelname);
    

  5. Измените выходные переменные для входа к ltehdlSamplesToFrames функция. Воссоздайте N-by-3 матрица управляющего сигнала и вектор выборочных данных. В этом примере выходная выборка является одним значением. Если выходная выборка является несколькими значениями, создайте N-by-SampleSize демонстрационная матрица.

    sampleOut = squeeze(sampleOut_ts.Data);
    ctrlOut = [squeeze(ctrlstartOut_ts.Data) ...
         squeeze(ctrlendOut_ts.Data) ...
         squeeze(ctrlvalidOut_ts.Data)];

Затем создайте модель Simulink:

  1. Скопируйте сгенерированный блок FIL в новую модель.

  2. Сконфигурируйте и соедините блок Signal From Workspace для каждого входного порта на блоке FIL. Используйте переменные из своего скрипта MATLAB как значения параметров.

  3. Установите Output frame size на блоке FIL к желаемому формату кадра FIL.

  4. Сконфигурируйте и соедините блок To Workspace для каждого выходного порта блока FIL.

Входной размер в блоке FIL является форматом кадра, который вы задаете на блоках Signal To Workspace. Размер вектора портов блока FIL не изменяет сгенерированный HDL-код. Это влияет только на пакетный размер связи между средством моделирования и платой FPGA. Эта модифицированная модель передает целый кадр к плате FPGA в каждом пакете, значительно повысив эффективность линии связи.

Похожие темы