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

Referências

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *