FPGA в цикле (FIL) позволяет вам запустить симуляцию Simulink®, которая синхронизируется с проектом HDL, работающим на Intel® или плате Xilinx® FPGA. Эта ссылка между средством моделирования и платой позволяет вам проверить реализации HDL непосредственно по алгоритмам MATLAB® или Simulink. Можно применить реальные данные и сценарии тестирования от этих алгоритмов до проекта HDL на FPGA.
При симуляции блоков LTE HDL Toolbox™ необходимо использовать демонстрационный интерфейс потоковой передачи. Потоковая передача выборочных данных, в то время как требуется для аппаратных реализаций систем связи, длительна в FPGA в интерфейсе цикла с Simulink.
Можно преобразовать от кадров до выборок и выборок к кадрам или в Simulink или в MATLAB. В зависимости от вашего рабочего процесса можно оптимизировать FPGA в симуляции цикла одним из двух способов.
Один рабочий процесс является моделью Simulink, которая импортирует обрамленные данные из MATLAB. Этот тип модели затем использует Кадр Для Выборок и Выборок, Чтобы Структурировать блоки, чтобы преобразовать формат данных. Для FPGA в цикле замените эти блоки преобразования на Кадр FIL К Выборкам и Выборкам FIL, Чтобы Структурировать блоки.
Другой рабочий процесс является моделью Simulink, которая импортирует данные о потоковой передаче из MATLAB. Этот тип модели идет со скриптом MATLAB, который использует функции ltehdlSamplesToFrames
и ltehdlFrameToSamples
. Для FPGA в цикле измените свой скрипт и модель Simulink так, чтобы они передали векторы данных к FPGA в интерфейсе цикла.
Когда вы генерируете файл программирования для цели FIL в Simulink, инструмент создает модель, чтобы сравнить симуляцию FIL с вашим проектом Simulink. Для проектов LTE HDL Toolbox блок FIL в той модели реплицирует передающий потоком выборку интерфейс и отправляет одну выборку за один раз в FPGA. И эти модификации создают векторы, которые делают более эффективное использование интерфейса между моделью Simulink и платой FPGA.
Инструкции, которые следуют, показывают, как изменить FPGA в моделях цикла для Проверять Турбо Декодера с Потоковой передачей Данных MATLAB и Проверить Турбо Декодер с Обрамленными Данными из примеров рабочего процесса MATLAB.
Сгенерированную модель, включая блок FIL, который взаимодействует через интерфейс с платой FPGA, показывают для модели, которая преобразовывает в потоковую передачу выборок в Simulink. Если каждая выборка представлена несколькими значениями, то значения сглажены в отдельные порты для FIL.
Синяя подсистема ToFILSrc переходит демонстрационный потоковый ввод блока HDL Algorithm к подсистеме FromFILSrc. Синяя подсистема ToFILSink переходит демонстрационный поток вывод блока HDL Algorithm в Сравнить подсистему, где это по сравнению с выводом блока HDL Algorithm_fil. Эта настройка является медленной, потому что модель отправляет только одну выборку и ее связанные управляющие сигналы, в каждом пакете к и от платы FPGA.
Чтобы улучшить коммуникационную пропускную способность с платой FPGA, измените автоматически сгенерированную модель. Измененная модель использует Кадр FIL Для Выборок и Выборок FIL, Чтобы Структурировать блоки, чтобы передать один кадр за один раз.
Создать эту измененную модель FIL:
Удалите синие подсистемы и создайте ответвление во входном порту frame блока Frame To Samples.
Вставьте блок FIL Frame To Samples перед блоком HDL Algorithm_fil. Вставьте блок FIL Samples To Frame после блока HDL Algorithm_fil.
Установите Output frame size на блоке FIL к входному формату кадра.
В Кадре FIL К Выборкам и Выборкам FIL, Чтобы Структурировать блоки, установите параметры, чтобы совпадать с настройками Кадра К Выборкам и Выборкам, Чтобы Структурировать блоки.
Ответвление кадр вывод блока Samples To Frame для сравнения. Можно сравнить целый кадр целиком с блоком Diff. Сравните сигналы validOut
с помощью блока XOR.
Входной размер в блоке FIL является форматом кадра от кадров входных данных. Векторный размер портов блока FIL не изменяет сгенерированный HDL-код. Это влияет только на пакетный размер связи между средством моделирования и платой FPGA. Эта измененная модель передает целый кадр к плате FPGA в каждом пакете, значительно повысив эффективность линии связи.
Сгенерированную модель, включая блок FIL, который взаимодействует через интерфейс с платой FPGA, показывают для модели, которая преобразовывает в потоковую передачу выборок в MATLAB. Если каждая выборка представлена несколькими значениями, то значения сглажены в отдельные порты для FIL.
Синяя подсистема ToFILSrc переходит демонстрационный потоковый ввод блока HDL Algorithm к подсистеме FromFILSrc. Синяя подсистема ToFILSink переходит демонстрационный поток вывод блока HDL Algorithm в Сравнить подсистему, где это по сравнению с выводом блока HDL Algorithm_fil. Эта настройка является медленной, потому что модель отправляет только одну выборку и ее связанные управляющие сигналы, в каждом пакете к и от платы FPGA.
Чтобы улучшить коммуникационную пропускную способность с платой FPGA, используйте сгенерированный блок FIL в различной модели. Альтернативный импорт модели и векторы экспорта сглаженных данных. Сопроводительный скрипт MATLAB изменяет входные и выходные данные и проверяет FIL вывод по поведенческой модели. Изменение данных в MATLAB легче, и симуляция быстрее, чем изменение в Simulink.
Во-первых, измените сопроводительный скрипт MATLAB:
Выберите формат кадра для симуляции FIL. Этот размер не должен совпадать с фактическими форматами кадра в сгенерированных данных. Это может содержать ваш целый набор данных. Блок FIL делит данные на максимальные пакеты размера для связи с платой FPGA.
filframesize = 99;
Объедините массив ячеек входных кадров в одну матрицу.
allframes = [inframes{:}];
Сгладьте выборки и управляющие сигналы, таким образом, существует один вектор для каждого входного порта на блоке 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);
Вызовите модель FIL.
simTime = size(allframes,1);
modelname = 'TurboDecoderStreamingFILVectortoSL';
open_system(modelname);
sim(modelname);
Измените выходные переменные для входа к функции 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:
Скопируйте сгенерированный блок FIL в новую модель.
Сконфигурируйте и соедините блок Signal From Workspace для каждого входного порта на блоке FIL. Используйте переменные из своего скрипта MATLAB как значения параметров.
Установите Output frame size на блоке FIL к желаемому формату кадра FIL.
Сконфигурируйте и соедините блок To Workspace для каждого выходного порта блока FIL.
Входной размер в блоке FIL является форматом кадра, который вы задаете на Сигнале К блокам Рабочей области. Векторный размер портов блока FIL не изменяет сгенерированный HDL-код. Это влияет только на пакетный размер связи между средством моделирования и платой FPGA. Эта измененная модель передает целый кадр к плате FPGA в каждом пакете, значительно повысив эффективность линии связи.