Перейти к содержанию
    

Altera FIR Compiler

Кто знает/подскажет, при использовании fixed point (S0.29) какой размер коэффициентов подставлять в coef_seq?

Я подбирал такое для того, чтобы шина параметров стала 32 бит, нормирую сам (результат почти совпадает с тем, что показывается на закладке просмотра коэффициентов).

Вызываю так:

coef_seq.exe fir_normalized_coeff_lpf_1550.txt fir_normalized_coeff_lpf_1550_reseq.txt SER M4K MSYM 32 2 SGL 1 32

Параметры в аттачменте... после моей загрузки АЧХ отличается от того, что с предзагруженными фильтрами.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, дело в последовательности дёргания выводов мегафункции. Попробовал - создал набор коэффициентов из 481 нуля, отдал на обрботку coef_seq. Получил от неё те же нули, только побольше. После загрузки сигнал на выходе фильтра продолжает присутствовать (АЧХ меняется, но не так как требуется).

Вот функция:

// Биты доступа к массиву коэффициентов FIR фильтра в FPGA
#define TARGET_FPGA_FIR_PORT_C(v)    do { GPIOH->REGSETRESET_C = (v); __DSB(); } while (0)
#define TARGET_FPGA_FIR_PORT_S(v)    do { GPIOH->REGSETRESET_S = (v); __DSB(); } while (0)
#define TARGET_FPGA_FIR_CLK_BIT (1U << 0)    /* PH0 - XTAL1 - fir clocl */
#define TARGET_FPGA_FIR_CS_BIT (1U << 1)    /* PH1 - XTAL2 - fir nce */
//#define TARGET_FPGA_FIR_CS_BIT (1U << 10)    /* PF10 - SPDIF_USER1 */
#define TARGET_FPGA_FIR_INITIALIZE() do { \
            arm_hardware_pioh_outputs(TARGET_FPGA_FIR_CS_BIT, TARGET_FPGA_FIR_CS_BIT); \
            arm_hardware_pioh_outputs(TARGET_FPGA_FIR_CLK_BIT, 0); \
        } while (0)

static void board_fpga_fir_initialize(void)
{
    TARGET_FPGA_FIR_INITIALIZE();
}

static void board_fpga_fir_strobe(void)
{
    // strobe
    TARGET_FPGA_FIR_PORT_S(TARGET_FPGA_FIR_CLK_BIT); __DSB();
    TARGET_FPGA_FIR_PORT_C(TARGET_FPGA_FIR_CLK_BIT); __DSB();
}

static const FLASHMEM int_fast32_t board_fir_seq [] =
{
//#include "..\tools\coef_seq\fir_normalized_coeff_lpf_200_reseq.txt"
//#include "..\tools\coef_seq\fir_normalized_coeff_lpf_1550_reseq.txt"
#include "..\tools\coef_seq\fir_normalized_coeff_zero_reseq.txt"
};

/* Выдача расчитанных параметров фильтра в FPGA */
static void board_fpga_fir_send(void)
{
    //hardware_spi_connect16w(SPIC_SPEEDUFAST, SPIC_MODE3);
    hardware_spi_connect16w(SPIC_SPEEDFAST, SPIC_MODE3);

    // strobe
    board_fpga_fir_strobe();    // one strobe without WE required
    //prog_select(targetfir1);
    TARGET_FPGA_FIR_PORT_C(TARGET_FPGA_FIR_CS_BIT);

    unsigned i = 0;
    {
        const int_fast32_t v = board_fir_seq [i];    // here "0" value
        hardware_spi_word_p1(v >> 16);
        hardware_spi_word_p2(v >> 0);
        hardware_spi_complete();
        // strobe
        board_fpga_fir_strobe();    // 1-st dummy
        // strobe
        board_fpga_fir_strobe();    // 2-nd dummy
        // strobe
        board_fpga_fir_strobe();
    }
    for (i = 1; i < sizeof board_fir_seq / sizeof board_fir_seq [0]; ++ i)
    {
        const int_fast32_t v = board_fir_seq [i];
        hardware_spi_word_p1(v >> 16);
        hardware_spi_word_p2(v >> 0);
        hardware_spi_complete();
        // strobe
        board_fpga_fir_strobe();
    }

    // strobe
    board_fpga_fir_strobe();
    //prog_unselect(targetfir1);
    TARGET_FPGA_FIR_PORT_S(TARGET_FPGA_FIR_CS_BIT);
    // strobe
    board_fpga_fir_strobe();

    hardware_spi_disconnect();
}

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рискну сделать UP своего вопроса по использованию порта загрузки параметров фильтра в блок FIR Compiler (не FIR II Compiler) -

Изменено пользователем des00

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рискну сделать UP своего вопроса по использованию порта загрузки параметров фильтра в блок FIR Compiler (не FIR II Compiler) -

Проблема решена. Код, приведённый выше - правильный.

Кроме того, пробравшись сквозь дебри _индусского_ кода coef_seq.cpp, сделана загрузка рассчитанных параметров фильтра "на лету" - пользователь крутит ручку и слушает результат работы фильтров сразу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли какие-нибудь способы кроме "писать самому" чтобы получить FIR фильтр с разрядностью входных данных больше, чем 32? Altera.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...