Сгенерируйте HDL-код для HDL БПФ оптимизированный блок

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

  • Streaming Radix 2^2 - Для высоких приложений пропускной способности. Достигает Gigasamples в секунду, когда вы используете векторный вход.

  • Burst Radix 2 - Для низких приложений области. Использование только одна комплексная бабочка.

Этот пример включает две модели, которые показывают, как использовать потоковую передачу и разорвать архитектуру блока FFT HDL Optimized, соответственно.

Потоковая передача основания 2^2 архитектура

Современные ADCs способны к выборке сигналов на уровне частот дискретизации до нескольких Gigasamples в секунду. Однако тактовые частоты для самого быстрого FPGA далеки от этой частоты дискретизации. FPGAs, обычно запущенный на уровне сотен МГц. Один способ выполнить GSPS, обрабатывающий на FPGA, состоит в том, чтобы обработать несколько выборок одновременно на намного более низкой тактовой частоте. Много современных FPGAs поддерживают стандартный интерфейс JESD204B, который принимает скалярный вход на тактовой частоте GHz и производит вектор выборок на более низкой тактовой частоте. Поэтому современная обработка сигналов требует векторной обработки.

Архитектура Streaming Radix 2^2 разработана, чтобы поддержать высокий вариант использования пропускной способности. Эта модель в качестве примера использует размер входного вектора 8 и вычисляет БПФ с помощью архитектуры Streaming Radix 2^2. Смотрите HDL БПФ Оптимизированная документация для синхронизации схемы, поддерживавших функций и использования ресурсов FPGA.

Откройте модель в качестве примера:

modelname = 'FFTHDLOptimizedExample_Streaming';
open_system(modelname);

Коллбэк InitFcn (Образцовые Свойства> Коллбэки> InitFcn) устанавливает параметры для модели. В этом примере параметры управляют размером БПФ и характеристик входных данных.

FFTLength  = 512;

Входные данные являются двумя синусоидами, 200 кГц и 250 кГц, каждый выбранный в 1*2e6 Гц. Размер входного вектора является 8 выборками.

FrameSize    = 8;
Fs           = 1*2e6;

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

ValidPattern = [1,0];

Визуализируйте результат со Средством просмотра Спектра.

open_system('FFTHDLOptimizedExample_Streaming/Spectrum Viewer/Power Spectrum viewer');

% Run the example model:
sim(modelname);

Разорвите Основание 2 (Минимальный ресурс) Архитектура

Используйте архитектуру Burst Radix 2 для приложений с ограниченными ресурсами FPGA, особенно когда длина БПФ будет большой. Эта архитектура использует только одну комплексную бабочку, чтобы вычислить БПФ. Проект принимает данные, в то время как ready утверждается и начинает обрабатывать, если целый кадр БПФ сохранен в память. При обработке проект не может принять данные, таким образом, ready является de-asserted. Смотрите HDL БПФ Оптимизированная документация для синхронизации схемы, поддерживавших функций и использования ресурсов FPGA.

modelname = 'FFTHDLOptimizedExample_Burst';
open_system(modelname);

Коллбэк InitFcn (Образцовые Свойства> Коллбэки> InitFcn) устанавливает параметры для модели. В этом примере параметры управляют размером БПФ и характеристик входных данных.

FFTLength  = 512;

Входные данные являются двумя синусоидами, 200 кГц и 250 кГц, каждый выбранный в 1*2e6 Гц. Данные допустимы каждый цикл.

Fs           = 1*2e6;
ValidPattern = 1;

Визуализируйте результат со Средством просмотра Спектра.

open_system('FFTHDLOptimizedExample_Burst/Spectrum Viewer/Power Spectrum viewer');

% Run the example model:
sim(modelname);

Сгенерируйте HDL-код и испытательный стенд

Лицензия HDL Coder™ требуется, чтобы генерировать HDL для этого примера.

Выберите одну из моделей, чтобы сгенерировать HDL-код и испытательный стенд:

    systemname = 'FFTHDLOptimizedExample_Burst/FFT HDL Optimized Burst';
or
    systemname = 'FFTHDLOptimizedExample_Streaming/FFT HDL Optimized Streaming';

Используйте временную директорию для сгенерированных файлов:

    workingdir = tempname;

Можно запустить следующую команду, чтобы проверять на совместимость генерации HDL-кода:

     checkhdl(systemname,'TargetDirectory',workingdir);

Запустите следующую команду, чтобы сгенерировать HDL-код:

     makehdl(systemname,'TargetDirectory',workingdir);

Запустите следующую команду, чтобы сгенерировать испытательный стенд:

     makehdltb(systemname,'TargetDirectory',workingdir);