Núcleos IP aritméticos inteiros FPGA
Guia do usuário de núcleos IP de aritmética inteira FPGA Intel
Atualizado para Intel® Quartus® Prime Design Suite: 20.3
Versão online Enviar comentários
UG-01063
ID: 683490 Versão: 2020.10.05
Conteúdo
Conteúdo
1. Núcleos de IP aritmético inteiro FPGA da Intel……………………………………………………………….. 5
2. Núcleo IP LPM_COUNTER (Contador)……………………………………………………………………….. 7 2.1. Características………………………………………………………………………………………………7 2.2. Protótipo Verilog HDL…………………………………………………………………………….. 8 2.3. Declaração de Componente VHDL…………………………………………………………………….8 2.4. VHDL LIBRARY_USE Declaração…………………………………………………………………… 9 2.5. Portos…………………………………………………………………………………………………..9 2.6. Parâmetros………………………………………………………………………………………… 10
3. LPM_DIVIDE (Divisor) Intel FPGA IP Core……………………………………………………….. 12 3.1. Características………………………………………………………………………………………………. 12 3.2. Protótipo Verilog HDL…………………………………………………………………………… 12 3.3. Declaração de Componente VHDL………………………………………………………………….. 13 3.4. VHDL LIBRARY_USE Declaração…………………………………………………………………. 13 3.5. Portos………………………………………………………………………………………………… 13 3.6. Parâmetros………………………………………………………………………………………… 14
4. Núcleo IP LPM_MULT (Multiplicador)…………………………………………………………………………. 16 4.1. Características………………………………………………………………………………………………. 16 4.2. Protótipo Verilog HDL…………………………………………………………………………… 17 4.3. Declaração de Componente VHDL………………………………………………………………….. 17 4.4. VHDL LIBRARY_USE Declaração…………………………………………………………………. 17 4.5. Sinais……………………………………………………………………………………………… 18 4.6. Parâmetros para dispositivos Stratix V, Arria V, Cyclone V e Intel Cyclone 10 LP…………… 18 4.6.1. Aba Geral………………………………………………………………………………18 4.6.2. Geral 2 Guia…………………………………………………………………………… 19 4.6.3. Aba Pipelining…………………………………………………………………………… 19 4.7. Parâmetros para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX……….. 20 4.7.1. Aba Geral………………………………………………………………………………20 4.7.2. Geral 2 Guia…………………………………………………………………………… 20 4.7.3. Canalização……………………………………………………………………………………21
5. LPM_ADD_SUB (Adicionador/Subtrator)…………………………………………………………………… 22 5.1. Características………………………………………………………………………………………………. 22 5.2. Protótipo Verilog HDL…………………………………………………………………………… 23 5.3. Declaração de Componente VHDL………………………………………………………………….. 23 5.4. VHDL LIBRARY_USE Declaração…………………………………………………………………. 23 5.5. Portos………………………………………………………………………………………………… 23 5.6. Parâmetros………………………………………………………………………………………… 24
6. LPM_COMPARE (Comparador)…………………………………………………………………………… 26 6.1. Características………………………………………………………………………………………………. 26 6.2. Protótipo Verilog HDL…………………………………………………………………………… 27 6.3. Declaração do Componente VHDL………………………………………………………………….. 27 6.4. VHDL LIBRARY_USE Declaração…………………………………………………………………. 27 6.5. Portos………………………………………………………………………………………………… 27 6.6. Parâmetros………………………………………………………………………………………… 28
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 2
Enviar feedback
Conteúdo
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core…………………………………… 30
7.1. Características do codificador ALTECC………………………………………………………………………..31 7.2. Verilog HDL Prototype (ALTECC_ENCODER)……………………………………………………. 32 7.3. Verilog HDL Prototype (ALTECC_DECODER)……………………………………………………. 32 7.4. Declaração de componente VHDL (ALTECC_ENCODER)……………………………………………33 7.5. Declaração de componente VHDL (ALTECC_DECODER)……………………………………………33 7.6. VHDL LIBRARY_USE Declaração…………………………………………………………………. 33 7.7. Portas do codificador…………………………………………………………………………………… 33 7.8. Portas do decodificador………………………………………………………………………………………34 7.9. Parâmetros do Codificador……………………………………………………………………………… 34 7.10. Parâmetros do Decodificador ……………………………………………………………………………… 35
8. Intel FPGA Multiply Adder IP Core……………………………………………………………………. 36
8.1. Características………………………………………………………………………………………………. 37 8.1.1. Pré-adicionador……………………………………………………………………………….. 38 8.1.2. Registro de atraso sistólico………………………………………………………………….. 40 8.1.3. Constante de pré-carga………………………………………………………………………… 43 8.1.4. Acumulador duplo…………………………………………………………………… 43
8.2. Protótipo Verilog HDL…………………………………………………………………………… 44 8.3. Declaração de Componente VHDL………………………………………………………………….. 44 8.4. VHDL LIBRARY_USE Declaração…………………………………………………………………. 44 8.5. Sinais……………………………………………………………………………………………… 44 8.6. Parâmetros………………………………………………………………………………………… 47
8.6.1. Aba Geral…………………………………………………………………………………47 8.6.2. Aba Modos Extras………………………………………………………………………….. 47 8.6.3. Aba Multiplicadores…………………………………………………………………………….. 49 8.6.4. Guia Preader……………………………………………………………………………. 51 8.6.5. Aba Acumulador………………………………………………………………………….. 53 8.6.6. Guia Sistólica/Chainout……………………………………………………………………. 55 8.6.7. Guia Pipelining……………………………………………………………………………… 56
9. ALTMEMMULT (Multiplicador de coeficiente constante baseado em memória) IP Core…………………… 57
9.1. Características………………………………………………………………………………………………. 57 9.2. Protótipo Verilog HDL……………………………………………………………………………… 58 9.3. Declaração de Componente VHDL………………………………………………………………….. 58 9.4. Portos………………………………………………………………………………………………… 59 9.5. Parâmetros…………………………………………………………………………………………… 59
10. ALTMULT_ACCUM (Multiplicar-Acumular) IP Core……………………………………………… 61
10.1. Características……………………………………………………………………………………….. 62 10.2. Protótipo Verilog HDL…………………………………………………………………………..62 10.3. Declaração de Componente VHDL………………………………………………………………… 63 10.4. VHDL LIBRARY_USE Declaração…………………………………………………………………63 10.5. Portos………………………………………………………………………………………………. 63 10.6. Parâmetros………………………………………………………………………………………. 64
11. Núcleo de IP ALTMULT_ADD (Multiplicador)……………………………………………………………..69
11.1. Características……………………………………………………………………………………….. 71 11.2. Verilog HDL Prototype…………………………………………………………………………..72 11.3. Declaração de Componente VHDL………………………………………………………………… 72 11.4. VHDL LIBRARY_USE Declaração…………………………………………………………………72
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 3
Conteúdo
11.5. Portos………………………………………………………………………………………………. 72 11.6. Parâmetros………………………………………………………………………………………. 73
12. Núcleo IP ALTMULT_COMPLEX (Multiplicador Complexo)…………………………………………… 86 12.1. Multiplicação Complexa……………………………………………………………………………. 86 12.2. Representação Canônica……………………………………………………………………… 87 12.3. Representação convencional…………………………………………………………………. 87 12.4. Características………………………………………………………………………………………….. 88 12.5. Protótipo Verilog HDL…………………………………………………………………………..88 12.6. Declaração de Componente VHDL………………………………………………………………… 89 12.7. VHDL LIBRARY_USE Declaração…………………………………………………………………89 12.8. Sinais……………………………………………………………………………………………. 89 12.9. Parâmetros………………………………………………………………………………………. 90
13. Núcleo IP ALTSQRT (Raiz Quadrada Inteira)…………………………………………………………92 13.1. Características……………………………………………………………………………………….. 92 13.2. Protótipo Verilog HDL…………………………………………………………………………..92 13.3. Declaração de Componente VHDL………………………………………………………………… 93 13.4. VHDL LIBRARY_USE Declaração…………………………………………………………………93 13.5. Portos………………………………………………………………………………………………. 93 13.6. Parâmetros………………………………………………………………………………………. 94
14. Núcleo IP PARALLEL_ADD (Adicionador Paralelo)………………………………………………………….. 95 14.1. Funcionalidade…………………………………………………………………………………………….95 14.2. Protótipo Verilog HDL…………………………………………………………………………..95 14.3. Declaração de Componente VHDL………………………………………………………………… 96 14.4. VHDL LIBRARY_USE Declaração…………………………………………………………………96 14.5. Portos………………………………………………………………………………………………. 96 14.6. Parâmetros………………………………………………………………………………………. 97
15. Integer Arithmetic IP Cores Guia do usuário Arquivos de documentos………………………………… 98
16. Histórico de revisão de documentos para o Guia do usuário de núcleos IP aritméticos de inteiro FPGA da Intel…. 99
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 4
Enviar feedback
683490 | 2020.10.05 Enviar comentários
1. Núcleos IP de aritmética inteira FPGA Intel
Você pode usar os núcleos IP inteiros do Intel® FPGA para executar operações matemáticas em seu projeto.
Essas funções oferecem síntese lógica e implementação de dispositivos mais eficientes do que codificar suas próprias funções. Você pode personalizar os núcleos IP para acomodar seus requisitos de design.
Os núcleos IP aritméticos inteiros da Intel são divididos nas duas categorias a seguir: · Núcleos IP da biblioteca de módulos parametrizados (LPM) · Núcleos IP específicos da Intel (ALT)
A tabela a seguir lista os núcleos IP aritméticos inteiros.
Tabela 1.
Lista de Núcleos IP
Núcleos IP
Núcleos IP LPM
LPM_COUNTER
LPM_DIVIDE
LPM_MULT
LPM_ADD_SUB
LPM_COMPARE
Núcleos IP específicos da Intel (ALT) ALTECC
Função encerradaview Multiplicador do Divisor do Contador
Somador ou subtrator Comparador
Codificador/Decodificador ECC
Dispositivo suportado
Arria® II GX, Arria II GZ, Arria V, Intel Arria 10, Cyclone® IV E, Cyclone IV GX, Cyclone V, Intel Cyclone 10 LP,
Intel Cyclone 10 GX, MAX® II, MAX V, MAX 10, Stratix® IV, Stratix V
Arria II GX, Arria II GZ, Arria V, Intel Arria 10, Ciclone IV E, Ciclone IV GX,
Cyclone V, Intel Cyclone 10 LP, Intel Cyclone 10 GX, MAX II, MAX V, MAX 10, Stratix IV, Stratix V, Intel Stratix 10
Arria II GX, Arria II GZ, Arria V, Intel Arria 10, Ciclone IV E, Ciclone IV GX,
Cyclone V, Intel Cyclone 10 LP, Intel Cyclone 10 GX, MAX II, MAX V, MAX 10, Stratix IV, Stratix V, Intel Stratix 10
Arria II GX, Arria II GZ, Arria V, Ciclone IV E, Ciclone IV GX, Ciclone V, Intel Cyclone 10 LP, MAX 10, MAX
II, MAX V, Stratix IV, Stratix V
Arria II GX, Arria II GZ, Arria V, Ciclone IV E, Ciclone IV GX, Ciclone V, Intel Cyclone 10 LP, MAX 10, MAX
II, MAX V, Stratix IV, Stratix V
Arria II GX, Arria II GZ, Arria V, Intel Arria 10, Ciclone IV E, Ciclone IV GX,
Cyclone V, Intel Cyclone 10 LP, Intel Cyclone 10 GX, MAX II, MAX V, MAX
10, Stratix IV, Stratix V continua…
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
1. Núcleos de IP aritmético inteiro FPGA Intel 683490 | 2020.10.05
IP Cores Intel FPGA Multiply Adder ou ALTERA_MULT_ADD ALTMEMMULT
ALTMULT_ACCUM ALTMULT_ADD ALTMULT_COMPLEX
ALTSQRT
PARALLEL_ADD
Função encerradaview Multiplicador-Adicionador
Multiplicador de coeficiente constante baseado em memória
Multiplicador-Acumulador Multiplicador-Adicionador
Multiplicador Complexo
Número inteiro com raiz quadrada
Somador paralelo
Dispositivo suportado
Arria V, Stratix V, Cyclone V, Intel Stratix 10, Intel Arria 10, Intel Cyclone
10 GX
Arria II GX, Arria II GZ, Arria V, Intel Arria 10 (Intel Quartus® Prime Standard Edition), Cyclone IV E, Cyclone IV GX, Cyclone V, Intel
Ciclone 10 LP, MAX II, MAX V, MAX 10, Stratix IV, Stratix V
Arria II GX, Arria II GZ, Cyclone IV E, Cyclone IV GX, Intel Cyclone 10 LP, MAX 10, MAX II, MAX V, Stratix IV
Arria II GX, Arria II GZ, Cyclone IV E, Cyclone IV GX, Intel Cyclone 10 LP, MAX 10, MAX II, MAX V, Stratix IV
Arria II GX, Arria II GZ, Intel Arria 10, Arria V, Arria V GZ, Ciclone IV E, Ciclone IV GX, Ciclone V, Intel
Ciclone 10 GX, Intel Cyclone 10 LP, MAX 10, Stratix V, Intel Stratix 10
Arria II GX, Arria II GZ, Arria V, Intel Arria 10, Ciclone IV E, Ciclone IV GX,
Ciclone V, Intel Cyclone 10 LP, Intel Cyclone 10 GX, MAX II, MAX V, MAX
10, Stratix IV, Stratix V
Arria II GX, Arria II GZ, Arria V, Intel Arria 10, Ciclone IV E, Ciclone IV GX,
Cyclone V, Intel Cyclone 10 LP, Intel Cyclone 10 GX, MAX II, MAX V, MAX
10, Stratix IV, Stratix V
Informações relacionadas
· Intel FPGAs e notas de versão de dispositivos programáveis
· Introdução aos núcleos Intel FPGA IP Fornece mais informações sobre os núcleos Intel FPGA IP.
· Guia do usuário de núcleos IP de ponto flutuante Fornece mais informações sobre os núcleos IP de ponto flutuante Intel FPGA.
· Introdução aos núcleos IP Intel FPGA Fornece informações gerais sobre todos os núcleos IP Intel FPGA, incluindo parametrização, geração, atualização e simulação de núcleos IP.
· Criação de scripts de simulação Qsys e IP independentes de versão Crie scripts de simulação que não requerem atualizações manuais para atualizações de versão de software ou IP.
· Diretrizes de Melhores Práticas de Gerenciamento de Projetos para gerenciamento eficiente e portabilidade de seu projeto e IP files.
· Integer Arithmetic IP Cores Guia do usuário Arquivos de documentos na página 98 Fornece uma lista de guias do usuário para versões anteriores dos núcleos Integer Arithmetic IP.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 6
Enviar feedback
683490 | 2020.10.05 Enviar comentários
2. Núcleo IP LPM_COUNTER (Contador)
Figura 1.
O núcleo IP LPM_COUNTER é um contador binário que cria contadores crescentes, contadores decrescentes e contadores crescentes ou decrescentes com saídas de até 256 bits de largura.
A figura a seguir mostra as portas para o núcleo IP LPM_COUNTER.
LPM_COUNTER portas
LPM_COUNTER
ssclr sload dados do conjunto[]
q[]
updown
corte
aclr carregar ativo
clk_en cnt_en cin
inst
2.1. Características
O núcleo IP LPM_COUNTER oferece os seguintes recursos: · Gera contadores crescentes, decrescentes e crescentes/decrescentes · Gera os seguintes tipos de contadores:
— Binário simples – o contador é incrementado a partir de zero ou decrementado a partir de 255
— Módulo – o contador aumenta ou diminui do valor do módulo especificado pelo usuário e repete
· Suporta portas de entrada opcionais de limpeza, carga e definição síncronas · Suporta portas de entrada opcionais de limpeza, carga e definição assíncronas · Suporta portas de entrada opcionais de habilitação de contagem e habilitação de relógio · Suporta portas opcionais de entrada e saída
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
2. Núcleo IP LPM_COUNTER (Contador)
683490 | 2020.10.05
2.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo lpm_counter ( q, data, clock, cin, cout, clk_en, cnt_en, updown, aset, aclr, aload, sset, sclr, sload, eq ); parâmetro lpm_type = “lpm_counter”; parâmetro lpm_width = 1; parâmetro lpm_modulus = 0; parâmetro lpm_direction = “NÃO USADO”; parâmetro lpm_avalue = “NÃO USADO”; parâmetro lpm_svalue = “NÃO USADO”; parâmetro lpm_pvalue = “NÃO USADO”; parâmetro lpm_port_updown = “PORT_CONNECTIVITY”; parâmetro lpm_hint = “NÃO USADO”; saída [lpm_width-1:0] q; saída cout; saída [15:0] eq; entrada cin; dados de entrada [lpm_width-1:0]; relógio de entrada, clk_en, cnt_en, updown; entrada aset, aclr, aload; entrada sset, sclr, sload; módulo final
2.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) LPM_PACK.vhd no diretório libraryvhdllpm.
componente LPM_COUNTER genérico ( LPM_WIDTH : natural; LPM_MODULUS : natural := 0; LPM_DIRECTION : string := “UNUSED”; LPM_AVALUE : string := “UNUSED”; LPM_SVALUE : string := “UNUSED”; LPM_PORT_UPDOWN : string := “PORT_CONNECTIVITY” ; LPM_PVALUE : string := “UNUSED”; LPM_TYPE : string := L_COUNTER; LPM_HINT : string := “UNUSED”); porta (DADOS: em std_logic_vector(LPM_WIDTH-1 até 0):= (OUTROS =>
'0'); CLOCK: em std_logic; CLK_EN : em std_logic := '1'; CNT_EN : em std_logic := '1'; UPDOWN : em std_logic := '1'; SLOAD : em std_logic := '0'; SSET : em std_logic := '0'; SCLR : em std_logic := '0'; ALOAD : em std_logic := '0'; ASET : em std_logic := '0'; ACLR: em std_logic:= '0'; CIN : em std_logic := '1'; COUT : out std_logic := '0'; Q: out std_logic_vector(LPM_WIDTH-1 até 0); EQ: out std_logic_vector(15 downto 0));
componente final;
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 8
Enviar feedback
2. LPM_COUNTER (Contador) Núcleo IP 683490 | 2020.10.05
2.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA lpm; USE lpm.lpm_components.all;
2.5. Portos
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP LPM_COUNTER.
Tabela 2.
Portas de entrada LPM_COUNTER
Nome da porta
Obrigatório
Descrição
dados[]
Não
Entrada de dados paralela ao contador. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTH.
relógio
Sim
Entrada de clock acionada por borda positiva.
clk_en
Não
Clock enable input para habilitar todas as atividades síncronas. Se omitido, o valor padrão é 1.
cnt_en
Não
Entrada de habilitação de contagem para desabilitar a contagem quando declarada baixa sem afetar sload, sset ou sclr. Se omitido, o valor padrão é 1.
updown
Não
Controla a direção da contagem. Quando declarado alto (1), a direção da contagem é crescente e, quando declarado baixo (0), a direção da contagem é decrescente. Se o parâmetro LPM_DIRECTION for usado, a porta updown não pode ser conectada. Se LPM_DIRECTION não for usado, a porta updown é opcional. Se omitido, o valor padrão é up (1).
cinza
Não
Carry-in para o bit de ordem inferior. Para contadores crescentes, o comportamento da entrada cin é
idêntico ao comportamento da entrada cnt_en. Se omitido, o valor padrão é 1
(VCC).
aclr
Não
Entrada clara assíncrona. Se ambos aset e aclr forem usados e declarados, aclr substituirá aset. Se omitido, o valor padrão é 0 (desabilitado).
ativo
Não
Entrada de conjunto assíncrona. Especifica as saídas q[] como todas 1s ou para o valor especificado pelo parâmetro LPM_AVALUE. Se as portas aset e aclr forem usadas e declaradas, o valor da porta aclr substituirá o valor da porta aset. Se omitido, o valor padrão é 0, desabilitado.
um monte
Não
Entrada de carga assíncrona que carrega de forma assíncrona o contador com o valor na entrada de dados. Quando a porta aload é usada, a porta data[] deve ser conectada. Se omitido, o valor padrão é 0, desabilitado.
sclr
Não
Entrada de limpeza síncrona que limpa o contador na próxima borda de clock ativa. Se as portas sset e sclr forem usadas e ativadas, o valor da porta sclr substituirá o valor da porta sset. Se omitido, o valor padrão é 0, desabilitado.
set
Não
Entrada de ajuste síncrono que define o contador na próxima borda de clock ativa. Especifica o valor das saídas q como todos 1s ou para o valor especificado pelo parâmetro LPM_SVALUE. Se as portas sset e sclr forem usadas e ativadas,
o valor da porta sclr substitui o valor da porta sset. Se omitido, o valor padrão é 0 (desabilitado).
carregar
Não
Entrada de carga síncrona que carrega o contador com data[] na próxima borda de clock ativa. Quando a porta sload é usada, a porta data[] deve ser conectada. Se omitido, o valor padrão é 0 (desabilitado).
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 9
2. LPM_COUNTER (Contador) Núcleo IP 683490 | 2020.10.05
Tabela 3.
Portas de saída LPM_COUNTER
Nome da porta
Obrigatório
Descrição
q[]
Não
Saída de dados do contador. O tamanho da porta de saída depende do
Valor do parâmetro LPM_WIDTH. Q[] ou pelo menos uma das portas eq[15..0]
deve estar conectado.
eq[15..0]
Não
Saída de decodificação do contador. A porta eq[15..0] não está acessível no editor de parâmetros porque o parâmetro suporta apenas AHDL.
A porta q[] ou a porta eq[] devem estar conectadas. Até portas c eq podem ser usadas (0 <= c <= 15). Apenas os 16 valores de contagem mais baixos são decodificados. Quando o valor de contagem é c, a saída eqc é declarada alta (1). por example, quando a contagem é 0, eq0 = 1, quando a contagem é 1, eq1 = 1 e quando a contagem é 15, eq 15 = 1. A saída decodificada para valores de contagem de 16 ou maiores requer decodificação externa. As saídas eq[15..0] são assíncronas com a saída q[].
corte
Não
Porta de execução do bit MSB do contador. Ele pode ser usado para se conectar a outro contador para criar um contador maior.
2.6. Parâmetros
A tabela a seguir lista os parâmetros para o núcleo IP LPM_COUNTER.
Tabela 4.
Parâmetros LPM_COUNTER
Nome do parâmetro
Tipo
LPM_WIDTH
Inteiro
LPM_DIRECTION
Corda
LPM_MODULUS LPM_AVALUE
Inteiro
Inteiro/ String
LPM_SVALUE LPM_HINT
Inteiro/ String
Corda
LPM_TYPE
Corda
Obrigatório Sim Não Não Não
Não Não
Não
Descrição
Especifica as larguras das portas data[] e q[], se forem usadas.
Os valores são UP, DOWN e UNUSED. Se o parâmetro LPM_DIRECTION for usado, a porta updown não pode ser conectada. Quando a porta updown não está conectada, o valor padrão do parâmetro LPM_DIRECTION é UP.
A contagem máxima, mais um. Número de estados únicos no ciclo do contador. Se o valor de carga for maior que o parâmetro LPM_MODULUS, o comportamento do contador não é especificado.
Valor constante que é carregado quando o ativo é declarado alto. Se o valor especificado for maior ou igual a , o comportamento do contador é um nível lógico indefinido (X), onde é LPM_MODULUS, se presente, ou 2 ^ LPM_WIDTH. A Intel recomenda que você especifique esse valor como um número decimal para projetos AHDL.
Valor constante que é carregado na borda de subida da porta do relógio quando a porta sset é declarada alta. A Intel recomenda que você especifique esse valor como um número decimal para designs AHDL.
Quando você instancia uma função de biblioteca de módulos parametrizados (LPM) em um VHDL Design File (.vhd), você deve usar o parâmetro LPM_HINT para especificar um parâmetro específico da Intel. por examparquivo: LPM_HINT = “CHAIN_SIZE = 8, ONE_INPUT_IS_CONSTANT = YES”
O valor padrão é NÃO USADO.
Identifica o nome da entidade da biblioteca de módulos parametrizados (LPM) no projeto VHDL files.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 10
Enviar feedback
2. LPM_COUNTER (Contador) Núcleo IP 683490 | 2020.10.05
Nome do parâmetro INTENDED_DEVICE_FAMILY CARRY_CNT_EN
LABWIDE_SCLR
LPM_PORT_UPDOWN
Tipo Cadeia Cadeia
Corda
Corda
Necessário Não Não
Não
Não
Descrição
Este parâmetro é usado para fins de modelagem e simulação comportamental. Este parâmetro é usado para fins de modelagem e simulação comportamental. O editor de parâmetros calcula o valor desse parâmetro.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro CARRY_CNT_EN no projeto VHDL files. Os valores são SMART, ON, OFF e UNUSED. Habilita a função LPM_COUNTER para propagar o sinal cnt_en através da cadeia de transporte. Em alguns casos, a configuração do parâmetro CARRY_CNT_EN pode ter um leve impacto na velocidade, portanto, convém desativá-la. O valor padrão é SMART, que oferece a melhor relação entre tamanho e velocidade.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro LABWIDE_SCLR no projeto VHDL files. Os valores são ON, OFF ou UNUSED. O valor padrão é ON. Permite desabilitar o uso do recurso LABwide sclr encontrado em famílias de dispositivos obsoletos. Desativar essa opção aumenta as chances de usar totalmente os LABs parcialmente preenchidos e, portanto, pode permitir maior densidade lógica quando o SCLR não se aplica a um LAB completo. Este parâmetro está disponível para compatibilidade com versões anteriores e a Intel recomenda que você não o use.
Especifica o uso da porta de entrada updown. Se omitido, o valor padrão é PORT_CONNECTIVITY. Quando o valor da porta é definido como PORT_USED, a porta é tratada como usada. Quando o valor da porta é definido como PORT_UNUSED, a porta é tratada como não utilizada. Quando o valor da porta é definido como PORT_CONNECTIVITY, o uso da porta é determinado pela verificação da conectividade da porta.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 11
683490 | 2020.10.05 Enviar comentários
3. LPM_DIVIDE (Divisor) Intel FPGA IP Core
Figura 2.
O núcleo LPM_DIVIDE Intel FPGA IP implementa um divisor para dividir um valor de entrada do numerador por um valor de entrada do denominador para produzir um quociente e um resto.
A figura a seguir mostra as portas para o núcleo IP LPM_DIVIDE.
Portas LPM_DIVIDE
LPM_DIVIDE
número[] denom[] relógio
quociente[] resta[]
clken aclr
inst
3.1. Características
O núcleo LPM_DIVIDE IP oferece os seguintes recursos: · Gera um divisor que divide um valor de entrada de numerador por uma entrada de denominador
valor para produzir um quociente e um resto. · Suporta largura de dados de 1 bits. · Suporta formato de representação de dados assinados e não assinados para o numerador
e valores do denominador. · Suporta otimização de área ou velocidade. · Fornece uma opção para especificar uma saída de resto positivo. · Suporta latência de saída configurável de pipelining. · Suporta portas assíncronas opcionais de habilitação de clock e clear.
3.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo lpm_divide ( quociente, restante, número, denom, relógio, clken, aclr); parâmetro lpm_type = “lpm_divide”; parâmetro lpm_widthn = 1; parâmetro lpm_widthd = 1; parâmetro lpm_nrepresentation = “UNSIGNED”; parâmetro lpm_drepresentation = “UNSIGNED”; parâmetro lpm_remainderpositivo = “VERDADEIRO”; parâmetro lpm_pipeline = 0;
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
3. LPM_DIVIDE (Divisor) Intel FPGA IP Core 683490 | 2020.10.05
parâmetro lpm_hint = “NÃO USADO”; relógio de entrada; entrada clken; entrada aclr; entrada [lpm_widthn-1:0] número; entrada [lpm_widthd-1:0] denom; quociente de saída [lpm_widthn-1:0]; saída [lpm_widthd-1:0] permanecem; módulo final
3.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) LPM_PACK.vhd no diretório libraryvhdllpm.
componente LPM_DIVIDE genérico (LPM_WIDTHN: natural; LPM_WIDTHD: natural;
LPM_NREPRESENTATION : string := “UNSIGNED”; LPM_DREPRESENTATION : string := “UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE : string := L_DIVIDE; LPM_HINT : string := “NÃO USADO”); porta (NUMER: em std_logic_vector(LPM_WIDTHN-1 até 0); DENOM: em std_logic_vector(LPM_WIDTHD-1 até 0); ACLR: em std_logic:= '0'; CLOCK: em std_logic:= '0'; CLKEN: em std_logic := '1'; QUOCIENTE: out std_logic_vector(LPM_WIDTHN-1 até 0); REMAIN: out std_logic_vector(LPM_WIDTHD-1 até 0)); componente final;
3.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA lpm; USE lpm.lpm_components.all;
3.5. Portos
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP LPM_DIVIDE.
Tabela 5.
Portas de entrada LPM_DIVIDE
Nome da porta
Obrigatório
número[]
Sim
denominação[]
Sim
Descrição
Entrada de dados do numerador. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTHN.
Entrada de dados do denominador. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTHD.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 13
3. LPM_DIVIDE (Divisor) Intel FPGA IP Core 683490 | 2020.10.05
Relógio do nome da porta clken
aclr
Necessário Não Não
Não
Descrição
Entrada de relógio para uso em pipeline. Para valores de LPM_PIPELINE diferentes de 0 (padrão), a porta do relógio deve ser habilitada.
O relógio habilita o uso em pipeline. Quando a porta clken é declarada alta, a operação de divisão ocorre. Quando o sinal está baixo, nenhuma operação ocorre. Se omitido, o valor padrão é 1.
Porta de limpeza assíncrona usada a qualquer momento para redefinir o pipeline para todos os '0's de forma assíncrona com a entrada do relógio.
Tabela 6.
LPM_DIVIDE Portas de Saída
Nome da porta
Obrigatório
Descrição
quociente[]
Sim
Saída de dados. O tamanho da porta de saída depende do LPM_WIDTHN
valor do parâmetro.
permanecer[]
Sim
Saída de dados. O tamanho da porta de saída depende do LPM_WIDTHD
valor do parâmetro.
3.6. Parâmetros
A tabela a seguir lista os parâmetros para o núcleo LPM_DIVIDE Intel FPGA IP.
Nome do parâmetro
Tipo
Obrigatório
Descrição
LPM_WIDTHN
Inteiro
Sim
Especifica as larguras do numer[] e
portas quociente[]. Os valores são de 1 a 64.
LPM_WIDTHD
Inteiro
Sim
Especifica as larguras do denom[] e
permanecem[] portas. Os valores são de 1 a 64.
LPM_NREPRESENTATION LPM_DREPRESENTATION
Cadeia Cadeia
Não
Representação do sinal da entrada do numerador.
Os valores são ASSINADOS e NÃO ASSINADOS. Quando isso
parâmetro é definido como SIGNED, o divisor
interpreta a entrada num[] como dois assinados
complemento.
Não
Representação do sinal da entrada do denominador.
Os valores são ASSINADOS e NÃO ASSINADOS. Quando isso
parâmetro é definido como SIGNED, o divisor
interpreta a entrada denom[] como dois assinados
complemento.
LPM_TYPE
Corda
Não
Identifica a biblioteca de parametrização
módulos (LPM) nome da entidade no projeto VHDL
files (.vhd).
LPM_HINT
Corda
Não
Quando você instancia uma biblioteca de
módulos parametrizados (LPM) funcionam em um
Projeto VHDL File (.vhd), você deve usar o
Parâmetro LPM_HINT para especificar um Intel-
parâmetro específico. por examparquivo: LPM_HINT
= “CHAIN_SIZE = 8,
ONE_INPUT_IS_CONSTANT = SIM” O
o valor padrão é NÃO USADO.
LPM_REMAINDERPOSITIVE
Corda
Não
Parâmetro específico da Intel. Você deve usar o
parâmetro LPM_HINT para especificar o
Parâmetro LPM_REMAINDERPOSITIVE em
projeto VHDL files. Os valores são VERDADEIRO ou FALSO.
Se este parâmetro for definido como TRUE, então o
valor da porta stay[] deve ser maior
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 14
Enviar feedback
3. LPM_DIVIDE (Divisor) Intel FPGA IP Core 683490 | 2020.10.05
Nome do parâmetro
Tipo
MAXIMIZE_SPEED
Inteiro
LPM_PIPELINE
Inteiro
INTENDED_DEVICE_FAMILY SKIP_BITS
String Inteiro
Necessário Não
Não, não, não
Descrição
menor ou igual a zero. Se esse parâmetro for definido como TRUE, o valor da porta stay[] será zero ou o valor terá o mesmo sinal, positivo ou negativo, do valor da porta numérica. Para reduzir a área e melhorar a velocidade, a Intel recomenda definir esse parâmetro como TRUE em operações em que o restante deve ser positivo ou em que o restante não é importante.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro MAXIMIZE_SPEED no projeto VHDL files. Os valores são [0..9]. Se usado, o software Intel Quartus Prime tenta otimizar uma instância específica da função LPM_DIVIDE para velocidade em vez de capacidade de roteamento e substitui a configuração da opção de lógica Optimization Technique. Se MAXIMIZE_SPEED não for usado, o valor da opção Técnica de otimização será usado. Se o valor de MAXIMIZE_SPEED for 6 ou superior, o compilador otimiza o núcleo IP LPM_DIVIDE para maior velocidade usando cadeias de transporte; se o valor for 5 ou menos, o compilador implementa o design sem cadeias de transporte.
Especifica o número de ciclos de clock de latência associados às saídas quociente[] e permanecem[]. Um valor de zero (0) indica que não existe latência e que uma função puramente combinacional é instanciada. Se omitido, o valor padrão é 0 (sem pipeline). Você não pode especificar um valor para o parâmetro LPM_PIPELINE que seja maior que LPM_WIDTHN.
Este parâmetro é usado para fins de modelagem e simulação comportamental. O editor de parâmetros calcula o valor desse parâmetro.
Permite uma divisão de bit fracionário mais eficiente para otimizar a lógica nos bits principais, fornecendo o número de GND principal para o núcleo IP LPM_DIVIDE. Especifique o número de GND inicial na saída do quociente para este parâmetro.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 15
683490 | 2020.10.05 Enviar comentários
4. Núcleo IP LPM_MULT (Multiplicador)
Figura 3.
O núcleo IP LPM_MULT implementa um multiplicador para multiplicar dois valores de dados de entrada para produzir um produto como uma saída.
A figura a seguir mostra as portas para o núcleo IP LPM_MULT.
LPM_Mult portas
LPM_MULT clock dataa[] resultado[] datab[] aclr/sclr clken
inst
Recursos de informações relacionadas na página 71
4.1. Características
O núcleo IP LPM_MULT oferece os seguintes recursos: · Gera um multiplicador que multiplica dois valores de dados de entrada · Suporta largura de dados de 1 bits · Suporta formato de representação de dados assinados e não assinados · Suporta área ou otimização de velocidade · Suporta pipelining com latência de saída configurável · Fornece um opção de implementação em processamento de sinal digital dedicado (DSP)
circuitos de bloco ou elementos lógicos (LEs) Nota: Ao construir multiplicadores maiores do que o tamanho suportado nativamente, pode/
haverá um impacto no desempenho resultante da cascata dos blocos DSP. · Suporta portas de entrada de habilitação de relógio e limpeza assíncrona opcionais · Suporta limpeza síncrona opcional para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
4. Núcleo IP LPM_MULT (Multiplicador) 683490 | 2020.10.05
4.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo lpm_mult ( resultado, dataa, datab, soma, relógio, clken, aclr ) parâmetro lpm_type = “lpm_mult”; parâmetro lpm_widtha = 1; parâmetro lpm_widthb = 1; parâmetro lpm_widths = 1; parâmetro lpm_widthp = 1; parâmetro lpm_representation = “UNSIGNED”; parâmetro lpm_pipeline = 0; parâmetro lpm_hint = “NÃO USADO”; relógio de entrada; entrada clken; entrada aclr; dados de entrada [lpm_widtha-1:0]; dados de entrada [lpm_widthb-1:0]; entrada [lpm_widths-1:0] soma; saída [lpm_widthp-1:0] resultado; módulo final
4.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) LPM_PACK.vhd no diretório libraryvhdllpm.
componente LPM_MULT genérico ( LPM_WIDTHA : natural; LPM_WIDTHB : natural; LPM_WIDTHS : natural := 1; LPM_WIDTHP : natural;
LPM_REPRESENTATION : string := “UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE: string := L_MULT; LPM_HINT : string := “NÃO USADO”); porta (DATAA: em std_logic_vector(LPM_WIDTHA-1 até 0); DATAB: em std_logic_vector(LPM_WIDTHB-1 até 0); ACLR: em std_logic:= '0'; CLOCK: em std_logic:= '0'; CLKEN: em std_logic := '1'; SUM : in std_logic_vector(LPM_WIDTHS-1 até 0) := (OTHERS => '0'); RESULT : out std_logic_vector(LPM_WIDTHP-1 até 0)); componente final;
4.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA lpm; USE lpm.lpm_components.all;
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 17
4. Núcleo IP LPM_MULT (Multiplicador) 683490 | 2020.10.05
4.5. Sinais
Tabela 7.
Sinais de entrada LPM_MULT
Nome do sinal
Obrigatório
Descrição
dadosa[]
Sim
Entrada de dados.
Para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX, o tamanho do sinal de entrada depende do valor do parâmetro de largura Dataa.
Para dispositivos mais antigos e Intel Cyclone 10 LP, o tamanho do sinal de entrada depende do valor do parâmetro LPM_WIDTHA.
banco de dados[]
Sim
Entrada de dados.
Para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX, o tamanho do sinal de entrada depende do valor do parâmetro de largura Datab.
Para dispositivos mais antigos e Intel Cyclone 10 LP, o tamanho do sinal de entrada depende
no valor do parâmetro LPM_WIDTHB.
relógio
Não
Entrada de relógio para uso em pipeline.
Para dispositivos mais antigos e Intel Cyclone 10 LP, o sinal de clock deve ser habilitado para valores LPM_PIPELINE diferentes de 0 (padrão).
Para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX, o sinal de clock deve ser habilitado se o valor de Latência for diferente de 1 (padrão).
clken
Não
Relógio habilitado para uso em pipeline. Quando o sinal clken é declarado alto, o
operação somador/subtrator ocorre. Quando o sinal está baixo, nenhuma operação
ocorre. Se omitido, o valor padrão é 1.
aclr sclr
Não
Sinal claro assíncrono usado a qualquer momento para redefinir o pipeline para todos os 0s,
assincronamente ao sinal de clock. O pipeline inicializa para um indefinido (X)
nível lógico. As saídas são um valor consistente, mas diferente de zero.
Não
Sinal claro síncrono usado a qualquer momento para redefinir o pipeline para todos os 0s,
sincronicamente com o sinal do clock. O pipeline inicializa para um indefinido (X)
nível lógico. As saídas são um valor consistente, mas diferente de zero.
Tabela 8.
LPM_MULT Sinais de saída
nome do sinal
Obrigatório
Descrição
resultado[]
Sim
Saída de dados.
Para dispositivos mais antigos e Intel Cyclone 10 LP, o tamanho do sinal de saída depende do valor do parâmetro LPM_WIDTHP. Se LPM_WIDTHP < max (LPM_WIDTHA + LPM_WIDTHB, LPM_WIDTHS) ou (LPM_WIDTHA + LPM_WIDTHS), somente os MSBs LPM_WIDTHP estarão presentes.
Para Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX, o tamanho dos sinais de saída depende do parâmetro Result width.
4.6. Parâmetros para dispositivos Stratix V, Arria V, Cyclone V e Intel Cyclone 10 LP
4.6.1. Guia geral
Tabela 9.
Guia Geral
Parâmetro
Valor
Configuração do multiplicador
Multiplique a entrada 'dataa' pela entrada 'datab'
Valor Padrão
Descrição
Multiplique a entrada 'dataa' pela entrada 'datab'
Selecione a configuração desejada para o multiplicador.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 18
Enviar feedback
4. Núcleo IP LPM_MULT (Multiplicador) 683490 | 2020.10.05
Parâmetro
Qual deve ser a largura da entrada 'dataa'? Qual deve ser a largura da entrada 'datab'? Como deve ser determinada a largura da saída 'resultado'? Restringir a largura
Valor
Multiplique a entrada 'dataa' por si só (operação de quadratura)
1 - 256 bits
Valor Padrão
Descrição
8 bits
Especifique a largura da porta dataa[].
1 - 256 bits
8 bits
Especifique a largura da porta datab[].
Calcular automaticamente a largura Restringir a largura
1 - 512 bits
Calcula automaticamente a largura
Selecione o método desejado para determinar a largura da porta result[].
16 bits
Especifique a largura da porta result[].
Este valor só será efetivo se você selecionar Restringir a largura no parâmetro Tipo.
4.6.2. Guia Geral 2
Tabela 10. Guia Geral 2
Parâmetro
Valor
Entrada do banco de dados
O barramento de entrada 'datab' tem um valor constante?
Não Sim
Tipo de multiplicação
Que tipo de
Não assinado
multiplicação que você quer? Assinado
Implementação
Qual implementação do multiplicador deve ser usada?
Use a implementação padrão
Use o circuito multiplicador dedicado (não disponível para todas as famílias)
Usar elementos lógicos
Valor Padrão
Descrição
Não
Selecione Sim para especificar o valor constante do
barramento de entrada `datab', se houver.
Não assinado
Especifique o formato de representação para as entradas dataa[] e datab[].
Use a implementação padrão
Selecione o método desejado para determinar a largura da porta result[].
4.6.3. Aba Pipelining
Tabela 11. Guia Pipelining
Parâmetro
Você deseja canalizar o Não
função?
Sim
Valor
Criar um 'aclr'
—
porta limpa assíncrona
Valor Padrão
Descrição
Não
Selecione Sim para habilitar o registro de pipeline para o
saída do multiplicador e especifique o desejado
latência de saída no ciclo de clock. Habilitando o
O registro de pipeline adiciona latência extra ao
saída.
Não verificado
Selecione esta opção para permitir que a porta aclr use limpeza assíncrona para o registro de pipeline.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 19
4. Núcleo IP LPM_MULT (Multiplicador) 683490 | 2020.10.05
Parâmetro
Crie um relógio de ativação do relógio 'clken'
Otimização
Que tipo de otimização você deseja?
Valor -
Área de velocidade padrão
Valor Padrão
Descrição
Não verificado
Especifica a habilitação de clock alto ativo para a porta de clock do registrador de pipeline
Padrão
Especifique a otimização desejada para o núcleo IP.
Selecione Padrão para permitir que o software Intel Quartus Prime determine a melhor otimização para o núcleo IP.
4.7. Parâmetros para dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX
4.7.1. Guia geral
Tabela 12. Aba Geral
Parâmetro
Valor
Valor Padrão
Descrição
Tipo de configuração do multiplicador
Largura da porta de dados
Multiplique a entrada 'dataa' pela entrada 'datab'
Multiplique a entrada 'dataa' por si só (operação de quadratura)
Multiplique a entrada 'dataa' pela entrada 'datab'
Selecione a configuração desejada para o multiplicador.
dadosa largura
1 - 256 bits
8 bits
Especifique a largura da porta dataa[].
Largura do banco de dados
1 - 256 bits
8 bits
Especifique a largura da porta datab[].
Como deve ser determinada a largura da saída 'resultado'?
Tipo
Calcula automaticamente a largura
Restringir a largura
Calcula automaticamente a largura
Selecione o método desejado para determinar a largura da porta result[].
Valor
1 - 512 bits
16 bits
Especifique a largura da porta result[].
Este valor só será efetivo se você selecionar Restringir a largura no parâmetro Tipo.
Largura do resultado
1 - 512 bits
—
Exibe a largura efetiva da porta result[].
4.7.2. Guia Geral 2
Tabela 13. Guia Geral 2
Parâmetro
Entrada do banco de dados
O barramento de entrada 'datab' tem um valor constante?
Não Sim
Valor
Valor Padrão
Descrição
Não
Selecione Sim para especificar o valor constante do
barramento de entrada `datab', se houver.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 20
Enviar feedback
4. Núcleo IP LPM_MULT (Multiplicador) 683490 | 2020.10.05
Parâmetro
Valor
Valor
Qualquer valor maior que 0
Tipo de multiplicação
Que tipo de
Não assinado
multiplicação que você quer? Assinado
Estilo de Implementação
Qual implementação do multiplicador deve ser usada?
Use a implementação padrão
Use o circuito multiplicador dedicado
Usar elementos lógicos
Valor Padrão
Descrição
0
Especifique o valor constante da porta datab[].
Não assinado
Especifique o formato de representação para as entradas dataa[] e datab[].
Use a implementação padrão
Selecione o método desejado para determinar a largura da porta result[].
4.7.3. Tubulação
Tabela 14. Guia Pipelining
Parâmetro
Valor
Deseja canalizar a função?
Gasoduto
Não Sim
Tipo de sinal claro de latência
Qualquer valor maior que 0.
NENHUM ACLR SCLR
Crie um relógio 'clken'
—
ativar relógio
Que tipo de otimização você deseja?
Tipo
Área de velocidade padrão
Valor Padrão
Descrição
Não 1 NENHUM
—
Selecione Sim para habilitar o registro de pipeline para a saída do multiplicador. Habilitar o registro de pipeline adiciona latência extra à saída.
Especifique a latência de saída desejada no ciclo de clock.
Especifique o tipo de redefinição para o registro de pipeline. Selecione NONE se você não usar nenhum registro de pipeline. Selecione ACLR para usar limpeza assíncrona para o registro de pipeline. Isso gerará a porta ACLR. Selecione SCLR para usar a limpeza síncrona para o registro de pipeline. Isso irá gerar a porta SCLR.
Especifica a habilitação de clock alto ativo para a porta de clock do registrador de pipeline
Padrão
Especifique a otimização desejada para o núcleo IP.
Selecione Padrão para permitir que o software Intel Quartus Prime determine a melhor otimização para o núcleo IP.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 21
683490 | 2020.10.05 Enviar comentários
5. LPM_ADD_SUB (Adicionador/Subtrator)
Figura 4.
O núcleo IP LPM_ADD_SUB permite implementar um somador ou um subtrator para adicionar ou subtrair conjuntos de dados para produzir uma saída contendo a soma ou diferença dos valores de entrada.
A figura a seguir mostra as portas para o núcleo IP LPM_ADD_SUB.
Portas LPM_ADD_SUB
LPM_ADD_SUB add_sub cin
dadosa[]
relógio clken datab[] aclr
resultado[] estouro cout
inst
5.1. Características
O núcleo IP LPM_ADD_SUB oferece os seguintes recursos: · Gera somador, subtrator e somador/subtrator configurável dinamicamente
funções. · Suporta largura de dados de 1 bits. · Suporta formato de representação de dados, como assinado e não assinado. · Suporta carry-in (emprestar-out) opcional, limpeza assíncrona e habilitação de clock
portas de entrada. · Suporta portas de saída de transbordo (emprestar) e transbordamento opcionais. · Atribui qualquer um dos barramentos de dados de entrada a uma constante. · Suporta pipelining com latência de saída configurável.
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
5. LPM_ADD_SUB (Adicionador/Subtrator) 683490 | 2020.10.05
5.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo lpm_add_sub ( resultado, cout, estouro, add_sub, cin, dataa, datab, relógio, clken, aclr ); parâmetro lpm_type = “lpm_add_sub”; parâmetro lpm_width = 1; parâmetro lpm_direction = “NÃO USADO”; parâmetro lpm_representation = “ASSINADO”; parâmetro lpm_pipeline = 0; parâmetro lpm_hint = “NÃO USADO”; entrada [lpm_width-1:0] dadosa, dadosb; input add_sub, cin; relógio de entrada; entrada clken; entrada aclr; saída [lpm_width-1:0] resultado; saída cout, estouro; módulo final
5.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) LPM_PACK.vhd no diretório libraryvhdllpm.
componente LPM_ADD_SUB genérico (LPM_WIDTH : natural;
LPM_DIRECTION : string := “UNUSED”; LPM_REPRESENTATION: string := “ASSINADO”; LPM_PIPELINE : natural := 0; LPM_TYPE : string := L_ADD_SUB; LPM_HINT : string := “NÃO USADO”); porta (DATAA: em std_logic_vector(LPM_WIDTH-1 até 0); DATAB: em std_logic_vector(LPM_WIDTH-1 até 0); ACLR: em std_logic:= '0'; CLOCK: em std_logic:= '0'; CLKEN: em std_logic := '1'; CIN : in std_logic := 'Z'; ADD_SUB : in std_logic := '1'; RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0); COUT : out std_logic; OVERFLOW : out std_logic); componente final;
5.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA lpm; USE lpm.lpm_components.all;
5.5. Portos
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP LPM_ADD_SUB.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 23
5. LPM_ADD_SUB (Adicionador/Subtrator) 683490 | 2020.10.05
Tabela 15. Portas de entrada do núcleo IP LPM_ADD_SUB
Nome da porta
Obrigatório
Descrição
cinza
Não
Carry-in para o bit de ordem inferior. Para operações de adição, o valor padrão é 0. Para
operações de subtração, o valor padrão é 1.
dadosa[]
Sim
Entrada de dados. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTH.
banco de dados[]
Sim
Entrada de dados. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTH.
add_sub
Não
Porta de entrada opcional para habilitar a troca dinâmica entre o somador e o subtrator
funções. Se o parâmetro LPM_DIRECTION for usado, add_sub não pode ser usado. Se
omitido, o valor padrão é ADD. A Intel recomenda que você use o
Parâmetro LPM_DIRECTION para especificar a operação da função LPM_ADD_SUB,
em vez de atribuir uma constante à porta add_sub.
relógio
Não
Entrada para uso em pipeline. A porta do relógio fornece a entrada do relógio para um pipeline
Operação. Para valores de LPM_PIPELINE diferentes de 0 (padrão), a porta do relógio deve ser
habilitado.
clken
Não
Relógio habilitado para uso em pipeline. Quando a porta clken é declarada alta, o somador/
ocorre a operação do subtrator. Quando o sinal está baixo, nenhuma operação ocorre. Se
omitido, o valor padrão é 1.
aclr
Não
Limpeza assíncrona para uso em pipeline. O pipeline inicializa para um indefinido (X)
nível lógico. A porta aclr pode ser usada a qualquer momento para redefinir o pipeline para todos os 0s,
assincronamente ao sinal de clock.
Tabela 16. Portas de saída do núcleo IP LPM_ADD_SUB
Nome da porta
Obrigatório
Descrição
resultado[]
Sim
Saída de dados. O tamanho da porta de saída depende do parâmetro LPM_WIDTH
valor.
corte
Não
Carry-out (emprestar) do bit mais significativo (MSB). A porta cout tem um endereço físico
interpretação como o carry-out (empréstimo) do MSB. A porta cout detecta
estouro em operações UNSIGNED. A porta cout opera da mesma maneira para
Operações ASSINADAS e NÃO ASSINADAS.
transbordar
Não
Saída de exceção de estouro opcional. A porta de estouro tem uma interpretação física como
o XOR do carry-in para o MSB com o carry-out do MSB. A porta de transbordamento
afirma quando os resultados excedem a precisão disponível e é usado somente quando o
O valor do parâmetro LPM_REPRESENTATION é SIGNED.
5.6. Parâmetros
A tabela a seguir lista os parâmetros principais do IP LPM_ADD_SUB.
Tabela 17. Parâmetros principais do IP LPM_ADD_SUB
Nome do Parâmetro LPM_WIDTH
Digite inteiro
Obrigatório Sim
Descrição
Especifica as larguras das portas dataa[], datab[] e result[].
LPM_DIRECTION
Corda
Não
Os valores são ADD, SUB e UNUSED. Se omitido, o valor padrão é DEFAULT, que direciona o parâmetro para obter seu valor da porta add_sub. A porta add_sub não pode ser usada se LPM_DIRECTION for usado. A Intel recomenda que você use o parâmetro LPM_DIRECTION para especificar a operação da função LPM_ADD_SUB, em vez de atribuir uma constante à porta add_sub.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 24
Enviar feedback
5. LPM_ADD_SUB (Adicionador/Subtrator) 683490 | 2020.10.05
Nome do Parâmetro LPM_REPRESENTATION LPM_PIPELINE LPM_HINT LPM_TYPE ONE_INPUT_IS_CONSTANT MAXIMIZE_SPEED
INTENDED_DEVICE_FAMILY
Tipo String Inteiro String String String Inteiro
Corda
Obrigatório Não Não Não Não Não Não
Não
Descrição
Especifica o tipo de adição realizada. Os valores são ASSINADOS e NÃO ASSINADOS. Se omitido, o valor padrão é SIGNED. Quando este parâmetro é definido como SIGNED, o somador/subtrator interpreta a entrada de dados como complemento de dois com sinal.
Especifica o número de ciclos de clock de latência associados à saída result[]. Um valor de zero (0) indica que não existe latência e que uma função puramente combinacional será instanciada. Se omitido, o valor padrão é 0 (sem pipeline).
Permite especificar parâmetros específicos da Intel no design VHDL files (.vhd). O valor padrão é NÃO USADO.
Identifica o nome da entidade da biblioteca de módulos parametrizados (LPM) no projeto VHDL files.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro ONE_INPUT_IS_CONSTANT no projeto VHDL files. Os valores são SIM, NÃO e NÃO USADO. Fornece maior otimização se uma entrada for constante. Se omitido, o valor padrão é NÃO.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro MAXIMIZE_SPEED no projeto VHDL files. Você pode especificar um valor entre 0 e 10. Se usado, o software Intel Quartus Prime tenta otimizar uma instância específica da função LPM_ADD_SUB para velocidade em vez de capacidade de roteamento e substitui a configuração da opção de lógica Técnica de otimização. Se MAXIMIZE_SPEED não for usado, o valor da opção Técnica de otimização será usado. Se a configuração para MAXIMIZE_SPEED for 6 ou superior, o compilador otimiza o núcleo IP LPM_ADD_SUB para maior velocidade usando cadeias de transporte; se a configuração for 5 ou menos, o compilador implementa o design sem correntes de transporte. Este parâmetro deve ser especificado para dispositivos Cyclone, Stratix e Stratix GX somente quando a porta add_sub não é usada.
Este parâmetro é usado para fins de modelagem e simulação comportamental. O editor de parâmetros calcula o valor desse parâmetro.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 25
683490 | 2020.10.05 Enviar comentários
6. LPM_COMPARE (Comparador)
Figura 5.
O núcleo IP LPM_COMPARE compara o valor de dois conjuntos de dados para determinar o relacionamento entre eles. Em sua forma mais simples, você pode usar uma porta OR exclusiva para determinar se dois bits de dados são iguais.
A figura a seguir mostra as portas para o núcleo IP LPM_COMPARE.
Portas LPM_COMPARE
LPM_COMPARE
clken
alva
aeb
dadosa[]
agb
banco de dados[]
idadeb
relógio
ou
aclr
alebe
inst
6.1. Características
O núcleo IP LPM_COMPARE oferece os seguintes recursos: · Gera uma função de comparação para comparar dois conjuntos de dados · Suporta largura de dados de 1 bits · Suporta formato de representação de dados, como assinado e não assinado · Produz os seguintes tipos de saída:
— alb (a entrada A é menor que a entrada B) — aeb (a entrada A é igual à entrada B) — agb (a entrada A é maior que a entrada B) — ageb (a entrada A é maior ou igual à entrada B) — aneb ( a entrada A não é igual à entrada B) — aleb (a entrada A é menor ou igual à entrada B) · Suporta portas de entrada opcionais de limpeza assíncrona e habilitação de clock · Atribui a entrada datab[] a uma constante · Suporta pipelining com latência de saída configurável
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
6. LPM_COMPARE (Comparador) 683490 | 2020.10.05
6.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo lpm_compare ( alb, aeb, agb, aleb, aneb, ageb, dataa, datab, clock, clken, aclr ); parâmetro lpm_type = “lpm_compare”; parâmetro lpm_width = 1; parâmetro lpm_representation = “UNSIGNED”; parâmetro lpm_pipeline = 0; parâmetro lpm_hint = “NÃO USADO”; entrada [lpm_width-1:0] dadosa, dadosb; relógio de entrada; entrada clken; entrada aclr; saída alb, aeb, agb, aleb, aneb, ageb; módulo final
6.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) LPM_PACK.vhd no diretório libraryvhdllpm.
componente LPM_COMPARE genérico (LPM_WIDTH : natural;
LPM_REPRESENTATION : string := “UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE: string := L_COMPARE; LPM_HINT : string := “NÃO USADO”); porta (DATAA: em std_logic_vector(LPM_WIDTH-1 até 0); DATAB: em std_logic_vector(LPM_WIDTH-1 até 0); ACLR: em std_logic:= '0'; CLOCK: em std_logic:= '0'; CLKEN: em std_logic := '1'; AGB: out std_logic; AGEB: out std_logic; AEB: out std_logic; ANEB: out std_logic; ALB: out std_logic; ALEB: out std_logic); componente final;
6.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA lpm; USE lpm.lpm_components.all;
6.5. Portos
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP LMP_COMPARE.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 27
6. LPM_COMPARE (Comparador) 683490 | 2020.10.05
Tabela 18. Portas de entrada do núcleo IP LPM_COMPARE
Nome da porta
Obrigatório
Descrição
dadosa[]
Sim
Entrada de dados. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTH.
banco de dados[]
Sim
Entrada de dados. O tamanho da porta de entrada depende do valor do parâmetro LPM_WIDTH.
relógio
Não
Entrada de relógio para uso em pipeline. A porta do relógio fornece a entrada do relógio para um pipeline
Operação. Para valores de LPM_PIPELINE diferentes de 0 (padrão), a porta do relógio deve ser
habilitado.
clken
Não
Relógio habilitado para uso em pipeline. Quando a porta clken é declarada alta, o
operação de comparação ocorre. Quando o sinal está baixo, nenhuma operação ocorre. Se
omitido, o valor padrão é 1.
aclr
Não
Limpeza assíncrona para uso em pipeline. O pipeline é inicializado com uma lógica indefinida (X)
nível. A porta aclr pode ser usada a qualquer momento para redefinir o pipeline para todos os 0s,
assincronamente ao sinal de clock.
Tabela 19. Portas de saída do núcleo IP LPM_COMPARE
Nome da porta
Obrigatório
Descrição
alva
Não
Porta de saída para o comparador. Afirmado se a entrada A for menor que a entrada B.
aeb
Não
Porta de saída para o comparador. Afirmado se a entrada A for igual à entrada B.
agb
Não
Porta de saída para o comparador. Afirmado se a entrada A for maior que a entrada B.
idadeb
Não
Porta de saída para o comparador. Afirmado se a entrada A for maior ou igual à entrada
B.
ou
Não
Porta de saída para o comparador. Afirmado se a entrada A não for igual à entrada B.
alebe
Não
Porta de saída para o comparador. Afirmado se a entrada A for menor ou igual à entrada B.
6.6. Parâmetros
A tabela a seguir lista os parâmetros para o núcleo IP LPM_COMPARE.
Tabela 20. Parâmetros do núcleo IP LPM_COMPARE
Nome do parâmetro
Tipo
Obrigatório
LPM_WIDTH
inteiro sim
LPM_REPRESENTATION
Corda
Não
LPM_PIPELINE
Número inteiro
LPM_HINT
Corda
Não
Descrição
Especifica as larguras das portas dataa[] e datab[].
Especifica o tipo de comparação realizada. Os valores são ASSINADOS e NÃO ASSINADOS. Se omitido, o valor padrão é UNSIGNED. Quando o valor desse parâmetro é definido como SIGNED, o comparador interpreta a entrada de dados como complemento de dois com sinal.
Especifica o número de ciclos de clock de latência associados à saída alb, aeb, agb, ageb, aleb ou aneb. Um valor de zero (0) indica que não existe latência e que uma função puramente combinacional será instanciada. Se omitido, o valor padrão é 0 (sem pipeline).
Permite especificar parâmetros específicos da Intel no design VHDL files (.vhd). O valor padrão é NÃO USADO.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 28
Enviar feedback
6. LPM_COMPARE (Comparador) 683490 | 2020.10.05
Nome do parâmetro LPM_TYPE INTENDED_DEVICE_FAMILY
ONE_INPUT_IS_CONSTANT
Tipo Cadeia Cadeia
Corda
Necessário Não Não
Não
Descrição
Identifica o nome da entidade da biblioteca de módulos parametrizados (LPM) no projeto VHDL files.
Este parâmetro é usado para fins de modelagem e simulação comportamental. O editor de parâmetros calcula o valor desse parâmetro.
Parâmetro específico da Intel. Você deve usar o parâmetro LPM_HINT para especificar o parâmetro ONE_INPUT_IS_CONSTANT no projeto VHDL files. Os valores são SIM, NÃO ou NÃO USADO. Fornece maior otimização se uma entrada for constante. Se omitido, o valor padrão é NÃO.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 29
683490 | 2020.10.05 Enviar comentários
7. Núcleo IP ALTECC (Código de Correção de Erro: Codificador/Decodificador)
Figura 6.
A Intel fornece o núcleo ALTECC IP para implementar a funcionalidade ECC. O ECC detecta dados corrompidos que ocorrem no lado do receptor durante a transmissão de dados. Esse método de correção de erros é mais adequado para situações em que os erros ocorrem aleatoriamente em vez de rajadas.
O ECC detecta erros por meio do processo de codificação e decodificação de dados. por exampAssim, quando o ECC é aplicado em uma aplicação de transmissão, os dados lidos da fonte são codificados antes de serem enviados ao receptor. A saída (palavra de código) do codificador consiste nos dados brutos anexados com o número de bits de paridade. O número exato de bits de paridade anexados depende do número de bits nos dados de entrada. A palavra de código gerada é então transmitida ao destino.
O receptor recebe a palavra-código e a decodifica. As informações obtidas pelo decodificador determinam se um erro é detectado. O decodificador detecta erros de bit único e bit duplo, mas só pode corrigir erros de bit único nos dados corrompidos. Este tipo de ECC é a detecção de erro duplo de correção de erro único (SECDED).
Você pode configurar funções de codificador e decodificador do núcleo ALTECC IP. A entrada de dados no codificador é codificada para gerar uma palavra de código que é uma combinação da entrada de dados e dos bits de paridade gerados. A palavra de código gerada é transmitida ao módulo decodificador para decodificação antes de atingir seu bloco de destino. O decodificador gera um vetor de síndrome para determinar se há algum erro na palavra de código recebida. O decodificador corrige os dados somente se o erro de bit único for dos bits de dados. Nenhum sinal é sinalizado se o erro de bit único for dos bits de paridade. O decodificador também possui sinalizadores para mostrar o status dos dados recebidos e a ação tomada pelo decodificador, se houver.
As figuras a seguir mostram as portas para o núcleo ALTECC IP.
Portas do codificador ALTECC
ALTECC_ENCODER
dados[]
q[]
relógio
relógio
aclr
inst
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core 683490 | 2020.10.05
Figura 7. Portas do decodificador ALTECC
ALTECC_DECODER
dados[] relógio relógio
q[] err_detectado err_corrigido
err_fatal
aclr
inst
7.1. Recursos do Codificador ALTECC
O núcleo IP do codificador ALTECC oferece os seguintes recursos: · Executa codificação de dados usando o esquema Hamming Coding · Suporta largura de dados de 2 bits · Suporta formato de representação de dados assinados e não assinados · Suporta pipelining com latência de saída de um ou dois ciclos de clock · Suporta opcional portas assíncronas claras e habilitadas por clock
O núcleo IP do codificador ALTECC recebe e codifica os dados usando o esquema Hamming Coding. O esquema Hamming Coding deriva os bits de paridade e os anexa aos dados originais para produzir a palavra de código de saída. O número de bits de paridade anexados depende da largura dos dados.
A tabela a seguir lista o número de bits de paridade anexados para diferentes intervalos de larguras de dados. A coluna Total Bits representa o número total de bits de dados de entrada e bits de paridade anexados.
Tabela 21.
Número de bits de paridade e palavra de código de acordo com a largura de dados
Largura dos dados
Número de bits de paridade
Total de bits (palavra de código)
2-4
3+1
6-8
5-11
4+1
10-16
12-26
5+1
18-32
27-57
6+1
34-64
58-64
7+1
66-72
A derivação do bit de paridade usa uma verificação de paridade par. O 1 bit adicional (mostrado na tabela como +1) é anexado aos bits de paridade como o MSB da palavra de código. Isso garante que a palavra de código tenha um número par de 1s. por example, se a largura dos dados for de 4 bits, 4 bits de paridade são anexados aos dados para se tornar uma palavra de código com um total de 8 bits. Se 7 bits do LSB da palavra de código de 8 bits tiverem um número ímpar de 1, o 8º bit (MSB) da palavra de código é 1, tornando o número total de 1 na palavra de código par.
A figura a seguir mostra a palavra de código gerada e a disposição dos bits de paridade e bits de dados em uma entrada de dados de 8 bits.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 31
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core 683490 | 2020.10.05
Figura 8.
Bits de paridade e arranjo de bits de dados em uma palavra de código gerada de 8 bits
MSB
LSB
4 bits de paridade
4 bits de dados
8
1
O núcleo IP do codificador ALTECC aceita apenas larguras de entrada de 2 a 64 bits por vez. Larguras de entrada de 12 bits, 29 bits e 64 bits, que são ideais para dispositivos Intel, geram saídas de 18 bits, 36 bits e 72 bits, respectivamente. Você pode controlar a limitação de seleção de bits no editor de parâmetros.
7.2. Protótipo Verilog HDL (ALTECC_ENCODER)
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo altecc_encoder #( parâmetro pretendido_device_family = “não utilizado”, parâmetro lpm_pipeline = 0, parâmetro width_codeword = 8, parâmetro width_dataword = 8, parâmetro lpm_type = “altecc_encoder”, parâmetro lpm_hint = “não utilizado”) ( fio de entrada aclr, fio de entrada relógio, entrada fio clocken, fio de entrada [width_dataword-1:0] dados, fio de saída [width_codeword-1:0] q); módulo final
7.3. Protótipo Verilog HDL (ALTECC_DECODER)
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) lpm.v no diretório edasynthesis.
módulo altecc_decoder #(parâmetro pretendido_device_family = “não utilizado”, parâmetro lpm_pipeline = 0, parâmetro width_codeword = 8, parâmetro width_dataword = 8, parâmetro lpm_type = “altecc_decoder”, parâmetro lpm_hint = “não utilizado”) ( fio de entrada aclr, fio de entrada relógio, entrada fio clocken, fio de entrada [width_codeword-1:0] dados, fio de saída err_corricted, fio de saída err_detected, fio de saída err_fatal, fio de saída [width_dataword-1:0] q); módulo final
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 32
Enviar feedback
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core 683490 | 2020.10.05
7.4. Declaração de componente VHDL (ALTECC_ENCODER)
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) altera_mf_components.vhd no libraryvhdlaltera_mf diretório.
componente altecc_encoder genérico ( pretendido_device_family:string := “não utilizado”; lpm_pipeline:natural := 0; width_codeword:natural := 8; width_dataword:natural := 8; lpm_hint:string := “UNUSED”; lpm_type:string := “altecc_encoder ”); port( aclr:in std_logic := '0'; clock:in std_logic := '0'; clocken:in std_logic := '1'; data:in std_logic_vector(width_dataword-1 downto 0); q:out std_logic_vector(width_codeword -1 até 0)); componente final;
7.5. Declaração de componente VHDL (ALTECC_DECODER)
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) altera_mf_components.vhd no libraryvhdlaltera_mf diretório.
componente altecc_decoder generic ( intend_device_family:string := “não utilizado”; lpm_pipeline:natural := 0; width_codeword:natural := 8; width_dataword:natural := 8; lpm_hint:string := “UNUSED”; lpm_type:string := “altecc_decoder ”); port( aclr:in std_logic := '0'; clock:in std_logic := '0'; clocken:in std_logic := '1'; data:in std_logic_vector(width_codeword-1 downto 0); err_corricted : out std_logic; err_detected : out std_logic; q:out std_logic_vector(width_dataword-1 até 0); syn_e : out std_logic); componente final;
7.6. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA altera_mf; USE altera_mf.altera_mf_components.all;
7.7. Portas do Codificador
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP do codificador ALTECC.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 33
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core 683490 | 2020.10.05
Tabela 22. Portas de entrada do codificador ALTECC
Nome da porta
Obrigatório
Descrição
dados[]
Sim
Porta de entrada de dados. O tamanho da porta de entrada depende do WIDTH_DATAWORD
valor do parâmetro. A porta data[] contém os dados brutos a serem codificados.
relógio
Sim
Porta de entrada do relógio que fornece o sinal do relógio para sincronizar a operação de codificação.
A porta do relógio é necessária quando o valor LPM_PIPELINE é maior que 0.
relógio
Não
Relógio ativado. Se omitido, o valor padrão é 1.
aclr
Não
Entrada clara assíncrona. O sinal alto ativo de aclr pode ser usado a qualquer momento para
limpa os registradores de forma assíncrona.
Tabela 23. Portas de saída do codificador ALTECC
Nome da porta q[]
Obrigatório Sim
Descrição
Porta de saída de dados codificados. O tamanho da porta de saída depende do valor do parâmetro WIDTH_CODEWORD.
7.8. Portas do decodificador
As tabelas a seguir listam as portas de entrada e saída para o núcleo IP do decodificador ALTECC.
Tabela 24. Portas de entrada do decodificador ALTECC
Nome da porta
Obrigatório
Descrição
dados[]
Sim
Porta de entrada de dados. O tamanho da porta de entrada depende do valor do parâmetro WIDTH_CODEWORD.
relógio
Sim
Porta de entrada do relógio que fornece o sinal do relógio para sincronizar a operação de codificação. A porta do relógio é necessária quando o valor LPM_PIPELINE é maior que 0.
relógio
Não
Relógio ativado. Se omitido, o valor padrão é 1.
aclr
Não
Entrada clara assíncrona. O sinal alto ativo de aclr pode ser usado a qualquer momento para limpar os registradores de forma assíncrona.
Tabela 25. Portas de saída do decodificador ALTECC
Nome da porta q[]
Obrigatório Sim
Descrição
Porta de saída de dados decodificados. O tamanho da porta de saída depende do valor do parâmetro WIDTH_DATAWORD.
err_detected Sim
Sinal de sinalizador para refletir o status dos dados recebidos e especifica quaisquer erros encontrados.
err_correcte Sim d
Sinal de sinalizador para refletir o status dos dados recebidos. Denota um erro de bit único encontrado e corrigido. Você pode usar os dados porque já foram corrigidos.
err_fatal
Sim
Sinal de sinalizador para refletir o status dos dados recebidos. Denota um erro de bit duplo encontrado, mas não corrigido. Você não deve usar os dados se este sinal for ativado.
sin_e
Não
Um sinal de saída que aumentará sempre que um erro de bit único for detectado na paridade
pedaços.
7.9. Parâmetros do Codificador
A tabela a seguir lista os parâmetros para o núcleo IP do codificador ALTECC.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 34
Enviar feedback
7. ALTECC (Código de Correção de Erro: Codificador/Decodificador) IP Core 683490 | 2020.10.05
Tabela 26. Parâmetros do Codificador ALTECC
Nome do parâmetro
Tipo
Obrigatório
Descrição
WIDTH_DATAWORD
inteiro sim
Especifica a largura dos dados brutos. Os valores vão de 2 a 64. Se omitido, o valor padrão é 8.
WIDTH_CODEWORD
inteiro sim
Especifica a largura da palavra de código correspondente. Os valores válidos vão de 6 a 72, excluindo 9, 17, 33 e 65. Se omitido, o valor padrão é 13.
LPM_PIPELINE
Número inteiro
Especifica o pipeline para o circuito. Os valores vão de 0 a 2. Se o valor for 0, as portas não estão registradas. Se o valor for 1, as portas de saída são registradas. Se o valor for 2, as portas de entrada e saída são registradas. Se omitido, o valor padrão é 0.
7.10. Parâmetros do Decodificador
A tabela a seguir lista os parâmetros centrais do IP do decodificador ALTECC.
Tabela 27. Parâmetros do decodificador ALTECC
Nome do parâmetro WIDTH_DATAWORD
Digite inteiro
Obrigatório
Descrição
Sim
Especifica a largura dos dados brutos. Os valores vão de 2 a 64. O
o valor padrão é 8.
WIDTH_CODEWORD
Inteiro
Sim
Especifica a largura da palavra de código correspondente. Os valores são 6
a 72, excluindo 9, 17, 33 e 65. Se omitido, o valor padrão
é 13.
LPM_PIPELINE
Inteiro
Não
Especifica o registro do circuito. Os valores vão de 0 a 2. Se o
valor é 0, nenhum registrador é implementado. Se o valor for 1, o
saída é registrada. Se o valor for 2, tanto a entrada quanto o
saída são registrados. Se o valor for maior que 2, adicional
registradores são implementados na saída para o adicional
latências. Se omitido, o valor padrão é 0.
Crie uma porta 'syn_e'
Inteiro
Não
Ative esse parâmetro para criar uma porta syn_e.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 35
683490 | 2020.10.05 Enviar comentários
8. Núcleo IP do Somador Multiplicador Intel FPGA
Figura 9.
O Intel FPGA Multiply Adder (dispositivos Intel Stratix 10, Intel Arria 10 e Intel Cyclone 10 GX) ou ALTERA_MULT_ADD (dispositivos Arria V, Stratix V e Cyclone V) núcleo IP permite implementar um multiplicador-somador.
A figura a seguir mostra as portas para o Intel FPGA Multiply Adder ou ALTERA_MULT_ADD IP core.
Intel FPGA Multiply Adder ou portas ALTERA_MULT_ADD
Intel FPGA Multiply Adder ou ALTERA_MULT_ADD
dataa[] sinal datab[] signb datac[] coefsel0[] coefsel1[] coefsel2[] coefsel3[] addnsub1 addnsub3 aclr/sclr[] scanina[] clock0 clock1 clock2 ena0 ena1 ena2 sload_accum
accum_sload encadeamento[]
scanouta[] resultado[]
aclr0 aclr1
inst
Um multiplicador-somador aceita pares de entradas, multiplica os valores juntos e então adiciona ou subtrai dos produtos de todos os outros pares.
Se todas as larguras de dados de entrada forem de 9 bits ou menores, a função usará a configuração do multiplicador de entrada de 9 x 9 bits no bloco DSP para dispositivos que suportam configuração de 9 x 9. Caso contrário, o bloco DSP usa multiplicadores de entrada de 18 × 18 bits para processar dados com larguras entre 10 bits e 18 bits. Se vários núcleos Intel FPGA Multiply Adder ou ALTERA_MULT_ADD IP ocorrerem em um design, as funções serão distribuídas para
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
muitos blocos DSP diferentes possíveis para que o roteamento para esses blocos seja mais flexível. Menos multiplicadores por bloco DSP permitem mais opções de roteamento no bloco, minimizando os caminhos para o restante do dispositivo.
Os registradores e registradores de pipeline extras para os seguintes sinais também são colocados dentro do bloco DSP: · Entrada de dados · Seleção assinada ou não assinada · Seleção de adição ou subtração · Produtos de multiplicadores
No caso do resultado de saída, o primeiro registrador é colocado no bloco DSP. No entanto, os registradores de latência extra são colocados em elementos lógicos fora do bloco. Periféricos ao bloco DSP, incluindo entradas de dados para o multiplicador, entradas de sinal de controle e saídas do somador, usam roteamento regular para se comunicar com o restante do dispositivo. Todas as conexões na função usam roteamento dedicado dentro do bloco DSP. Este roteamento dedicado inclui as cadeias de registradores de deslocamento quando você seleciona a opção de deslocar os dados de entrada registrados de um multiplicador de um multiplicador para um multiplicador adjacente.
Para obter mais informações sobre blocos DSP em qualquer uma das séries de dispositivos Stratix V e Arria V, consulte o capítulo Blocos DSP dos respectivos manuais na página de literatura e documentação técnica.
Informações Relacionadas AN 306: Implementando Multiplicadores em Dispositivos FPGA
Fornece mais informações sobre a implementação de multiplicadores usando DSP e blocos de memória em dispositivos Intel FPGA.
8.1. Características
O Intel FPGA Multiply Adder ou núcleo ALTERA_MULT_ADD IP oferece os seguintes recursos: · Gera um multiplicador para realizar operações de multiplicação de dois complexos
números Nota: Ao construir multiplicadores maiores do que o tamanho suportado nativamente, pode/
haverá um impacto no desempenho resultante da cascata dos blocos DSP. · Suporta larguras de dados de 1 256 bits · Suporta formato de representação de dados assinados e não assinados · Suporta pipelining com latência de entrada configurável · Oferece uma opção para alternar dinamicamente entre suporte de dados assinados e não assinados · Oferece uma opção para alternar dinamicamente entre operações de adição e subtração · Suporta portas de entrada opcionais assíncronas e síncronas habilitadas para clock · Suporta modo de registro de atraso sistólico · Suporta pré-somador com 8 coeficientes de pré-carga por multiplicador · Suporta constante de pré-carga para complementar o feedback do acumulador
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 37
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.1. Pré-adicionador
Com o pré-somador, as adições ou subtrações são feitas antes de alimentar o multiplicador.
Existem cinco modos de pré-somador: · Modo simples · Modo de coeficiente · Modo de entrada · Modo quadrado · Modo constante
Observação:
Quando o pré-somador é usado (modo de coeficiente/entrada/quadrado do pré-somador), todas as entradas de dados para o multiplicador devem ter a mesma configuração de relógio.
8.1.1.1. Modo simples pré-adicionador
Neste modo, ambos os operandos derivam das portas de entrada e o pré-somador não é usado ou ignorado. Este é o modo padrão.
Figura 10. Modo simples de pré-adicionador
a0 b0
Multi0
resultado
8.1.1.2. Modo de coeficiente de pré-somador
Neste modo, um operando multiplicador deriva do pré-somador e o outro operando deriva do armazenamento interno de coeficientes. O armazenamento de coeficientes permite até 8 constantes predefinidas. Os sinais de seleção de coeficiente são coefsel[0..3].
Este modo é expresso na seguinte equação.
O seguinte mostra o modo de coeficiente pré-somador de um multiplicador.
Figura 11. Modo de coeficiente de pré-somador
Preader
a0
Multi0
+/-
resultado
b0
coefsel0 coef
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 38
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.1.3. Modo de entrada do pré-somador Neste modo, um operando multiplicador deriva do pré-somador e o outro operando deriva da porta de entrada datac[]. Este modo é expresso na seguinte equação.
O seguinte mostra o modo de entrada do pré-somador de um multiplicador.
Figura 12. Modo de entrada pré-adicionador
a0 b0
Multi0
+/-
resultado
c0
8.1.1.4. Modo quadrado do pré-somador Este modo é expresso na seguinte equação.
O seguinte mostra o modo quadrado pré-somador de dois multiplicadores.
Figura 13. Modo quadrado do pré-somador
a0 b0
Multi0
+/-
resultado
8.1.1.5. Modo Constante Pré-adicionador
Nesse modo, um operando multiplicador deriva da porta de entrada e o outro operando deriva do armazenamento interno de coeficientes. O armazenamento de coeficientes permite até 8 constantes predefinidas. Os sinais de seleção de coeficiente são coefsel[0..3].
Este modo é expresso na seguinte equação.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 39
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
A figura a seguir mostra o modo constante pré-somador de um multiplicador.
Figura 14. Modo constante do pré-somador
a0
Multi0
resultado
coefsel0
coef
8.1.2. Registro de atraso sistólico
Em uma arquitetura sistólica, os dados de entrada são alimentados em uma cascata de registros que atuam como um buffer de dados. Cada registrador fornece uma entrada sample a um multiplicador onde é multiplicado pelo respectivo coeficiente. O somador de cadeia armazena os resultados gradualmente combinados do multiplicador e o resultado registrado anteriormente da porta de entrada chainin[] para formar o resultado final. Cada elemento multiplicar-adicionar deve ser atrasado por um único ciclo para que os resultados sejam sincronizados adequadamente quando somados. Cada atraso sucessivo é usado para endereçar a memória de coeficientes e o buffer de dados de seus respectivos elementos de multiplicação e adição. por example, um único atraso para o segundo elemento de adição e multiplicação, dois atrasos para o terceiro elemento de adição e multiplicação e assim por diante.
Figura 15. Registros sistólicos
registros sistólicos
x(t)c(0)
S -1
S -1
c(1)
S -1
S -1
c(2)
S -1
S -1
c(N-1)
S -1
S -1
S -1
S -1 ano(t)
x(t) representa os resultados de um fluxo contínuo de entrada samples e y(t)
representa a soma de um conjunto de entrada samples, e no tempo, multiplicados por seus
respectivos coeficientes. Os resultados de entrada e saída fluem da esquerda para a direita. O c(0) a c(N-1) denota os coeficientes. Os registradores de atraso sistólico são denotados por S-1, enquanto o 1 representa um único atraso de clock. Registros de atraso sistólico são adicionados em
as entradas e saídas para pipelining de forma a garantir os resultados do
operando multiplicador e as somas acumuladas ficam sincronizadas. Este elemento de processamento
é replicado para formar um circuito que calcula a função de filtragem. Esta função é
expressa na seguinte equação.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 40
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
N representa o número de ciclos de dados que entraram no acumulador, y(t) representa a saída no tempo t, A(t) representa a entrada no tempo t e B(i) são os coeficientes. O t e i na equação correspondem a um determinado instante no tempo, portanto, para calcular a saída sample y(t) no tempo t, um grupo de entrada samparquivos em N pontos diferentes no tempo, ou A(n), A(n-1), A(n-2), … A(n-N+1) é necessário. O grupo de N entradas sampOs arquivos são multiplicados por N coeficientes e somados para formar o resultado final y.
A arquitetura do registro sistólico está disponível apenas para os modos soma de 2 e soma de 4. Para ambos os modos de arquitetura de registro sistólico, o primeiro sinal de cadeia precisa ser vinculado a 0.
A figura a seguir mostra a implementação do registro de atraso sistólico de 2 multiplicadores.
Figura 16. Implementação do Registro de Atraso Sistólico de 2 Multiplicadores
acorrentar
a0
Multi0
+/-
b0
a1
Multi1
+/-
b1
resultado
A soma de dois multiplicadores é expressa na seguinte equação.
A figura a seguir mostra a implementação do registro de atraso sistólico de 4 multiplicadores.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 41
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Figura 17. Implementação do Registro de Atraso Sistólico de 4 Multiplicadores
acorrentar
a0
Multi0
+/-
b0
a1
Multi1
+/-
b1
a2
Multi2
+/-
b2
a3
Multi3
+/-
b3
resultado
A soma de quatro multiplicadores é expressa na seguinte equação. Figura 18. Soma de 4 Multiplicadores
A seguir lista o advantages de implementação do registro sistólico: · Reduz o uso de recursos DSP · Permite mapeamento eficiente no bloco DSP usando a estrutura do adicionador de cadeia
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 42
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.3. Constante de pré-carga
A constante de pré-carga controla o operando do acumulador e complementa a realimentação do acumulador. O LOADCONST_VALUE válido varia de 0. O valor constante é igual a 64N, onde N = LOADCONST_VALUE. Quando LOADCONST_VALUE é definido como 2, o valor constante é igual a 64. Essa função pode ser usada como arredondamento enviesado.
A figura a seguir mostra a implementação da constante de pré-carregamento.
Figura 19. Constante de pré-carga
Feedback do acumulador
constante
a0
Multi0
+/-
b0
a1
Multi1
+/b1
resultado
accum_sload sload_accum
Consulte os seguintes núcleos IP para outras implementações do multiplicador: · ALTMULT_ACCUM · ALTMEMMULT · LPM_MULT
8.1.4. Acumulador duplo
O recurso de acumulador duplo adiciona um registro adicional no caminho de realimentação do acumulador. O registrador de acumulador duplo segue o registrador de saída, que inclui o clock, clock enable e aclr. O registrador do acumulador adicional retorna o resultado com um atraso de um ciclo. Esse recurso permite que você tenha dois canais de acumuladores com a mesma contagem de recursos.
A figura a seguir mostra a implementação do acumulador duplo.
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 43
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Figura 20. Acumulador Duplo
Registro de Acumulador Duplo
Feedback do acumulador
a0
Multi0
+/-
b0
a1
Multi1
+/b1
Resultado de saída Registrador de saída
8.2. Protótipo Verilog HDL
Você pode encontrar o Intel FPGA Multiply Adder ou o protótipo ALTERA_MULT_ADD Verilog HDL file (altera_mult_add_rtl.v) no diretório librarymegafunctions.
8.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada em altera_lnsim_components.vhd no libraryvhdl diretório altera_lnsim.
8.4. Declaração VHDL LIBRARY_USE
A declaração VHDL LIBRARY-USE não é necessária se você usar a declaração de componente VHDL.
BIBLIOTECA altera_mf; USE altera_mf.altera_mf_components.all;
8.5. Sinais
As tabelas a seguir listam os sinais de entrada e saída do núcleo Multiply Adder Intel FPGA IPor ALTERA_MULT_ADD IP.
Tabela 28. Multiply Adder Intel FPGA IPor ALTERA_MULT_ADD Sinais de entrada
Sinal
Obrigatório
Descrição
dadosa_0[]/dadosa_1[]/
Sim
dadosa_2[]/dadosa_3[]
Entrada de dados para o multiplicador. Porta de entrada [NUMBER_OF_MULTIPLIERS * WIDTH_A – 1 … 0] de largura
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 44
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Sinal datab_0[]/datab_1[]/ datab_2[]/datab_3[] datac_0[] /datac_1[]/ datac_2[]/datac_3[] clock[1:0] aclr[1:0] sclr[1:0] ena [1:0] sinal
assinar b
scanina[]accum_sload
Necessário Sim Não
Não não não não não
Não
Não Não
Descrição
O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Entrada de dados para o multiplicador. Sinal de entrada [NUMBER_OF_MULTIPLIERS * WIDTH_B – 1 … 0] de largura O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para esses sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Entrada de dados para o multiplicador. Sinal de entrada [NUMBER_OF_MULTIPLIERS * WIDTH_C – 1, … 0] de largura Selecione INPUT para Selecione o parâmetro do modo preadder para habilitar esses sinais. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Porta de entrada do relógio para o registro correspondente. Este sinal pode ser usado por qualquer registro no núcleo IP. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Entrada de limpeza assíncrona para o registro correspondente. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Entrada de limpeza síncrona para o registro correspondente. O modelo de simulação para este IP suporta valor de entrada indeterminado X para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída
Habilita entrada de sinal para o registrador correspondente. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para estes sinais. Quando você fornece o valor X para esses sinais, o valor X é propagado nos sinais de saída.
Especifica a representação numérica da entrada do multiplicador A. Se o sinal do sinal for alto, o multiplicador trata o sinal da entrada do multiplicador A como um número com sinal. Se o sinal signa for baixo, o multiplicador trata o sinal de entrada A do multiplicador como um número sem sinal. Selecione VARIÁVEL para Qual é o formato de representação para Multiplicadores Um parâmetro de entrada para habilitar este sinal. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Especifica a representação numérica do sinal B de entrada do multiplicador. Se o sinal signb for alto, o multiplicador trata o sinal B de entrada do multiplicador como um número de complemento de dois com sinal. Se o sinal signb for baixo, o multiplicador trata o sinal B de entrada do multiplicador como um número sem sinal. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Entrada para cadeia de varredura A. Sinal de entrada [WIDTH_A – 1, … 0] largo. Quando o parâmetro INPUT_SOURCE_A tiver um valor de SCANA, o sinal scanina[] é necessário.
Especifica dinamicamente se o valor do acumulador é constante. Se o sinal accum_sload for baixo, então a saída do multiplicador é carregada no acumulador. Não use accum_sload e sload_accum simultaneamente.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 45
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Sinal sload_accum
chainin[] addnsub1
addnsub3
coefsel0[] coefsel1[] coefsel2[] coefsel3[]
Necessário Não
Não Não
Não
Não não não não
Descrição
O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Especifica dinamicamente se o valor do acumulador é constante. Se o sinal sload_accum for alto, então a saída do multiplicador é carregada no acumulador. Não use accum_sload e sload_accum simultaneamente. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Barramento de entrada de resultado do somador dos s anteriorestage. Sinal de entrada [WIDTH_CHAININ – 1, … 0] largo.
Realize adição ou subtração às saídas do primeiro par de multiplicadores. Entrada 1 para sinal addnsub1 para adicionar as saídas do primeiro par de multiplicadores. Insira 0 no sinal addnsub1 para subtrair as saídas do primeiro par de multiplicadores. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Realize adição ou subtração às saídas do primeiro par de multiplicadores. Entrada 1 para sinal addnsub3 para adicionar as saídas do segundo par de multiplicadores. Insira 0 no sinal addnsub3 para subtrair as saídas do primeiro par de multiplicadores. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Sinal de entrada de coeficiente [0:3] para o primeiro multiplicador. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Sinal de entrada de coeficiente [0:3] para o segundo multiplicador. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Sinal de entrada de coeficiente [0:3] para o terceiro multiplicador. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Sinal de entrada de coeficiente [0:3] para o quarto multiplicador. O modelo de simulação para este IP suporta valor de entrada indeterminado (X) para este sinal. Quando você fornece o valor X para esta entrada, o valor X é propagado nos sinais de saída.
Tabela 29. Sinais de saída de IP FPGA da Intel Multiply Adder
Sinal
Obrigatório
Descrição
resultado []
Sim
Sinal de saída do multiplicador. Sinal de saída [WIDTH_RESULT – 1 … 0] largo
O modelo de simulação para este IP suporta valor de saída indeterminado (X). Quando você fornece o valor X como entrada, o valor X é propagado neste sinal.
scanouta []
Não
Saída da cadeia de varredura A. Sinal de saída [WIDTH_A – 1..0] largo.
Selecione mais de 2 para números de multiplicadores e escolha Scan chain input para Qual é a entrada A do multiplicador conectado ao parâmetro para habilitar este sinal.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 46
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.6. Parâmetros
8.6.1. Guia geral
Tabela 30. Aba Geral
Parâmetro
Parâmetro gerado por IP
Valor
Qual é o número de multiplicadores?
number_of_m 1 – 4 multiplicadores
Qual deve ser a largura dos barramentos de entrada A width_a?
1 – 256
Qual deve ser a largura dos barramentos de entrada B width_b?
1 – 256
Qual deve ser a largura do barramento de saída 'resultado'?
largura_resultado
1 – 256
Crie um relógio associado habilitado para cada relógio
gui_associate ligado d_clock_enabl desligado e
8.6.2. Aba Modos Extras
Tabela 31. Guia Modos Extras
Parâmetro
Parâmetro gerado por IP
Valor
Configuração de Saídas
Registre a saída da unidade adicionadora
gui_output_re ativado
registro
Desligado
Qual é a fonte da entrada do clock?
gui_output_re gister_clock
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_output_re gister_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_output_re gister_sclr
NENHUM SCLR0 SCLR1
operação de somador
Que operação deve ser realizada nas saídas do primeiro par de multiplicadores?
gui_multiplicador 1_direção
ADICIONAR, SUB, VARIÁVEL
Valor Padrão 1
16
Descrição
Número de multiplicadores a serem somados. Os valores vão de 1 a 4. Especifique a largura da porta dataa[].
16
Especifique a largura da porta datab[].
32
Especifique a largura da porta result[].
Desligado
Selecione esta opção para ativar o relógio
para cada relógio.
Valor Padrão
Descrição
Desligado Relógio0
NENHUMA NENHUMA
Selecione esta opção para ativar o registro de saída do módulo adicionador.
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar a fonte de clock para os registradores de saída. Você deve selecionar Registrar saída da unidade do somador para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona para o registro de saída do somador. Você deve selecionar Registrar saída da unidade do somador para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro de saída do somador. Você deve selecionar Registrar saída da unidade do somador para habilitar este parâmetro.
ADICIONAR
Selecione a operação de adição ou subtração a ser executada para as saídas entre o primeiro e o segundo multiplicadores.
· Selecione ADD para executar a operação de adição.
· Selecione SUB para executar a operação de subtração.
· Selecione VARIÁVEL para usar a porta addnsub1 para controle dinâmico de adição/subtração.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 47
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Parâmetro gerado por IP
Valor
Registre a entrada 'addnsub1'
gui_addnsub_ Ligado multiplicador_reg Desligado ister1
Qual é a fonte da entrada do clock?
gui_addnsub_ multiplicador_reg ister1_clock
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_addnsub_ multiplicador_aclr 1
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_addnsub_ multiplicador_sclr 1
NENHUM SCLR0 SCLR1
Que operação deve ser realizada nas saídas do segundo par de multiplicadores?
gui_multiplicador 3_direção
ADICIONAR, SUB, VARIÁVEL
Registre a entrada 'addnsub3'
gui_addnsub_ Ligado multiplicador_reg Desligado ister3
Qual é a fonte da entrada do clock?
gui_addnsub_ multiplicador_reg ister3_clock
Relógio0 Relógio1 Relógio2
Valor Padrão
Desligado Relógio0 NENHUM NENHUM ADICIONAR
Desligado Relógio0
Descrição
Quando o valor VARIÁVEL é selecionado: · Conduz o sinal addnsub1 para alto para
operação de adição. · Direcione o sinal addnsub1 para baixo para
operação de subtração. Você deve selecionar mais de dois multiplicadores para ativar este parâmetro.
Selecione esta opção para ativar o registro de entrada para a porta addnsub1. Você deve selecionar VARIÁVEL para Qual operação deve ser realizada nas saídas do primeiro par de multiplicadores para habilitar este parâmetro.
Selecione Clock0 , Clock1 ou Clock2 para especificar o sinal de clock de entrada para o registro addnsub1. Você deve selecionar Registrar entrada 'addnsub1' para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona para o registro addnsub1. Você deve selecionar Registrar entrada 'addnsub1' para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro addnsub1. Você deve selecionar Registrar entrada 'addnsub1' para habilitar este parâmetro.
Selecione a operação de adição ou subtração a ser executada para as saídas entre o terceiro e o quarto multiplicadores. · Selecione ADD para realizar a adição
Operação. · Selecione SUB para realizar a subtração
Operação. · Selecione VARIÁVEL para usar addnsub1
porta para controle dinâmico de adição/subtração. Quando o valor VARIÁVEL é selecionado: · Conduz o sinal addnsub1 para alto para operação de adição. · Direcione o sinal addnsub1 para baixo para operação de subtração. Você deve selecionar o valor 4 para Qual é o número de multiplicadores? para ativar este parâmetro.
Selecione esta opção para ativar o registro de entrada para o sinal addnsub3. Você deve selecionar VARIÁVEL para Qual operação deve ser realizada nas saídas do segundo par de multiplicadores para habilitar este parâmetro.
Selecione Clock0 , Clock1 ou Clock2 para especificar o sinal de clock de entrada para o registro addnsub3. Você deve selecionar Registrar entrada 'addnsub3' para habilitar este parâmetro.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 48
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Qual é a origem da entrada clara assíncrona?
Parâmetro gerado por IP
Valor
gui_addnsub_ multiplicador_aclr 3
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_addnsub_ multiplicador_sclr 3
NENHUM SCLR0 SCLR1
Polaridade Ativar `use_subadd'
gui_use_subn ativado
adicionar
Desligado
8.6.3. Guia Multiplicadores
Tabela 32. Guia Multiplicadores
Parâmetro
Parâmetro gerado por IP
Valor
O que é o
gui_represent
formatação de representação_a
para entradas dos Multiplicadores A?
ASSINADO, NÃO ASSINADO, VARIÁVEL
Registre a entrada `signa'
gui_register_s ativado
Igna
Desligado
Qual é a fonte da entrada do clock?
gui_register_signa_clock
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_register_signa_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_register_signa_sclr
NENHUM SCLR0 SCLR1
O que é o
gui_represent
formato de representação ação_b
para entradas dos Multiplicadores B?
ASSINADO, NÃO ASSINADO, VARIÁVEL
Registre a entrada `signb'
gui_register_s ativado
ignb
Desligado
Valor Padrão NENHUM
NENHUM
Descrição
Especifica a fonte de limpeza assíncrona para o registro addnsub3. Você deve selecionar Registrar entrada 'addnsub3' para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro addnsub3. Você deve selecionar Registrar entrada 'addnsub3' para habilitar este parâmetro.
Desligado
Selecione esta opção para inverter a função
da porta de entrada addnsub.
Direcione addnsub para alto para operação de subtração.
Direcione addnsub para baixo para operação de adição.
Valor Padrão
Descrição
UNSIGNED Especifique o formato de representação para a entrada do multiplicador A.
Desligado
Selecione esta opção para habilitar signa
registrar.
Você deve selecionar o valor VARIÁVEL para Qual é o formato de representação das entradas dos Multiplicadores A? parâmetro para ativar esta opção.
Relógio0
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar o sinal de clock de entrada para o registrador signa.
Você deve selecionar a entrada Register `signa' para habilitar este parâmetro.
NENHUM
Especifica a fonte de limpeza assíncrona para o registro de assinatura.
Você deve selecionar a entrada Register `signa' para habilitar este parâmetro.
NENHUM
Especifica a fonte de limpeza síncrona para o registro de assinatura.
Você deve selecionar a entrada Register `signa' para habilitar este parâmetro.
UNSIGNED Especifique o formato de representação para a entrada do multiplicador B.
Desligado
Selecione esta opção para habilitar signb
registrar.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 49
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Parâmetro gerado por IP
Valor
Valor Padrão
Qual é a fonte da entrada do clock?
gui_register_s ignb_clock
Relógio0 Relógio1 Relógio2
Relógio0
Qual é a origem da entrada clara assíncrona?
gui_register_signb_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_register_signb_sclr
NENHUM SCLR0 SCLR1
Configuração de entrada
Registre a entrada A do multiplicador
Qual é a fonte da entrada do clock?
gui_input_reg ativado
irmã_a
Desligado
gui_input_register_a_clock
Relógio0 Relógio1 Relógio2
NENHUMA NENHUMA
Desligado Relógio0
Qual é a origem da entrada clara assíncrona?
gui_input_reg ister_a_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_input_reg ister_a_sclr
NENHUM SCLR0 SCLR1
Registre a entrada B do multiplicador
Qual é a fonte da entrada do clock?
gui_input_reg ativado
irmã_b
Desligado
gui_input_register_b_clock
Relógio0 Relógio1 Relógio2
NENHUM NENHUM Off Clock0
Qual é a origem da entrada clara assíncrona?
gui_input_reg ister_b_aclr
NENHUM ACLR0 ACLR1
NENHUM
Qual é a fonte para entrada clara síncrona?
gui_input_register_b_sclr
NENHUM SCLR0 SCLR1
NENHUM
A que está ligada a entrada A do multiplicador?
gui_multiplier Multiplicador de entrada Multiplicador
_a_entrada
Entrada de entrada da cadeia de digitalização
Descrição
Você deve selecionar o valor VARIÁVEL para Qual é o formato de representação das entradas dos Multiplicadores B? parâmetro para ativar esta opção.
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar o sinal de clock de entrada para o registro signb. Você deve selecionar a entrada Register `signb' para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona para o registro signb. Você deve selecionar a entrada Register `signb' para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro signb. Você deve selecionar a entrada Register `signb' para habilitar este parâmetro.
Selecione esta opção para ativar o registro de entrada para um barramento de entrada de dados.
Selecione Clock0 , Clock1 ou Clock2 para ativar e especificar o sinal de relógio de entrada de registro para o barramento de entrada de dadosa. Você deve selecionar a entrada de registro A do multiplicador para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona do registro para o barramento de entrada de dados. Você deve selecionar a entrada de registro A do multiplicador para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona do registro para o barramento de entrada de dados. Você deve selecionar a entrada de registro A do multiplicador para habilitar este parâmetro.
Selecione esta opção para ativar o registro de entrada para o barramento de entrada do banco de dados.
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar o sinal de clock de entrada de registro para o barramento de entrada datab. Você deve selecionar a entrada de registro B do multiplicador para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona do registro para o barramento de entrada do banco de dados. Você deve selecionar a entrada de registro B do multiplicador para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona do registro para o barramento de entrada do banco de dados. Você deve selecionar a entrada de registro B do multiplicador para habilitar este parâmetro.
Selecione a fonte de entrada para a entrada A do multiplicador.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 50
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Parâmetro gerado por IP
Valor
Escanear uma configuração de registro
Registrar a saída da cadeia de varredura
gui_scanouta ativado
_registrar
Desligado
Qual é a fonte da entrada do clock?
gui_scanouta _register_cloc k
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_scanouta _register_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_scanouta _register_sclr
NENHUM SCLR0 SCLR1
8.6.4. Aba Preader
Tabela 33. Aba Pré-adicionador
Parâmetro
Parâmetro gerado por IP
Valor
Selecione o modo preadder
preadder_mo de
SIMPLES, COEF, ENTRADA, QUADRADO, CONSTANTE
Valor Padrão
Descrição
Selecione a entrada do multiplicador para usar um barramento de entrada de dados como fonte para o multiplicador. Selecione Scan chain input para usar o barramento de entrada scanin como fonte para o multiplicador e habilitar o barramento de saída scanout. Este parâmetro está disponível quando você seleciona 2, 3 ou 4 para Qual é o número de multiplicadores? parâmetro.
Desligado Relógio0 NENHUM NENHUM
Selecione esta opção para ativar o registro de saída para o barramento de saída scanouta.
Você deve selecionar a entrada da cadeia de varredura para a que a entrada A do multiplicador está conectada? parâmetro para ativar esta opção.
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar o sinal de relógio de entrada de registro para o barramento de saída scanouta.
Você deve ativar Registrar saída do parâmetro da cadeia de varredura para habilitar esta opção.
Especifica a fonte de limpeza assíncrona do registro para o barramento de saída scanouta.
Você deve ativar Registrar saída do parâmetro da cadeia de varredura para habilitar esta opção.
Especifica a fonte de limpeza síncrona do registro para o barramento de saída scanouta.
Você deve selecionar Registrar saída do parâmetro da cadeia de varredura para habilitar esta opção.
Valor Padrão
SIMPLES
Descrição
Especifica o modo de operação do módulo pré-adicionador. SIMPLE: Este modo ignora o preadder. Este é o modo padrão. COEF: Este modo usa a saída do preadder e do barramento de entrada coefsel como entradas para o multiplicador. INPUT: Este modo usa a saída do preadder e do barramento de entrada de dados como entradas para o multiplicador. QUADRADO: Este modo usa a saída do pré-adicionador como ambas as entradas do multiplicador.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 51
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Parâmetro gerado por IP
Valor
Selecione a direção do preadder
gui_preadder ADICIONAR,
_direção
SUB
Qual deve ser a largura dos barramentos de entrada C width_c?
1 – 256
Configuração do registro de entrada de dados C
Registrar entrada de dados
gui_datac_inp ativado
ut_register
Desligado
Qual é a fonte da entrada do clock?
gui_datac_inp ut_register_cl ock
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_datac_inp ut_register_a clr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_datac_inp ut_register_sc lr
NENHUM SCLR0 SCLR1
Coeficientes
Qual deve ser a largura do coef?
largura_coef
1 – 27
Configuração do Registro Coef
Registre a entrada coefsel
gui_coef_regi ativado
mais velho
Desligado
Qual é a fonte da entrada do clock?
gui_coef_regi ster_clock
Relógio0 Relógio1 Relógio2
Valor Padrão
ADICIONAR
16
Descrição
CONSTANT: Este modo usa um barramento de entrada de dados com pré-adder ignorado e um barramento de entrada coefsel como entradas para o multiplicador.
Especifica a operação do preadder. Para habilitar este parâmetro, selecione o seguinte para o modo Select preadder: · COEF · INPUT · SQUARE ou · CONSTANT
Especifica o número de bits para o barramento de entrada C. Você deve selecionar INPUT para selecionar o modo preadder para habilitar este parâmetro.
No Relógio0 NENHUM NENHUM
Selecione esta opção para ativar o registro de entrada para o barramento de entrada de dados. Você deve definir INPUT como Select preadder mode parameter para habilitar esta opção.
Selecione Clock0 , Clock1 ou Clock2 para especificar o sinal de clock de entrada para o registro de entrada de dados. Você deve selecionar Registrar entrada de dados para habilitar este parâmetro.
Especifica a fonte de limpeza assíncrona para o registro de entrada de dados. Você deve selecionar Registrar entrada de dados para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro de entrada de dados. Você deve selecionar Registrar entrada de dados para habilitar este parâmetro.
18
Especifica o número de bits para
barramento de entrada coefsel.
Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
No Relógio0
Selecione esta opção para ativar o registro de entrada para o barramento de entrada coefsel. Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
Selecione Clock0 , Clock1 ou Clock2 para especificar o sinal de clock de entrada para o registro de entrada coefsel. Você deve selecionar Register the coefsel input para habilitar este parâmetro.
continuou…
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 52
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Qual é a origem da entrada clara assíncrona?
Parâmetro gerado por IP
Valor
gui_coef_regi ster_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona
gui_coef_regi ster_sclr
NENHUM SCLR0 SCLR1
Configuração Coeficiente_0
coef0_0 a coef0_7
0x00000 0xFFFFFFF
Configuração Coeficiente_1
coef1_0 a coef1_7
0x00000 0xFFFFFFF
Configuração Coeficiente_2
coef2_0 a coef2_7
0x00000 0xFFFFFFF
Configuração Coeficiente_3
coef3_0 a coef3_7
0x00000 0xFFFFFFF
8.6.5. Aba Acumulador
Tabela 34. Aba Acumulador
Parâmetro
Parâmetro gerado por IP
Valor
Ativar acumulador?
acumulador
SIM NÃO
Qual é o tipo de operação do acumulador?
accum_directi ADICIONAR,
on
SUB
Valor Padrão NENHUM
NENHUM
0x0000000 0
0x0000000 0
0x0000000 0
0x0000000 0
Descrição
Especifica a fonte de limpeza assíncrona para o registro de entrada coefsel. Você deve selecionar Register the coefsel input para habilitar este parâmetro.
Especifica a fonte de limpeza síncrona para o registro de entrada coefsel. Você deve selecionar Register the coefsel input para habilitar este parâmetro.
Especifica os valores de coeficiente para este primeiro multiplicador. O número de bits deve ser o mesmo especificado em Qual deve ser a largura do coef? parâmetro. Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
Especifica os valores de coeficiente para este segundo multiplicador. O número de bits deve ser o mesmo especificado em Qual deve ser a largura do coef? parâmetro. Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
Especifica os valores de coeficiente para este terceiro multiplicador. O número de bits deve ser o mesmo especificado em Qual deve ser a largura do coef? parâmetro. Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
Especifica os valores de coeficiente para este quarto multiplicador. O número de bits deve ser o mesmo especificado em Qual deve ser a largura do coef? parâmetro. Você deve selecionar COEF ou CONSTANT para o modo pré-adicionador para habilitar este parâmetro.
Valor Padrão NÃO
ADICIONAR
Descrição
Selecione SIM para habilitar o acumulador. Você deve selecionar Registrar saída da unidade adicionadora ao usar o recurso de acumulador.
Especifica a operação do acumulador: · ADD para operação de adição · SUB para operação de subtração. Você deve selecionar SIM para Ativar acumulador? parâmetro para ativar esta opção.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 53
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Constante de pré-carga Ativar constante de pré-carga
Parâmetro gerado por IP
Valor
gui_ena_prelo ativado
ad_const
Desligado
Qual é a entrada da porta de acumulação conectada?
gui_accumula ACCUM_SLOAD, te_port_select SLOAD_ACCUM
Selecione o valor para pré-carregamento loadconst_val 0 – 64
constante
ue
Qual é a fonte da entrada do clock?
gui_accum_sl oad_register_ relógio
Relógio0 Relógio1 Relógio2
Qual é a origem da entrada clara assíncrona?
gui_accum_sl oad_register_ aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_accum_sl oad_register_sclr
NENHUM SCLR0 SCLR1
Ativar acumulador duplo
gui_double_a ativado
cum
Desligado
Valor Padrão
Descrição
Desligado
Habilite o accum_sload ou
sinais sload_accum e entrada de registro
para selecionar dinamicamente a entrada para o
acumulador.
Quando accum_sload é baixo ou sload_accum, a saída do multiplicador é alimentada no acumulador.
Quando accum_sload é alto ou sload_accum, uma constante de pré-carga especificada pelo usuário é alimentada no acumulador.
Você deve selecionar SIM para Ativar acumulador? parâmetro para ativar esta opção.
ACCUM_SL OAD
Especifica o comportamento do sinal accum_sload/sload_accum.
ACCUM_SLOAD: Direcione accum_sload para baixo para carregar a saída do multiplicador para o acumulador.
SLOAD_ACCUM: Direcione sload_accum para alto para carregar a saída do multiplicador para o acumulador.
Você deve selecionar a opção Ativar constante de pré-carga para ativar este parâmetro.
64
Especifique o valor constante predefinido.
Este valor pode ser 2N onde N é o valor constante predefinido.
Quando N=64, representa um zero constante.
Você deve selecionar a opção Ativar constante de pré-carga para ativar este parâmetro.
Relógio0
Selecione Clock0 , Clock1 ou Clock2 para especificar o sinal de clock de entrada para o registro accum_sload/sload_accum.
Você deve selecionar a opção Ativar constante de pré-carga para ativar este parâmetro.
NENHUM
Especifica a fonte de limpeza assíncrona para o registro accum_sload/sload_accum.
Você deve selecionar a opção Ativar constante de pré-carga para ativar este parâmetro.
NENHUM
Especifica a fonte de limpeza síncrona para o registro accum_sload/sload_accum.
Você deve selecionar a opção Ativar constante de pré-carga para ativar este parâmetro.
Desligado
Habilita o registrador de acumulador duplo.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 54
Enviar feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.6.6. Aba Sistólica/Chainout
Tabela 35. Aba Somador Sistólico/Chainout
Parâmetro Ativar o adicionador de encadeamento
Parâmetro gerado por IP
Valor
chainout_add SIM,
er
NÃO
Qual é o tipo de operação do adicionador de cadeia?
chainout_add ADICIONAR,
direção_er
SUB
Ativar a entrada 'negar' para o adicionador de cadeia?
Porta_negate
PORT_USED, PORT_UNUSED
Registrar entrada 'negar'? negate_regist er
NÃO REGISTADO, CLOCK0, CLOCK1, CLOCK2, CLOCK3
Qual é a origem da entrada clara assíncrona?
negate_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
negar_sclr
NENHUM SCLR0 SCLR1
Atraso Sistólico
Ativar registros de atraso sistólico
gui_systolic_d Ligado
esperar
Desligado
Qual é a fonte da entrada do clock?
gui_sistólico_d RELÓGIO0,
atraso_relógio
RELÓGIO1,
Valor Padrão
NÃO
Descrição
Selecione SIM para habilitar o módulo adicionador de encadeamento.
ADICIONAR
Especifica a operação do adicionador de cadeia.
Para operação de subtração, SIGNED deve ser selecionado para Qual é o formato de representação para as entradas dos Multiplicadores A? e Qual o formato de representação das entradas dos Multiplicadores B? na guia Multiplicadores.
PORTA_UN USADA
Selecione PORT_USED para ativar o sinal de entrada negativo.
Este parâmetro é inválido quando o adicionador de encadeamento está desabilitado.
NÃO REGISTADO
Habilita o registro de entrada para o sinal de entrada negativo e especifica o sinal de relógio de entrada para o registro negativo.
Selecione UNREGISTERED se o registro de entrada de negação não for necessário
Este parâmetro é inválido quando você seleciona:
· NÃO para Habilitar somador de cadeia ou
· PORT_UNUSED para ativar a entrada 'negar' para o adicionador de encadeamento? parâmetro ou
NENHUM
Especifica a fonte de limpeza assíncrona para o registro de negação.
Este parâmetro é inválido quando você seleciona:
· NÃO para Habilitar somador de cadeia ou
· PORT_UNUSED para ativar a entrada 'negar' para o adicionador de encadeamento? parâmetro ou
NENHUM
Especifica a fonte de limpeza síncrona para o registro de negação.
Este parâmetro é inválido quando você seleciona:
· NÃO para Habilitar somador de cadeia ou
· PORT_UNUSED para ativar a entrada 'negar' para o adicionador de encadeamento? parâmetro ou
Desligado CLOCK0
Selecione esta opção para habilitar o modo sistólico. Este parâmetro está disponível quando você seleciona 2 ou 4 para Qual é o número de multiplicadores? parâmetro. Você deve habilitar a saída de registrador da unidade somadora para usar os registradores de atraso sistólico.
Especifica o sinal de relógio de entrada para o registro de atraso sistólico.
continuou…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 55
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parâmetro
Parâmetro gerado por IP
Valor
RELÓGIO2,
Qual é a origem da entrada clara assíncrona?
gui_systolic_d elay_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_systolic_d elay_sclr
NENHUM SCLR0 SCLR1
Valor Padrão
NENHUM
NENHUM
Descrição
Você deve selecionar habilitar registros de atraso sistólico para habilitar esta opção.
Especifica a fonte de limpeza assíncrona para o registro de atraso sistólico. Você deve selecionar habilitar registros de atraso sistólico para habilitar esta opção.
Especifica a fonte de limpeza síncrona para o registro de atraso sistólico. Você deve selecionar habilitar registros de atraso sistólico para habilitar esta opção.
8.6.7. Aba Pipelining
Tabela 36. Guia Pipelining
Configuração de Pipelining de Parâmetros
Parâmetro gerado por IP
Valor
Deseja adicionar o registro de pipeline à entrada?
gui_pipelining Não, Sim
Valor Padrão
Não
Por favor especifique o
latência
número de relógio de latência
ciclos
Qualquer valor maior que 0 que 0
Qual é a fonte da entrada do clock?
gui_input_late ncy_clock
RELÓGIO0, RELÓGIO1, RELÓGIO2
Qual é a origem da entrada clara assíncrona?
gui_input_late ncy_aclr
NENHUM ACLR0 ACLR1
Qual é a fonte para entrada clara síncrona?
gui_input_late ncy_sclr
NENHUM SCLR0 SCLR1
CLOCK0 NENHUM NENHUM
Descrição
Selecione Sim para habilitar um nível adicional de registro de pipeline para os sinais de entrada. Você deve especificar um valor maior que 0 para o parâmetro Por favor, especifique o número de ciclos de relógio de latência.
Especifica a latência desejada em ciclos de clock. Um nível de registro de pipeline = 1 latência no ciclo de clock. Você deve selecionar SIM para Deseja adicionar registro de pipeline à entrada? para ativar esta opção.
Selecione Clock0 , Clock1 ou Clock2 para habilitar e especificar o sinal de clock de entrada do registro de pipeline. Você deve selecionar SIM para Deseja adicionar registro de pipeline à entrada? para ativar esta opção.
Especifica a fonte de limpeza assíncrona do registro para o registro de pipeline adicional. Você deve selecionar SIM para Deseja adicionar registro de pipeline à entrada? para ativar esta opção.
Especifica a fonte de limpeza síncrona do registro para o registro de pipeline adicional. Você deve selecionar SIM para Deseja adicionar registro de pipeline à entrada? para ativar esta opção.
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 56
Enviar feedback
683490 | 2020.10.05 Enviar comentários
9. Núcleo IP ALTMEMMULT (Multiplicador de coeficiente constante baseado em memória)
Atenção:
A Intel removeu o suporte deste IP no Intel Quartus Prime Pro Edition versão 20.3. Se o núcleo de IP em seu design tiver como destino dispositivos no Intel Quartus Prime Pro Edition, você poderá substituir o IP por LPM_MULT Intel FPGA IP ou gerar novamente o IP e compilar seu design usando o software Intel Quartus Prime Standard Edition.
O núcleo ALTMEMMULT IP é usado para criar multiplicadores baseados em memória usando os blocos de memória onchip encontrados em Intel FPGAs (com blocos de memória M512, M4K, M9K e MLAB). Este núcleo IP é útil se você não tiver recursos suficientes para implementar os multiplicadores em elementos lógicos (LEs) ou recursos multiplicadores dedicados.
O núcleo IP ALTMEMMULT é uma função síncrona que requer um relógio. O núcleo ALTMEMMULT IP implementa um multiplicador com a menor taxa de transferência e latência possível para um determinado conjunto de parâmetros e especificações.
A figura a seguir mostra as portas para o núcleo ALTMEMMULT IP.
Figura 21. Portas ALTMEMMULT
ALTMEMMULT
dados_in[] sload_data coeff_in[]
resultado[] resultado_válido load_done
sload_coeff
relógio sclr
inst
Recursos de informações relacionadas na página 71
9.1. Características
O núcleo ALTMEMMULT IP oferece os seguintes recursos: · Cria apenas multiplicadores baseados em memória usando blocos de memória on-chip encontrados em
Intel FPGAs · Suporta largura de dados de 1 bits · Suporta formato de representação de dados assinados e não assinados · Suporta pipelining com latência de saída fixa
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
ISO 9001: 2015 registrado
9. ALTMEMMULT (Multiplicador de coeficiente constante baseado em memória) IP Core 683490 | 2020.10.05
· Armazena múltiplas constantes na memória de acesso aleatório (RAM)
· Fornece uma opção para selecionar o tipo de bloco de RAM
· Suporta portas de entrada de controle de carga e limpeza síncrona opcionais
9.2. Protótipo Verilog HDL
O seguinte protótipo Verilog HDL está localizado no Verilog Design File (.v) altera_mf.v no diretório de síntese eda.
módulo altmemmult #(parâmetro coeff_representation = “ASSINADO”, parâmetro coeficiente0 = “UNUSED”, parâmetro data_representation = “ASSINADO”, parâmetro pretendido_device_family = “não utilizado”, parâmetro max_clock_cycles_per_result = 1, parâmetro number_of_coeficientes = 1, parâmetro ram_block_type = “AUTO”, parâmetro total_latency = 1, parâmetro width_c = 1, parâmetro width_d = 1, parâmetro width_r = 1, parâmetro width_s = 1, parâmetro lpm_type = “altmemmult”, parâmetro lpm_hint = “não utilizado”) ( relógio do fio de entrada, fio de entrada [width_c-1: 0]coeff_in, fio de entrada [width_d-1:0] data_in, fio de saída load_done, fio de saída [width_r-1:0] resultado, fio de saída result_valid, fio de entrada sclr, fio de entrada [width_s-1:0] sel, entrada wire sload_coeff, input wire sload_data)/* síntese syn_black_box=1 */; módulo final
9.3. Declaração de componente VHDL
A declaração do componente VHDL está localizada no VHDL Design File (.vhd) altera_mf_components.vhd no libraryvhdlaltera_mf diretório.
componente altmemmult genérico ( coeff_representation:string := “ASSINADO”; coeficiente0:string := “UNUSED”; data_representation:string := “SIGNED”; := 1; ram_block_type:string := “AUTO”; total_latency:natural; width_c:natural; width_d:natural; width_r:natural; width_s:natural := 1; lpm_hint:string := “UNUSED”; lpm_type:string := “altmemmult”); port( clock:in std_logic; coeff_in:in std_logic_vector(width_c-1 downto 1) := (others => '0'); data_in:in std_logic_vector(width_d-0 downto 1);
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 58
Enviar feedback
9. ALTMEMMULT (Multiplicador de coeficiente constante baseado em memória) IP Core 683490 | 2020.10.05
load_done:out std_logic; resultado:out std_logic_vector(width_r-1 até 0); result_valid:out std_logic; sclr:in std_logic := '0'; sel:in std_logic_vector(width_s-1 até 0) := (outros => '0'); sload_coeff:in std_logic := '0'; sload_data:in std_logic := '0'); componente final;
9.4. Portos
As tabelas a seguir listam as portas de entrada e saída para o núcleo ALTMEMMULT IP.
Tabela 37. Portas de entrada ALTMEMMULT
Nome da porta
Obrigatório
Descrição
relógio
Sim
Entrada de clock para o multiplicador.
coef_in[]
Não
Porta de entrada de coeficiente para o multiplicador. O tamanho da porta de entrada depende do valor do parâmetro WIDTH_C.
data_in[]
Sim
Porta de entrada de dados para o multiplicador. O tamanho da porta de entrada depende do valor do parâmetro WIDTH_D.
sclr
Não
Entrada limpa síncrona. Se não for utilizado, o valor padrão é ativo alto.
sel[]
Não
Seleção de coeficiente fixo. O tamanho da porta de entrada depende do WIDTH_S
valor do parâmetro.
sload_coeff
Não
Porta de entrada do coeficiente de carga síncrona. Substitui o valor do coeficiente selecionado atual pelo valor especificado na entrada coeff_in.
sload_data
Não
Porta de entrada de dados de carga síncrona. Sinal que especifica uma nova operação de multiplicação e cancela qualquer operação de multiplicação existente. Se o parâmetro MAX_CLOCK_CYCLES_PER_RESULT tiver o valor 1, a porta de entrada sload_data será ignorada.
Tabela 38. Portas de Saída ALTMEMMULT
Nome da porta
Obrigatório
Descrição
resultado[]
Sim
Porta de saída do multiplicador. O tamanho da porta de entrada depende do valor do parâmetro WIDTH_R.
resultado_válido
Sim
Indica quando a saída é o resultado válido de uma multiplicação completa. Se o parâmetro MAX_CLOCK_CYCLES_PER_RESULT tiver o valor 1, a porta de saída result_valid não será usada.
carregar_concluído
Não
Indica quando o novo coeficiente terminou de carregar. O sinal load_done é ativado quando um novo coeficiente termina de carregar. A menos que o sinal load_done seja alto, nenhum outro valor de coeficiente pode ser carregado na memória.
9.5. Parâmetros
A tabela a seguir lista os parâmetros para o núcleo IP ALTMEMMULT.
Tabela 39.
LARGURA_D LARGURA_C
Parâmetros ALTMEMMULT
Nome do parâmetro
Tipo Requerido
Descrição
inteiro sim
Especifica a largura da porta data_in[].
inteiro sim
Especifica a largura da porta coeff_in[]. contínuo…
Enviar feedback
Intel FPGA Integer Arithmetic IP Cores Guia do usuário 59
9. ALTMEMMULT (Multiplicador de coeficiente constante baseado em memória) IP Core 683490 | 2020.10.05
Nome do parâmetro WIDTH_R WIDTH
Documentos / Recursos
![]() |
Núcleos de IP de aritmética de inteiro FPGA intel [pdf] Guia do Usuário FPGA Núcleos IP aritméticos inteiros, Núcleos IP aritméticos inteiros, Núcleos IP aritméticos, Núcleos IP |