ID do artigo: 000077859 Tipo de conteúdo: Documentação e informações do produto Última revisão: 23/04/2013

Como implementar um multiplicador complexo 25x18 em apenas 3 blocos DSP de precisão varialbe?

Ambiente

  • Intel® Quartus® II Subscription Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descrição

    Todas as famílias de dispositivos de 28 nm, incluindo Stratix® V, Arria® V e Cyclone® V, podem suportar uma estrutura de multiplicador complexo 25x18 usando 3 blocos DSP de precisão variável.

    Há uma limitação no software Quartus® II ao usar o Megacore® que implementa esta estrutura usando 4 blocos DSP.

    Resolução

    Para contornar essa limitação, use o modelo de código Complex 25x18 Multiply encontrado nos modelos de software Quartus II para inferir seu multiplicador complexo.  Para usar este modelo de código, primeiro você precisará abrir um novo arquivo de design e, em seguida, selecionar este modelo a partir dos modelos disponíveis no software Quartus II.  Este modelo é encontrado nos modelos Verilog ou VHDL em recursos DSP de > > > Aritmética (Stratix-V, Arria-V e Cyclone-V).

    Para sua conveniência, este modelo de código para Verilog está abaixo:

    Modelo de Verilog Quartus II
    Multiplicação complexa 25x18
    Para uso com as famílias Stratix V, Arria-V, Cyclone-V e dispositivos posteriores

    módulo complex_25x18(x_r, x_i, y_r, y_i, clock, ena1, ena0, reset, p_r, p_i);
    Este modelo é aplicável ao modo complexo 25x18 no Stratix-V
    entrada [24:0] x_r;
    entrada [24:0] x_i;
    entrada [17:0] y_r;
    entrada [17:0] y_i;
    Stratix-V DSP suporta até 3 pares de clock/ena e 2 sinais de reinicialização assíncrona
    clock de entrada;
    ena1 de entrada;
    ena0 de entrada;
    reinicialização de entrada;
    saída [43:0] p_r;
    saída [43:0] p_i;

    Todas as entradas/saídas devem ser assinadas.
    Todos os registros de entrada devem usar o mesmo {clock, ena, reset}
    Todos os registros de saída devem usar o mesmo {clock, ena, reset}
    reg assinado [24:0] x_r_reg, x_i_reg;
    reg assinado [17:0] y_r_reg, y_i_reg;
    reg assinado [43:0] p_r, p_i;

    fio assinado [25:0] a1;
    fio assinado [18:0] a2;
    fio assinado [18:0] a3;
    fio assinado [43:0] p1;
    fio assinado [43:0] p2;
    fio assinado [43:0] p3;

    atribuir a1 = x_r_reg - x_i_reg;
    atribuir p1 = a1 * y_i_reg;
    atribuir a2 = y_r_reg - y_i_reg;
    atribuir p2 = a2 * x_r_reg;
    atribuir a3 = y_r_reg y_i_reg;
    atribuir p3 = a3 * x_i_reg;

    sempre @(posedge clock ou redefinição de posge)
    Começar
    se (redefinir == 1\'b1)
    Começar
    x_r_reg <= 0;
    x_i_reg <= 0;
    y_r_reg <= 0;
    y_i_reg <= 0;
    p_r <= 0;
    p_i <= 0;
    Final
    Mais
    Começar
    se (ena0 == 1\'b1)
    Começar
    x_r_reg <= x_r;
    x_i_reg <= x_i;
    y_r_reg <= y_r;
    y_i_reg <= y_i;
    Final
    se (ena1 == 1\'b1)
    Começar
    p_r <= p1 p2;
    p_i <= p1 p3;
    Final
    Final
    Final

    endmodule

    Produtos relacionados

    Este artigo aplica-se a 13 produtos

    FPGA Stratix® V GX
    FPGA Cyclone® V GX
    FPGA Stratix® V GT
    FPGA Stratix® V GS
    FPGA Arria® V GZ
    FPGA Arria® V SX SoC
    FPGA SoC Cyclone® V ST
    FPGA Arria® V ST SoC
    FPGA Arria® V GX
    FPGA Arria® V GT
    FPGA Cyclone® V E
    FPGA Stratix® V E
    FPGA SoC Cyclone® V SE

    O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.