Nuclee IP aritmetice FPGA întregi
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic
Actualizat pentru Intel® Quartus® Prime Design Suite: 20.3
Versiunea online Trimite feedback
UG-01063
ID: 683490 Versiune: 2020.10.05
Cuprins
Cuprins
1. Intel FPGA Integer Arithmetic IP Cores…………………………………………………………………………….. 5
2. LPM_COUNTER (Contor) IP Core……………………………………………………………………………….. 7 2.1. Caracteristici…………………………………………………………………………………………………………7 2.2. Prototipul Verilog HDL……………………………………………………………………………….. 8 2.3. Declarația componentelor VHDL……………………………………………………………………………….8 2.4. Declarația VHDL LIBRARY_USE………………………………………………………………… 9 2.5. Porturi………………………………………………………………………………………………………………..9 2.6. Parametri…………………………………………………………………………………………… 10
3. LPM_DIVIDE (Divizor) Intel FPGA IP Core………………………………………………………….. 12 3.1. Caracteristici………………………………………………………………………………………………. 12 3.2. Prototipul Verilog HDL……………………………………………………………………………… 12 3.3. Declarația componentelor VHDL…………………………………………………………………….. 13 3.4. Declarație VHDL LIBRARY_USE…………………………………………………………………. 13 3.5. Porturi………………………………………………………………………………………………………… 13 3.6. Parametri…………………………………………………………………………………………… 14
4. LPM_MULT (multiplicator) IP Core…………………………………………………………………………. 16 4.1. Caracteristici………………………………………………………………………………………………. 16 4.2. Prototipul Verilog HDL……………………………………………………………………………… 17 4.3. Declarația componentelor VHDL………………………………………………………………….. 17 4.4. Declarația VHDL LIBRARY_USE…………………………………………………………………. 17 4.5. Semnale………………………………………………………………………………………………………… 18 4.6. Parametri pentru dispozitivele Stratix V, Arria V, Cyclone V și Intel Cyclone 10 LP…………… 18 4.6.1. Fila Generale………………………………………………………………………………18 4.6.2. General 2 Fila……………………………………………………………………………… 19 4.6.3. Fila Conducte……………………………………………………………………………… 19 4.7. Parametri pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX……….. 20 4.7.1. Fila General………………………………………………………………………………20 4.7.2. General 2 Fila……………………………………………………………………………… 20 4.7.3. Conducte……………………………………………………………………………………………21
5. LPM_ADD_SUB (Adunator/Scăzător)……………………………………………………………………………… 22 5.1. Caracteristici………………………………………………………………………………………………. 22 5.2. Prototipul Verilog HDL……………………………………………………………………………… 23 5.3. Declarația componentelor VHDL…………………………………………………………………….. 23 5.4. Declarație VHDL LIBRARY_USE…………………………………………………………………. 23 5.5. Porturi………………………………………………………………………………………………………… 23 5.6. Parametri…………………………………………………………………………………………… 24
6. LPM_COMPARE (Comparator)…………………………………………………………………………… 26 6.1. Caracteristici………………………………………………………………………………………………. 26 6.2. Prototipul Verilog HDL……………………………………………………………………………… 27 6.3. Declarația componentelor VHDL…………………………………………………………………….. 27 6.4. Declarația VHDL LIBRARY_USE…………………………………………………………………. 27 6.5. Porturi………………………………………………………………………………………………………… 27 6.6. Parametri…………………………………………………………………………………………… 28
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 2
Trimiteți feedback
Cuprins
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core……………………………………………… 30
7.1. Caracteristicile codificatorului ALTEC……………………………………………………………………………………..31 7.2. Prototip Verilog HDL (ALTECC_ENCODER)……………………………………………………. 32 7.3. Prototip Verilog HDL (ALTECC_DECODER)……………………………………………………. 32 7.4. Declarația componentei VHDL (ALTECC_ENCODER)…………………………………………………33 7.5. Declarația componentei VHDL (ALTECC_DECODER)………………………………………………33 7.6. Declarația VHDL LIBRARY_USE…………………………………………………………………. 33 7.7. Porturi pentru codificator……………………………………………………………………………………………… 33 7.8. Porturi decodor……………………………………………………………………………………………………34 7.9. Parametrii codificatorului……………………………………………………………………………… 34 7.10. Parametrii decodorului ……………………………………………………………………………… 35
8. Intel FPGA Multiply Adder IP Core…………………………………………………………………. 36
8.1. Caracteristici………………………………………………………………………………………………. 37 8.1.1. Preasumator………………………………………………………………………………….. 38 8.1.2. Registrul de întârziere sistolică………………………………………………………………….. 40 8.1.3. Constanta de preîncărcare……………………………………………………………………………… 43 8.1.4. Acumulator dublu……………………………………………………………………………… 43
8.2. Prototipul Verilog HDL……………………………………………………………………………… 44 8.3. Declarația componentelor VHDL………………………………………………………………….. 44 8.4. Declarația VHDL LIBRARY_USE…………………………………………………………………. 44 8.5. Semnale………………………………………………………………………………………………………… 44 8.6. Parametri…………………………………………………………………………………………… 47
8.6.1. Fila General……………………………………………………………………………………47 8.6.2. Fila Moduri suplimentare………………………………………………………………………………….. 47 8.6.3. Fila Multiplicatori…………………………………………………………………………………….. 49 8.6.4. Fila Preadder………………………………………………………………………………. 51 8.6.5. Fila Acumulator……………………………………………………………………………….. 53 8.6.6. Fila Sistolic/Chainout…………………………………………………………………. 55 8.6.7. Fila Conducte……………………………………………………………………………… 56
9. ALTMEMMULT (Multiplicator de coeficient constant bazat pe memorie) IP Core………… 57
9.1. Caracteristici………………………………………………………………………………………………. 57 9.2. Prototipul Verilog HDL……………………………………………………………………………… 58 9.3. Declarația componentelor VHDL…………………………………………………………………….. 58 9.4. Porturi………………………………………………………………………………………………………… 59 9.5. Parametri…………………………………………………………………………………………… 59
10. ALTMULT_ACCUM (acumulare multiplă) IP Core………………………………………………… 61
10.1. Caracteristici…………………………………………………………………………………………….. 62 10.2. Prototipul Verilog HDL……………………………………………………………………………………..62 10.3. Declarația componentelor VHDL………………………………………………………………… 63 10.4. Declarația VHDL LIBRARY_USE…………………………………………………………………63 10.5. Porturile…………………………………………………………………………………………………. 63 10.6. Parametri…………………………………………………………………………………………………. 64
11. ALTMULT_ADD (Multiplicare-adăugător) IP Core……………………………………………………………………..69
11.1. Caracteristici…………………………………………………………………………………………….. 71 11.2. Prototipul Verilog HDL……………………………………………………………………………………..72 11.3. Declarația componentelor VHDL………………………………………………………………… 72 11.4. Declarația VHDL LIBRARY_USE…………………………………………………………………72
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 3
Cuprins
11.5. Porturile…………………………………………………………………………………………………. 72 11.6. Parametri…………………………………………………………………………………………………. 73
12. ALTMULT_COMPLEX (Multiplicator complex) IP Core……………………………………………… 86 12.1. Înmulțirea complexă……………………………………………………………………………………. 86 12.2. Reprezentarea canonică……………………………………………………………………………… 87 12.3. Reprezentarea convențională……………………………………………………………………. 87 12.4. Caracteristici…………………………………………………………………………………………….. 88 12.5. Prototipul Verilog HDL……………………………………………………………………………………………..88 12.6. Declarația componentelor VHDL………………………………………………………………… 89 12.7. Declarația VHDL LIBRARY_USE…………………………………………………………………89 12.8. Semnale…………………………………………………………………………………………………………. 89 12.9. Parametri…………………………………………………………………………………………………. 90
13. ALTSQRT (rădăcină pătrată întreagă) IP Core……………………………………………………………92 13.1. Caracteristici…………………………………………………………………………………………….. 92 13.2. Prototipul Verilog HDL……………………………………………………………………………………………..92 13.3. Declarația componentelor VHDL………………………………………………………………… 93 13.4. Declarația VHDL LIBRARY_USE…………………………………………………………………93 13.5. Porturile…………………………………………………………………………………………………. 93 13.6. Parametri…………………………………………………………………………………………………. 94
14. PARALLEL_ADD (Adăugător paralel) IP Core………………………………………………………….. 95 14.1. Caracteristica………………………………………………………………………………………………………….95 14.2. Prototipul Verilog HDL……………………………………………………………………………………………..95 14.3. Declarația componentelor VHDL………………………………………………………………… 96 14.4. Declarația VHDL LIBRARY_USE…………………………………………………………………96 14.5. Porturile…………………………………………………………………………………………………. 96 14.6. Parametri…………………………………………………………………………………………………. 97
15. Ghidul utilizatorului nuclee IP aritmetice întregi Arhive de documente………………………………… 98
16. Istoricul revizuirilor documentului pentru Ghidul utilizatorului de nuclee IP aritmetice Intel FPGA…. 99
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 4
Trimiteți feedback
683490 | 2020.10.05 Trimiteți feedback
1. Core Intel FPGA Integer Arithmetic IP
Puteți utiliza nucleele IP întregi Intel® FPGA pentru a efectua operații matematice în proiectarea dvs.
Aceste funcții oferă o sinteză logică și o implementare a dispozitivului mai eficiente decât codificarea propriilor funcții. Puteți personaliza nucleele IP pentru a se potrivi cerințelor dvs. de proiectare.
Miezurile IP aritmetice cu numere întregi Intel sunt împărțite în următoarele două categorii: · Bibliotecă de module parametrizate (LPM) Miezuri IP · Miezuri IP specifice Intel (ALT)
Următorul tabel listează nucleele IP aritmetice întregi.
Tabelul 1.
Lista de nuclee IP
Core IP
Miezuri IP LPM
LPM_COUNTER
LPM_DIVIDE
LPM_MULT
LPM_ADD_SUB
LPM_COMPARE
Miezuri IP specifice Intel (ALT) ALTEC
Funcție terminatăview Multiplicator Counter Divider
Comparator sumator sau scător
Codificator/Decodor ECC
Dispozitiv acceptat
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, 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, Intel Stratix 10
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, Intel Stratix 10
Arria II GX, Arria II GZ, Arria V, Cyclone IV E, Cyclone IV GX, Cyclone V, Intel Cyclone 10 LP, MAX 10, MAX
II, MAX V, Stratix IV, Stratix V
Arria II GX, Arria II GZ, Arria V, Cyclone IV E, Cyclone IV GX, Cyclone 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, 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 a continuat...
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
1. Intel FPGA Integer Arithmetic IP Cores 683490 | 2020.10.05
Nuclee IP Intel FPGA Multiply Adder sau ALTERA_MULT_ADD ALTMEMMULT
ALTMULT_ACCUM ALTMULT_ADD ALTMULT_COMPLEX
ALTSQRT
PARALLEL_ADD
Funcție terminatăview Multiplicator-Adunator
Multiplicator de coeficient constant bazat pe memorie
Multiplicator-Acumulator Multiplicator-Adder
Multiplicator complex
Întregul pătrat-rădăcină
Adder paralel
Dispozitiv acceptat
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
Cyclone 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, Cyclone IV E, Cyclone IV GX, Cyclone V, Intel
Cyclone 10 GX, Intel Cyclone 10 LP, MAX 10, Stratix V, Intel Stratix 10
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, 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
Informații conexe
· Note de lansare pentru FPGA Intel și dispozitive programabile
· Introducere în Intel FPGA IP Cores Oferă mai multe informații despre Intel FPGA IP Cores.
· Ghidul utilizatorului de nuclee IP în virgulă mobilă Oferă mai multe informații despre nucleele IP în virgulă mobilă Intel FPGA.
· Introducere în nucleele Intel FPGA IP Oferă informații generale despre toate nucleele Intel FPGA IP, inclusiv parametrizarea, generarea, modernizarea și simularea nucleelor IP.
· Crearea de scripturi de simulare IP și Qsys independente de versiune Creați scripturi de simulare care nu necesită actualizări manuale pentru actualizări de software sau IP.
· Orientări privind cele mai bune practici în managementul proiectelor pentru gestionarea eficientă și portabilitatea proiectului dumneavoastră și a IP files.
· Ghidul utilizatorului Integer Arithmetic IP Cores Arhive de documente la pagina 98 Oferă o listă de ghiduri ale utilizatorului pentru versiunile anterioare ale Integer Arithmetic IP Cores.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 6
Trimiteți feedback
683490 | 2020.10.05 Trimiteți feedback
2. LPM_COUNTER (Contor) IP Core
Figura 1.
Nucleul IP LPM_COUNTER este un contor binar care creează contoare ascendente, contoare negative și contoare ascendenți sau descendenți cu ieșiri de până la 256 de biți lățime.
Următoarea figură arată porturile pentru nucleul IP LPM_COUNTER.
LPM_COUNTER porturi
LPM_COUNTER
ssclr sload date sset[]
q[]
sus jos
cout
aclr încărcare aset
clk_en cnt_en cin
inst
2.1. Caracteristici
Nucleul IP LPM_COUNTER oferă următoarele caracteristici: · generează contoare sus, jos și sus/jos · generează următoarele tipuri de contoare:
— Binar simplu – contorul crește începând de la zero sau descrește începând de la 255
— Modul – contorul crește sau scade de la valoarea modulului specificată de utilizator și se repetă
· Suportă porturi de intrare opționale de ștergere, încărcare și setare sincrone. · Acceptă porturi de intrare opționale de ștergere, încărcare și setare asincrone.
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
2. LPM_COUNTER (Contor) IP Core
683490 | 2020.10.05
2.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
modul lpm_counter ( q, date, clock, cin, cout, clk_en, cnt_en, updown, aset, aclr, aload, sset, sclr, sload, eq ); parametrul lpm_type = „lpm_counter”; parametrul lpm_width = 1; parametrul lpm_modulus = 0; parametrul lpm_direction = „NEUTILIZAT”; parametrul lpm_avalue = „NEUTILIZAT”; parametrul lpm_svalue = „NEUTILIZAT”; parametrul lpm_pvalue = „NEUTILIZAT”; parametrul lpm_port_updown = „PORT_CONNECTIVITY”; parametrul lpm_hint = „NEUTILIZAT”; ieșire [lpm_width-1:0] q; debit de ieșire; ieșire [15:0] eq; intrare cin; date de intrare [lpm_width-1:0]; ceas de intrare, clk_en, cnt_en, updown; input aset, aclr, aload; intrare sset, sclr, sload; modul final
2.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) LPM_PACK.vhd în directorul librariesvhdllpm.
componenta LPM_COUNTER generic ( LPM_WIDTH : natural; LPM_MODULUS : natural := 0; LPM_DIRECTION : șir := „UNUSED”; LPM_AVALUE : șir := „UNUSED”; LPM_SVALUE : șir := „UNUSED”; LPM_PORT_UPDOWN : șir:_CONNECTIVITY: ; LPM_PVALUE : string := „UNUSED” ; port (DATE: în std_logic_vector(LPM_WIDTH-1 până la 0):= (ALTE =>
„0”); CLOCK : în std_logic ; CLK_EN : în std_logic := '1'; CNT_EN : în std_logic := '1'; UPDOWN : în std_logic := '1'; SLOAD : în std_logic := '0'; SSET : în std_logic := '0'; SCLR : în std_logic := '0'; ÎNCĂRCARE : în std_logic := '0'; ASET : în std_logic := '0'; ACLR : în std_logic := '0'; CIN : în std_logic := '1'; COUT: out std_logic := '0'; Q: out std_logic_vector(LPM_WIDTH-1 până la 0); EQ: out std_logic_vector(15 până la 0));
componentă de capăt;
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 8
Trimiteți feedback
2. LPM_COUNTER (Contor) IP Core 683490 | 2020.10.05
2.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ lpm; UTILIZAȚI lpm.lpm_components.all;
2.5. Porturi
Următoarele tabele listează porturile de intrare și de ieșire pentru nucleul IP LPM_COUNTER.
Tabelul 2.
LPM_COUNTER porturi de intrare
Numele portului
Necesar
Descriere
date[]
Nu
Introducerea de date în paralel la contor. Mărimea portului de intrare depinde de valoarea parametrului LPM_WIDTH.
ceas
Da
Intrare de ceas declanșată de margine pozitivă.
clk_en
Nu
Intrare activare ceas pentru a activa toate activitățile sincrone. Dacă este omisă, valoarea implicită este 1.
cnt_en
Nu
Intrarea de activare a numărului pentru a dezactiva contorizarea atunci când este afirmată scăzut fără a afecta sload, sset sau sclr. Dacă este omisă, valoarea implicită este 1.
sus jos
Nu
Controlează direcția numărării. Când este afirmat ridicat (1), direcția de numărare este în sus, iar când este afirmată scăzut (0), direcția de numărare este în jos. Dacă este utilizat parametrul LPM_DIRECTION, portul updown nu poate fi conectat. Dacă LPM_DIRECTION nu este utilizat, portul sus în jos este opțional. Dacă este omisă, valoarea implicită este mai mare (1).
cin
Nu
Purtare la bitul de comandă scăzută. Pentru contoarele crescătoare, comportamentul intrării cin este
identic cu comportamentul intrării cnt_en. Dacă este omisă, valoarea implicită este 1
(VCC).
aclr
Nu
Intrare clară asincronă. Dacă atât aset, cât și aclr sunt folosite și afirmate, aclr înlocuiește aset. Dacă este omisă, valoarea implicită este 0 (dezactivată).
aset
Nu
Intrare set asincron. Specifică ieșirile q[] ca toate 1 sau la valoarea specificată de parametrul LPM_AVALUE. Dacă atât porturile aset, cât și aclr sunt utilizate și afirmate, valoarea portului aclr prevalează pe valoarea portului aset. Dacă este omisă, valoarea implicită este 0, dezactivată.
încărcat
Nu
Intrare de încărcare asincronă care încarcă asincron contorul cu valoarea de pe intrarea de date. Când este utilizat portul de încărcare, portul de date[] trebuie conectat. Dacă este omisă, valoarea implicită este 0, dezactivată.
sclr
Nu
Intrare clară sincronă care șterge contorul de pe următorul margine activă a ceasului. Dacă ambele porturi sset și sclr sunt utilizate și afirmate, valoarea portului sclr suprascrie valoarea portului sset. Dacă este omisă, valoarea implicită este 0, dezactivată.
setat
Nu
Intrare de setare sincronă care setează contorul pe următorul front activ al ceasului. Specifică valoarea ieșirilor q ca toate 1 sau la valoarea specificată de parametrul LPM_SVALUE. Dacă ambele porturi sset și sclr sunt utilizate și afirmate,
valoarea portului sclr suprascrie valoarea portului sset. Dacă este omisă, valoarea implicită este 0 (dezactivată).
sload
Nu
Intrare de încărcare sincronă care încarcă contorul cu date[] pe următorul front activ al ceasului. Când este utilizat portul de încărcare, portul de date[] trebuie conectat. Dacă este omisă, valoarea implicită este 0 (dezactivată).
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 9
2. LPM_COUNTER (Contor) IP Core 683490 | 2020.10.05
Tabelul 3.
LPM_COUNTER porturi de ieșire
Numele portului
Necesar
Descriere
q[]
Nu
Ieșire de date de la contor. Dimensiunea portului de ieșire depinde de
Valoarea parametrului LPM_WIDTH. Fie q[], fie cel puțin unul dintre porturile eq[15..0].
trebuie să fie conectat.
eq[15..0]
Nu
Ieșire de decodare a contorului. Portul eq[15..0] nu este accesibil în editorul de parametri deoarece parametrul acceptă doar AHDL.
Trebuie conectat fie portul q[], fie portul eq[]. Pot fi utilizate până la c eq porturi (0 <= c <= 15). Sunt decodificate doar cele 16 cele mai mici valori de numărare. Când valoarea numărului este c, ieșirea eqc este declarată ridicată (1). De example, când numărul este 0, eq0 = 1, când numărul este 1, eq1 = 1, iar când numărul este 15, eq 15 = 1. Ieșirea decodificată pentru valori de numărare de 16 sau mai mari necesită decodare externă. Ieșirile eq[15..0] sunt asincrone cu ieșirea q[].
cout
Nu
Portul de realizare al bitului MSB al contorului. Poate fi folosit pentru a se conecta la un alt contor pentru a crea un contor mai mare.
2.6. Parametrii
Următorul tabel listează parametrii pentru nucleul IP LPM_COUNTER.
Tabelul 4.
LPM_COUNTER Parametri
Nume parametru
Tip
LPM_WIDTH
Întreg
LPM_DIRECTION
Şir
LPM_MODULUS LPM_AVALUE
Întreg
Număr întreg/ șir
LPM_SVALUE LPM_HINT
Număr întreg/ șir
Şir
LPM_TYPE
Şir
Obligatoriu Da Nu Nu Nu
Nu Nu
Nu
Descriere
Specifică lățimile porturilor de date[] și q[], dacă sunt utilizate.
Valorile sunt SUS, JOS și NEUTILIZATE. Dacă este utilizat parametrul LPM_DIRECTION, portul updown nu poate fi conectat. Când portul updown nu este conectat, valoarea implicită a parametrului LPM_DIRECTION este UP.
Numărul maxim, plus unu. Numărul de stări unice din ciclul contorului. Dacă valoarea de încărcare este mai mare decât parametrul LPM_MODULUS, comportamentul contorului nu este specificat.
Valoare constantă care este încărcată atunci când activul este declarat ridicat. Dacă valoarea specificată este mai mare sau egală cu , comportamentul contorului este un nivel logic nedefinit (X), unde este LPM_MODULUS, dacă este prezent, sau 2 ^ LPM_WIDTH. Intel vă recomandă să specificați această valoare ca număr zecimal pentru modelele AHDL.
Valoare constantă care este încărcată pe marginea ascendentă a portului de ceas atunci când portul sset este declarat ridicat. Intel vă recomandă să specificați această valoare ca număr zecimal pentru modelele AHDL.
Când instanțiați o funcție de bibliotecă de module parametrizate (LPM) într-un proiect VHDL File (.vhd), trebuie să utilizați parametrul LPM_HINT pentru a specifica un parametru specific Intel. De exampfișier: LPM_HINT = „CHAIN_SIZE = 8, ONE_INPUT_IS_CONSTANT = YES”
Valoarea implicită este UNUSED.
Identifică numele entității bibliotecii de module parametrizate (LPM) în proiectarea VHDL files.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 10
Trimiteți feedback
2. LPM_COUNTER (Contor) IP Core 683490 | 2020.10.05
Nume parametru INTENDED_DEVICE_FAMILY CARRY_CNT_EN
LABWIDE_SCLR
LPM_PORT_UPDOWN
Tastați String String
Şir
Şir
Necesar Nu Nu
Nu
Nu
Descriere
Acest parametru este utilizat în scopuri de modelare și simulare comportamentală. Acest parametru este utilizat în scopuri de modelare și simulare comportamentală. Editorul de parametri calculează valoarea acestui parametru.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul CARRY_CNT_EN în proiectarea VHDL files. Valorile sunt SMART, ON, OFF și UNUSED. Activează funcția LPM_COUNTER să propage semnalul cnt_en prin lanțul de transport. În unele cazuri, setarea parametrului CARRY_CNT_EN poate avea un impact ușor asupra vitezei, așa că este posibil să doriți să o dezactivați. Valoarea implicită este SMART, care oferă cel mai bun compromis între dimensiune și viteză.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul LABWIDE_SCLR în proiectarea VHDL files. Valorile sunt ON, OFF sau NEUTILIZATE. Valoarea implicită este ON. Vă permite să dezactivați utilizarea funcției LABwide sclr găsită în familiile de dispozitive învechite. Dezactivarea acestei opțiuni crește șansele de a utiliza complet LAB-urile parțial umplute și, astfel, poate permite o densitate logică mai mare atunci când SCLR nu se aplică unui LAB complet. Acest parametru este disponibil pentru compatibilitate inversă, iar Intel vă recomandă să nu utilizați acest parametru.
Specifică utilizarea portului de intrare sus în jos. Dacă este omisă, valoarea implicită este PORT_CONNECTIVITY. Când valoarea portului este setată la PORT_USED, portul este tratat ca fiind utilizat. Când valoarea portului este setată la PORT_UNUSED, portul este tratat ca neutilizat. Când valoarea portului este setată la PORT_CONNECTIVITY, utilizarea portului este determinată prin verificarea conectivității portului.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 11
683490 | 2020.10.05 Trimiteți feedback
3. LPM_DIVIDE (divizor) Intel FPGA IP Core
Figura 2.
Miezul IP LPM_DIVIDE Intel FPGA implementează un divizor pentru a împărți o valoare de intrare a numărătorului la o valoare a intrării numitorului pentru a produce un coeficient și un rest.
Următoarea figură arată porturile pentru nucleul IP LPM_DIVIDE.
LPM_DIVIDE Porturi
LPM_DIVIDE
număr[] denom[] ceas
coeficient[] rămâne[]
clken aclr
inst
3.1. Caracteristici
Nucleul IP LPM_DIVIDE oferă următoarele caracteristici: · generează un divizor care împarte o valoare de intrare a numărătorului la o intrare a numitorului
valoare pentru a produce un cot și un rest. · Acceptă lățimea datelor de 1 biți. · Acceptă formatul de reprezentare a datelor semnate și nesemnate atât pentru numărător
și valorile numitorului. · Sprijină optimizarea zonei sau a vitezei. · Oferă o opțiune pentru a specifica o ieșire pozitivă a restului. · Suportă pipelining configurabil latență de ieșire. · Acceptă porturi opționale asincrone clare și activare ceas.
3.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
modul lpm_divide ( quotient, remain, number, denom, clock, clken, aclr); parametrul lpm_type = „lpm_divide”; parametrul lpm_widthn = 1; parametrul lpm_widthd = 1; parametrul lpm_nrepresentation = „UNSIGNED”; parametrul lpm_drepresentation = „UNSIGNED”; parametrul lpm_remainderpositive = „TRUE”; parametrul lpm_pipeline = 0;
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
3. LPM_DIVIDE (Divizor) Intel FPGA IP Core 683490 | 2020.10.05
parametrul lpm_hint = „NEUTILIZAT”; ceas de intrare; clken de intrare; intrare aclr; intrare [lpm_widthn-1:0] număr; intrare [lpm_widthd-1:0] denom; ieșire [lpm_widthn-1:0] coeficient; ieșirea [lpm_widthd-1:0] rămâne; modul final
3.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) LPM_PACK.vhd în directorul librariesvhdllpm.
componenta LPM_DIVIDE generică (LPM_WIDTHN : natural; LPM_WIDTHD : natural;
LPM_NREPRESENTATION : șir := „UNSIGNED”; LPM_DREPRESENTATION : șir := „UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE : șir := L_DIVIDE; LPM_HINT : șir := „NEUTILIZAT”); port (NUMER: în std_logic_vector(LPM_WIDTHN-1 până la 0); DENOM: în std_logic_vector(LPM_WIDTHD-1 până la 0); ACLR: în std_logic:= '0'; CLOCK: în std_logic:= '0'; CLKEN: în std_logic := '1'; QUOTIENT: out std_logic_vector(LPM_WIDTHN-1 downto 0 REMAIN: out std_logic_vector(LPM_WIDTHD-1 downto 0)); componentă de capăt;
3.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ lpm; UTILIZAȚI lpm.lpm_components.all;
3.5. Porturi
Următoarele tabele listează porturile de intrare și de ieșire pentru nucleul IP LPM_DIVIDE.
Tabelul 5.
LPM_DIVIDE Porturi de intrare
Numele portului
Necesar
număr[]
Da
denumire[]
Da
Descriere
Introducerea datelor de la numărător. Dimensiunea portului de intrare depinde de valoarea parametrului LPM_WIDTHN.
Introducerea datelor numitorului. Dimensiunea portului de intrare depinde de valoarea parametrului LPM_WIDTHD.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 13
3. LPM_DIVIDE (Divizor) Intel FPGA IP Core 683490 | 2020.10.05
Nume port ceas clken
aclr
Necesar Nu Nu
Nu
Descriere
Intrare ceas pentru utilizare pipeline. Pentru valorile LPM_PIPELINE altele decât 0 (implicit), portul de ceas trebuie să fie activat.
Ceasul permite utilizarea canalizată. Când portul clken este declarat ridicat, are loc operația de divizare. Când semnalul este scăzut, nu are loc nicio operațiune. Dacă este omisă, valoarea implicită este 1.
Port de golire asincron utilizat în orice moment pentru a reseta conducta la toate „0” asincron la intrarea ceasului.
Tabelul 6.
LPM_DIVIDE Porturi de ieșire
Numele portului
Necesar
Descriere
coeficient[]
Da
Ieșire de date. Mărimea portului de ieșire depinde de LPM_WIDTHN
valoarea parametrului.
rămâne[]
Da
Ieșire de date. Dimensiunea portului de ieșire depinde de LPM_WIDTHD
valoarea parametrului.
3.6. Parametrii
Următorul tabel listează parametrii pentru nucleul IP LPM_DIVIDE Intel FPGA.
Nume parametru
Tip
Necesar
Descriere
LPM_WIDTHN
Întreg
Da
Specifică lățimile numerelor[] și
coeficient[] porturi. Valorile sunt de la 1 la 64.
LPM_WIDTHD
Întreg
Da
Specifică lățimile denom[] și
rămân[] porturi. Valorile sunt de la 1 la 64.
LPM_NREPRESENTATION LPM_DREPRESENTATION
String String
Nu
Reprezentarea prin semn a introducerii numărătorului.
Valorile sunt SIGNED și UNSIGNED. Când aceasta
parametrul este setat la SIGNED, divizor
interpretează intrarea număr[] ca doi semnați
completa.
Nu
Reprezentarea prin semn a intrării numitorului.
Valorile sunt SIGNED și UNSIGNED. Când aceasta
parametrul este setat la SIGNED, divizor
interpretează intrarea denom[] ca doi semnați
completa.
LPM_TYPE
Şir
Nu
Identifică biblioteca parametrizată
nume de entitate module (LPM) în proiectarea VHDL
files (.vhd).
LPM_HINT
Şir
Nu
Când instanțiați o bibliotecă de
modulele parametrizate (LPM) funcţionează în a
Design VHDL File (.vhd), trebuie să utilizați
Parametrul LPM_HINT pentru a specifica un Intel-
parametru specific. De example: LPM_HINT
= „CHAIN_SIZE = 8,
ONE_INPUT_IS_CONSTANT = YES” The
valoarea implicită este NEUTILIZATĂ.
LPM_REMAINDERPOSITIVE
Şir
Nu
Parametru specific Intel. Trebuie să utilizați
Parametrul LPM_HINT pentru a specifica
Parametrul LPM_REMAINDERPOSITIVE în
Design VHDL files. Valorile sunt TRUE sau FALSE.
Dacă acest parametru este setat la TRUE, atunci
valoarea portului rămas[] trebuie să fie mai mare
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 14
Trimiteți feedback
3. LPM_DIVIDE (Divizor) Intel FPGA IP Core 683490 | 2020.10.05
Nume parametru
Tip
MAXIMIZE_SPEED
Întreg
LPM_PIPELINE
Întreg
INTENDED_DEVICE_FAMILY SKIP_BITS
Șir întreg
Nr. obligatoriu
Nu Nu Nu
Descriere
decât sau egal cu zero. Dacă acest parametru este setat la TRUE, atunci valoarea portului rest[] este fie zero, fie valoarea este același semn, pozitiv sau negativ, ca și valoarea portului numeric. Pentru a reduce suprafața și a îmbunătăți viteza, Intel recomandă setarea acestui parametru la TRUE în operațiunile în care restul trebuie să fie pozitiv sau în care restul nu este important.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul MAXIMIZE_SPEED în proiectarea VHDL files. Valorile sunt [0..9]. Dacă este utilizat, software-ul Intel Quartus Prime încearcă să optimizeze o anumită instanță a funcției LPM_DIVIDE pentru viteză și nu pentru rutabilitate și anulează setarea opțiunii logice Tehnica de optimizare. Dacă MAXIMIZE_SPEED nu este folosită, se folosește în schimb valoarea opțiunii Tehnica de optimizare. Dacă valoarea MAXIMIZE_SPEED este 6 sau mai mare, compilatorul optimizează nucleul IP LPM_DIVIDE pentru o viteză mai mare prin utilizarea lanțurilor de transport; dacă valoarea este 5 sau mai mică, compilatorul implementează designul fără lanțuri de transport.
Specifică numărul de cicluri de ceas de latență asociate cu ieșirile coeficient[] și rest[]. O valoare de zero (0) indică faptul că nu există latență și că este instanțiată o funcție pur combinațională. Dacă este omisă, valoarea implicită este 0 (fără conducte). Nu puteți specifica o valoare pentru parametrul LPM_PIPELINE mai mare decât LPM_WIDTHN.
Acest parametru este utilizat în scopuri de modelare și simulare comportamentală. Editorul de parametri calculează valoarea acestui parametru.
Permite o divizare fracțională mai eficientă a biților pentru a optimiza logica pe biții conducători prin furnizarea numărului de GND conducători nucleului IP LPM_DIVIDE. Specificați numărul de GND lider pe ieșirea coeficientului pentru acest parametru.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 15
683490 | 2020.10.05 Trimiteți feedback
4. LPM_MULT (multiplicator) IP Core
Figura 3.
Nucleul IP LPM_MULT implementează un multiplicator pentru a multiplica două valori de date de intrare pentru a produce un produs ca rezultat.
Următoarea figură arată porturile pentru nucleul IP LPM_MULT.
LPM_Mult Ports
LPM_MULT date de ceasa[] rezultat[] datab[] aclr/sclr clken
inst
Informații înrudite Caracteristici la pagina 71
4.1. Caracteristici
Nucleul LPM_MULT IP oferă următoarele caracteristici: · Generează un multiplicator care înmulțește două valori de date de intrare · Acceptă lățimea datelor de 1 de biți · Acceptă formatul de reprezentare a datelor semnate și nesemnate · Acceptă optimizarea zonei sau a vitezei · Suportă pipeline cu latență de ieșire configurabilă · Oferă un opțiune pentru implementare în procesarea digitală a semnalului dedicată (DSP)
bloc de circuite sau elemente logice (LE) Notă: Când construiți multiplicatori mai mari decât dimensiunea suportată nativ, poate/
va fi un impact asupra performanței rezultat din cascada blocurilor DSP. · Suportă opționale clearance-ul asincron și porturile de intrare pentru activarea ceasului · Suportă opțional clearance-ul sincron pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
4. LPM_MULT (Multiplicator) IP Core 683490 | 2020.10.05
4.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
modul lpm_mult ( rezultat, dataa, datab, sum, clock, clken, aclr ) parametrul lpm_type = “lpm_mult”; parametrul lpm_widtha = 1; parametrul lpm_widthb = 1; parametrul lpm_widths = 1; parametrul lpm_widthp = 1; parametrul lpm_representation = „UNSIGNED”; parametrul lpm_pipeline = 0; parametrul lpm_hint = „NEUTILIZAT”; ceas de intrare; clken de intrare; intrare aclr; intrare [lpm_widtha-1:0] datea; intrare [lpm_widthb-1:0] datab; intrare [lpm_widths-1:0] suma; rezultat [lpm_widthp-1:0] rezultat; modul final
4.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) LPM_PACK.vhd în directorul librariesvhdllpm.
componenta LPM_MULT generic ( LPM_WIDTHA : natural; LPM_WIDTHB : natural; LPM_WIDTHS : natural := 1; LPM_WIDTHP : natural;
LPM_REPRESENTATION : șir := „UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE: șir := L_MULT; LPM_HINT : șir := „NEUTILIZAT”); port ( DATAA: în std_logic_vector(LPM_WIDTHA-1 până la 0); DATAB: în std_logic_vector(LPM_WIDTHB-1 până la 0); ACLR: în std_logic:= '0'; CLOCK: în std_logic:= '0'; CLKEN: în std_logic := '1'; SUM : în std_logic_vector(LPM_WIDTHS-1 downto 0) := (OTHERS => '0': out std_logic_vector(LPM_WIDTHP-1 downto 0)); componentă de capăt;
4.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ lpm; UTILIZAȚI lpm.lpm_components.all;
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 17
4. LPM_MULT (Multiplicator) IP Core 683490 | 2020.10.05
4.5. Semnale
Tabelul 7.
Semnale de intrare LPM_MULT
Nume semnal
Necesar
Descriere
datea[]
Da
Intrarea datelor.
Pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX, dimensiunea semnalului de intrare depinde de valoarea parametrului Dataa width.
Pentru dispozitivele mai vechi și Intel Cyclone 10 LP, dimensiunea semnalului de intrare depinde de valoarea parametrului LPM_WIDTHA.
datab[]
Da
Intrarea datelor.
Pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX, dimensiunea semnalului de intrare depinde de valoarea parametrului Datab width.
Pentru dispozitivele mai vechi și Intel Cyclone 10 LP, dimensiunea semnalului de intrare depinde
pe valoarea parametrului LPM_WIDTHB.
ceas
Nu
Intrare ceas pentru utilizare pipeline.
Pentru dispozitivele mai vechi și Intel Cyclone 10 LP, semnalul de ceas trebuie să fie activat pentru alte valori LPM_PIPELINE decât 0 (implicit).
Pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX, semnalul de ceas trebuie să fie activat dacă valoarea Latenței este alta decât 1 (implicit).
clken
Nu
Activare ceas pentru utilizare pipeline. Când semnalul clken este afirmat ridicat,
are loc operația de adunare/scădere. Când semnalul este scăzut, nicio operațiune
apare. Dacă este omisă, valoarea implicită este 1.
aclr sclr
Nu
Semnal clar asincron utilizat în orice moment pentru a reseta conducta la toate 0,
asincron cu semnalul ceasului. Conducta se inițializează la un nedefinit (X)
nivel logic. Ieșirile sunt o valoare consistentă, dar diferită de zero.
Nu
Semnal clar sincron utilizat în orice moment pentru a reseta conducta la toate 0,
sincron cu semnalul ceasului. Conducta se inițializează la un nedefinit (X)
nivel logic. Ieșirile sunt o valoare consistentă, dar diferită de zero.
Tabelul 8.
LPM_MULT Semnale de ieșire
semnal Nume
Necesar
Descriere
rezultat[]
Da
Ieșire de date.
Pentru dispozitivele mai vechi și Intel Cyclone 10 LP, dimensiunea semnalului de ieșire depinde de valoarea parametrului LPM_WIDTHP. Dacă LPM_WIDTHP < max (LPM_WIDTHA + LPM_WIDTHB, LPM_WIDTHS) sau (LPM_WIDTHA + LPM_WIDTHS), sunt prezente numai MSB-urile LPM_WIDTHP.
Pentru Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX, dimensiunea semnalelor de ieșire depinde de parametrul Lățimea rezultatului.
4.6. Parametri pentru dispozitivele Stratix V, Arria V, Cyclone V și Intel Cyclone 10 LP
4.6.1. Tab. General
Tabelul 9.
General Tab
Parametru
Valoare
Configurația multiplicatorului
Înmulțiți intrarea „dataa” cu intrarea „datab”.
Valoare implicită
Descriere
Înmulțiți intrarea „dataa” cu intrarea „datab”.
Selectați configurația dorită pentru multiplicator.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 18
Trimiteți feedback
4. LPM_MULT (Multiplicator) IP Core 683490 | 2020.10.05
Parametru
Cât de largă ar trebui să fie intrarea „dataa”? Cât de largă ar trebui să fie intrarea „datab”? Cum ar trebui să fie determinată lățimea ieșirii „rezultatului”? Limitați lățimea
Valoare
Înmulțiți intrarea „dataa” de la sine (operație de pătrare)
1 – 256 de biți
Valoare implicită
Descriere
8 biți
Specificați lățimea portului de datea[].
1 – 256 de biți
8 biți
Specificați lățimea portului datab[].
Calculați automat lățimea Restricționați lățimea
1 – 512 de biți
Calculați automat lățimea
Selectați metoda dorită pentru a determina lățimea portului rezultat[].
16 biți
Specificați lățimea portului rezultat[].
Această valoare va fi eficientă numai dacă selectați Restricționați lățimea în parametrul Tip.
4.6.2. General 2 Tab
Tabelul 10. General 2 Tab
Parametru
Valoare
Intrare date
Are magistrala de intrare „datab” o valoare constantă?
Nu Da
Tip de multiplicare
Ce tip de
Nesemnat
inmultire vrei? Semnat
Implementarea
Ce implementare a multiplicatorului ar trebui utilizată?
Utilizați implementarea implicită
Utilizați circuitul multiplicator dedicat (nu este disponibil pentru toate familiile)
Folosiți elemente logice
Valoare implicită
Descriere
Nu
Selectați Da pentru a specifica valoarea constantă a
magistrală de intrare `datab', dacă există.
Nesemnat
Specificați formatul de reprezentare pentru ambele intrări dataa[] și datab[].
Utilizați implementarea implicită
Selectați metoda dorită pentru a determina lățimea portului rezultat[].
4.6.3. Fila Conducte
Tabelul 11. Tab. Conducte
Parametru
Doriți să conductați Nr
funcţie?
Da
Valoare
Creați un „aclr”
—
port clar asincron
Valoare implicită
Descriere
Nu
Selectați Da pentru a activa înregistrarea conductei la
ieșirea multiplicatorului și specificați valoarea dorită
latența de ieșire în ciclul de ceas. Activarea
Registrul pipeline adaugă o latență suplimentară la
ieșire.
Nebifat
Selectați această opțiune pentru a activa portul aclr să utilizeze ștergerea asincronă pentru registrul conductei.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 19
4. LPM_MULT (Multiplicator) IP Core 683490 | 2020.10.05
Parametru
Creați un ceas „clken” pentru activarea ceasului
Optimizare
Ce tip de optimizare vrei?
Valoare —
Zona de viteză implicită
Valoare implicită
Descriere
Nebifat
Specifică activarea activă a ceasului ridicat pentru portul de ceas al registrului conductei
Implicit
Specificați optimizarea dorită pentru miezul IP.
Selectați Implicit pentru a permite software-ului Intel Quartus Prime să determine cea mai bună optimizare pentru nucleul IP.
4.7. Parametri pentru dispozitivele Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX
4.7.1. Tab. General
Tabelul 12. General Tab
Parametru
Valoare
Valoare implicită
Descriere
Tip de configurare a multiplicatorului
Lățimi porturi de date
Înmulțiți intrarea „dataa” cu intrarea „datab”.
Înmulțiți intrarea „dataa” de la sine (operație de pătrare)
Înmulțiți intrarea „dataa” cu intrarea „datab”.
Selectați configurația dorită pentru multiplicator.
Lățimea datelor
1 – 256 de biți
8 biți
Specificați lățimea portului de datea[].
Lățimea bazei de date
1 – 256 de biți
8 biți
Specificați lățimea portului datab[].
Cum ar trebui să fie determinată lățimea ieșirii „rezultatului”?
Tip
Calculați automat lățimea
Limitați lățimea
Calculați automat lățimea
Selectați metoda dorită pentru a determina lățimea portului rezultat[].
Valoare
1 – 512 de biți
16 biți
Specificați lățimea portului rezultat[].
Această valoare va fi eficientă numai dacă selectați Restricționați lățimea în parametrul Tip.
Lățimea rezultatului
1 – 512 de biți
—
Afișează lățimea efectivă a portului rezultat[].
4.7.2. General 2 Tab
Tabelul 13. General 2 Tab
Parametru
Intrare date
Are magistrala de intrare „datab” o valoare constantă?
Nu Da
Valoare
Valoare implicită
Descriere
Nu
Selectați Da pentru a specifica valoarea constantă a
magistrală de intrare `datab', dacă există.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 20
Trimiteți feedback
4. LPM_MULT (Multiplicator) IP Core 683490 | 2020.10.05
Parametru
Valoare
Valoare
Orice valoare mai mare decat 0
Tip de multiplicare
Ce tip de
Nesemnat
inmultire vrei? Semnat
Stilul de implementare
Ce implementare a multiplicatorului ar trebui utilizată?
Utilizați implementarea implicită
Utilizați circuitul multiplicator dedicat
Folosiți elemente logice
Valoare implicită
Descriere
0
Specificați valoarea constantă a portului datab[].
Nesemnat
Specificați formatul de reprezentare pentru ambele intrări dataa[] și datab[].
Utilizați implementarea implicită
Selectați metoda dorită pentru a determina lățimea portului rezultat[].
4.7.3. Conducte
Tabelul 14. Tab. Conducte
Parametru
Valoare
Doriți să canalizați funcția?
Conductă
Nu Da
Tip de semnal de latență
Orice valoare mai mare decat 0.
NIMIC ACLR SCLR
Creați un ceas „clken”.
—
activați ceasul
Ce tip de optimizare vrei?
Tip
Zona de viteză implicită
Valoare implicită
Descriere
Nu 1 NIMIC
—
Selectați Da pentru a activa registrul conductei la ieșirea multiplicatorului. Activarea registrului conductei adaugă o latență suplimentară la ieșire.
Specificați latența de ieșire dorită în ciclul de ceas.
Specificați tipul de resetare pentru registrul conductei. Selectați NIMIC dacă nu utilizați niciun registru de conducte. Selectați ACLR pentru a utiliza ștergerea asincronă pentru registrul conductei. Aceasta va genera portul ACLR. Selectați SCLR pentru a utiliza ștergerea sincronă pentru registrul conductei. Aceasta va genera portul SCLR.
Specifică activarea activă a ceasului ridicat pentru portul de ceas al registrului conductei
Implicit
Specificați optimizarea dorită pentru miezul IP.
Selectați Implicit pentru a permite software-ului Intel Quartus Prime să determine cea mai bună optimizare pentru nucleul IP.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 21
683490 | 2020.10.05 Trimiteți feedback
5. LPM_ADD_SUB (adunator/scăzător)
Figura 4.
Nucleul IP LPM_ADD_SUB vă permite să implementați un adunător sau un scător pentru a adăuga sau scădea seturi de date pentru a produce o ieșire care conține suma sau diferența valorilor de intrare.
Următoarea figură arată porturile pentru nucleul IP LPM_ADD_SUB.
LPM_ADD_SUB Porturi
LPM_ADD_SUB add_sub cin
datea[]
ceas clken datab[] aclr
rezultat[] overflow cout
inst
5.1. Caracteristici
Nucleul IP LPM_ADD_SUB oferă următoarele caracteristici: · Generează adunator, scădere și adunator/scăzător configurabil dinamic
funcții. · Acceptă lățimea datelor de 1 biți. · Acceptă formatul de reprezentare a datelor, cum ar fi semnat și nesemnat. · Acceptă transportul opțional (împrumut), ștergerea asincronă și activarea ceasului
porturi de intrare. · Sprijină porturi opționale de ieșire (împrumut) și overflow. · Atribuie unei constante oricare dintre magistralele de date de intrare. · Acceptă pipelining cu latență de ieșire configurabilă.
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
5. LPM_ADD_SUB (Adunator/Scăzător) 683490 | 2020.10.05
5.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
modul lpm_add_sub (rezultat, cout, overflow,add_sub, cin, dataa, datab, clock, clken, aclr); parametrul lpm_type = „lpm_add_sub”; parametrul lpm_width = 1; parametrul lpm_direction = „NEUTILIZAT”; parametrul lpm_representation = „SIGNED”; parametrul lpm_pipeline = 0; parametrul lpm_hint = „NEUTILIZAT”; intrare [lpm_width-1:0] dataa, datab; intrare add_sub, cin; ceas de intrare; clken de intrare; intrare aclr; rezultat [lpm_width-1:0] rezultat; ieșire, preaplin; modul final
5.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) LPM_PACK.vhd în directorul librariesvhdllpm.
componenta LPM_ADD_SUB generic (LPM_WIDTH : natural;
LPM_DIRECTION : șir := „NEUTILIZAT”; LPM_REPRESENTATION: string := „SIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE : șir := L_ADD_SUB; LPM_HINT : șir := „NEUTILIZAT”); port (DATAA: în std_logic_vector(LPM_WIDTH-1 până la 0); DATAB: în std_logic_vector(LPM_WIDTH-1 până la 0); ACLR: în std_logic:= '0'; CLOCK: în std_logic:= '0'; CLKEN: în std_logic := '1'; CIN : in std_logic := 'Z' : in std_logic := '1' : out std_logic_vector(LPM_WIDTH-1: out std_logic); componentă de capăt;
5.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ lpm; UTILIZAȚI lpm.lpm_components.all;
5.5. Porturi
Următoarele tabele listează porturile de intrare și de ieșire pentru nucleul IP LPM_ADD_SUB.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 23
5. LPM_ADD_SUB (Adunator/Scăzător) 683490 | 2020.10.05
Tabelul 15. Porturi de intrare LPM_ADD_SUB IP Core
Numele portului
Necesar
Descriere
cin
Nu
Purtare la bitul de comandă scăzută. Pentru operațiunile de adăugare, valoarea implicită este 0. Pentru
operațiuni de scădere, valoarea implicită este 1.
datea[]
Da
Intrarea datelor. Mărimea portului de intrare depinde de valoarea parametrului LPM_WIDTH.
datab[]
Da
Intrarea datelor. Mărimea portului de intrare depinde de valoarea parametrului LPM_WIDTH.
add_sub
Nu
Port de intrare opțional pentru a permite comutarea dinamică între adunator și scăzător
funcții. Dacă este utilizat parametrul LPM_DIRECTION, add_sub nu poate fi utilizat. Dacă
omisă, valoarea implicită este ADD. Intel vă recomandă să utilizați
parametrul LPM_DIRECTION pentru a specifica funcționarea funcției LPM_ADD_SUB,
mai degrabă decât să atribuiți o constantă portului add_sub.
ceas
Nu
Intrare pentru utilizare prin pipeline. Portul de ceas oferă intrarea de ceas pentru o conductă
operare. Pentru valorile LPM_PIPELINE altele decât 0 (implicit), portul ceasului trebuie să fie
activat.
clken
Nu
Activare ceas pentru utilizare pipeline. Când portul clken este afirmat ridicat, sumatorul/
are loc operația cu scădere. Când semnalul este scăzut, nu are loc nicio operațiune. Dacă
omisă, valoarea implicită este 1.
aclr
Nu
Clear asincron pentru utilizare prin conducte. Conducta se inițializează la un (X) nedefinit
nivel logic. Portul aclr poate fi folosit în orice moment pentru a reseta conducta la toate 0-urile,
asincron cu semnalul ceasului.
Tabelul 16. LPM_ADD_SUB IP Core Porturi de ieșire
Numele portului
Necesar
Descriere
rezultat[]
Da
Ieșire de date. Mărimea portului de ieșire depinde de parametrul LPM_WIDTH
valoare.
cout
Nu
Efectuarea (împrumutarea) bitului cel mai semnificativ (MSB). Portul cout are un fizic
interpretare ca executare (împrumutare) a MSB. Portul cout detectează
depășire în operațiuni NESEMNATE. Portul cout functioneaza in acelasi mod pt
Operațiuni SEMNATE și NESEMNATE.
preaplin
Nu
Ieșire opțională de excepție de depășire. Portul de preaplin are o interpretare fizică ca
XOR-ul transferului către MSB cu transferul MSB. Portul de preaplin
afirmă atunci când rezultatele depășesc precizia disponibilă și este utilizat numai atunci când
Valoarea parametrului LPM_REPRESENTATION este SEMNATĂ.
5.6. Parametrii
Următorul tabel listează parametrii de bază IP LPM_ADD_SUB.
Tabelul 17. LPM_ADD_SUB IP Core Parametri
Nume parametru LPM_WIDTH
Tastați Integer
Obligatoriu Da
Descriere
Specifică lățimile porturilor dataa[], datab[] și result[].
LPM_DIRECTION
Şir
Nu
Valorile sunt ADD, SUB și UNUSED. Dacă este omisă, valoarea implicită este DEFAULT, care direcționează parametrul să-și ia valoarea de la portul add_sub. Portul add_sub nu poate fi utilizat dacă se utilizează LPM_DIRECTION. Intel vă recomandă să utilizați parametrul LPM_DIRECTION pentru a specifica funcționarea funcției LPM_ADD_SUB, în loc să atribuiți o constantă portului add_sub.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 24
Trimiteți feedback
5. LPM_ADD_SUB (Adunator/Scăzător) 683490 | 2020.10.05
Nume parametru LPM_REPRESENTATION LPM_PIPELINE LPM_HINT LPM_TYPE ONE_INPUT_IS_CONSTANT MAXIMIZE_SPEED
INTENDED_DEVICE_FAMILY
Tip String Integer String String String Integer
Şir
Obligatoriu Nu Nu Nu Nu Nu Nu
Nu
Descriere
Specifică tipul de adăugare efectuată. Valorile sunt SIGNED și UNSIGNED. Dacă este omisă, valoarea implicită este SIGNED. Când acest parametru este setat la SIGNED, sumatorul/scădetorul interpretează datele introduse ca complement a doi cu semn.
Specifică numărul de cicluri de ceas de latență asociate cu rezultatul [] . O valoare de zero (0) indică faptul că nu există latență și că va fi instanțiată o funcție pur combinațională. Dacă este omisă, valoarea implicită este 0 (fără conducte).
Vă permite să specificați parametri specifici Intel în designul VHDL files (.vhd). Valoarea implicită este UNUSED.
Identifică numele entității bibliotecii de module parametrizate (LPM) în proiectarea VHDL files.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul ONE_INPUT_IS_CONSTANT în proiectarea VHDL files. Valorile sunt DA, NU și NEUTILIZATE. Oferă o optimizare mai mare dacă o intrare este constantă. Dacă este omisă, valoarea implicită este NU.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul MAXIMIZE_SPEED în proiectarea VHDL files. Puteți specifica o valoare între 0 și 10. Dacă este utilizat, software-ul Intel Quartus Prime încearcă să optimizeze o anumită instanță a funcției LPM_ADD_SUB pentru viteză și nu pentru rutabilitate și înlocuiește setarea opțiunii logice Tehnica de optimizare. Dacă MAXIMIZE_SPEED nu este folosită, se folosește în schimb valoarea opțiunii Tehnica de optimizare. Dacă setarea pentru MAXIMIZE_SPEED este 6 sau mai mare, compilatorul optimizează nucleul IP LPM_ADD_SUB pentru viteză mai mare utilizând lanțuri de transport; dacă setarea este 5 sau mai mică, compilatorul implementează designul fără lanțuri de transport. Acest parametru trebuie specificat pentru dispozitivele Cyclone, Stratix și Stratix GX numai atunci când portul add_sub nu este utilizat.
Acest parametru este utilizat în scopuri de modelare și simulare comportamentală. Editorul de parametri calculează valoarea acestui parametru.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 25
683490 | 2020.10.05 Trimiteți feedback
6. LPM_COMPARE (Comparator)
Figura 5.
Nucleul IP LPM_COMPARE compară valoarea a două seturi de date pentru a determina relația dintre ele. În forma sa cea mai simplă, puteți utiliza o poartă SAU exclusivă pentru a determina dacă doi biți de date sunt egali.
Următoarea figură arată porturile pentru nucleul IP LPM_COMPARE.
LPM_COMPARE Porturi
LPM_COMPARE
clken
alb
aeb
datea[]
agb
datab[]
ageb
ceas
sau
aclr
aleb
inst
6.1. Caracteristici
Nucleul LPM_COMPARE IP oferă următoarele caracteristici: · Generează o funcție de comparare pentru a compara două seturi de date.
— alb (intrarea A este mai mică decât intrarea B) — aeb (intrarea A este egală cu intrarea B) — agb (intrarea A este mai mare decât intrarea B) — ageb (intrarea A este mai mare sau egală cu intrarea B) — aneb ( intrarea A nu este egală cu intrarea B) — aleb (intrarea A este mai mică sau egală cu intrarea B) · Acceptă porturi de intrare opționale asincrone și activare a ceasului · Atribuie intrarea datab[] la o constantă · Acceptă pipelining cu latență de ieșire configurabilă
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
6. LPM_COMPARE (Comparator) 683490 | 2020.10.05
6.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
modul lpm_compare ( alb, aeb, agb, aleb, aneb, ageb, dataa, datab, clock, clken, aclr ); parametrul lpm_type = „lpm_compare”; parametrul lpm_width = 1; parametrul lpm_representation = „UNSIGNED”; parametrul lpm_pipeline = 0; parametrul lpm_hint = „NEUTILIZAT”; intrare [lpm_width-1:0] dataa, datab; ceas de intrare; clken de intrare; intrare aclr; ieșire alb, aeb, agb, aleb, aneb, ageb; modul final
6.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) LPM_PACK.vhd în directorul librariesvhdllpm.
componenta LPM_COMPARE generic (LPM_WIDTH : natural;
LPM_REPRESENTATION : șir := „UNSIGNED”; LPM_PIPELINE : natural := 0; LPM_TYPE: șir := L_COMPARE; LPM_HINT : șir := „NEUTILIZAT”); port (DATAA: în std_logic_vector(LPM_WIDTH-1 până la 0); DATAB: în std_logic_vector(LPM_WIDTH-1 până la 0); ACLR: în std_logic:= '0'; CLOCK: în std_logic:= '0'; CLKEN: în std_logic := '1': out std_logic; out std_logic; componentă de capăt;
6.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ lpm; UTILIZAȚI lpm.lpm_components.all;
6.5. Porturi
Următoarele tabele listează porturile de intrare și de ieșire pentru nucleul IP LMP_COMPARE.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 27
6. LPM_COMPARE (Comparator) 683490 | 2020.10.05
Tabelul 18. Porturi de intrare LPM_COMPARE IP core
Numele portului
Necesar
Descriere
datea[]
Da
Intrarea datelor. Mărimea portului de intrare depinde de valoarea parametrului LPM_WIDTH.
datab[]
Da
Intrarea datelor. Mărimea portului de intrare depinde de valoarea parametrului LPM_WIDTH.
ceas
Nu
Intrare ceas pentru utilizare pipeline. Portul de ceas oferă intrarea de ceas pentru o conductă
operare. Pentru valorile LPM_PIPELINE altele decât 0 (implicit), portul ceasului trebuie să fie
activat.
clken
Nu
Activare ceas pentru utilizare pipeline. Când portul clken este afirmat ridicat,
are loc operația de comparație. Când semnalul este scăzut, nu are loc nicio operațiune. Dacă
omisă, valoarea implicită este 1.
aclr
Nu
Clear asincron pentru utilizare prin conducte. Conducta se inițializează la o logică nedefinită (X).
nivel. Portul aclr poate fi folosit în orice moment pentru a reseta conducta la toate 0-urile,
asincron cu semnalul ceasului.
Tabelul 19. LPM_COMPARE IP core Porturi de ieșire
Numele portului
Necesar
Descriere
alb
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A este mai mică decât intrarea B.
aeb
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A este egală cu intrarea B.
agb
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A este mai mare decât intrarea B.
ageb
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A este mai mare sau egală cu intrarea
B.
sau
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A nu este egală cu intrarea B.
aleb
Nu
Port de ieșire pentru comparator. Afirmat dacă intrarea A este mai mică sau egală cu intrarea B.
6.6. Parametrii
Următorul tabel listează parametrii pentru nucleul IP LPM_COMPARE.
Tabelul 20. LPM_COMPARE IP core Parametri
Nume parametru
Tip
Necesar
LPM_WIDTH
Număr întreg Da
LPM_REPRESENTATION
Şir
Nu
LPM_PIPELINE
Număr întreg
LPM_HINT
Şir
Nu
Descriere
Specifică lățimile porturilor dataa[] și datab[].
Specifică tipul de comparație efectuată. Valorile sunt SIGNED și UNSIGNED. Dacă este omisă, valoarea implicită este UNSIGNED. Când această valoare a parametrului este setată la SIGNED, comparatorul interpretează datele introduse ca complement a doi cu semn.
Specifică numărul de cicluri de ceas de latență asociate cu ieșirea alb, aeb, agb, ageb, aleb sau aneb. O valoare de zero (0) indică faptul că nu există latență și că va fi instanțiată o funcție pur combinațională. Dacă este omisă, valoarea implicită este 0 (fără conducte).
Vă permite să specificați parametri specifici Intel în designul VHDL files (.vhd). Valoarea implicită este UNUSED.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 28
Trimiteți feedback
6. LPM_COMPARE (Comparator) 683490 | 2020.10.05
Nume parametru LPM_TYPE INTENDED_DEVICE_FAMILY
ONE_INPUT_IS_CONSTANT
Tastați String String
Şir
Necesar Nu Nu
Nu
Descriere
Identifică numele entității bibliotecii de module parametrizate (LPM) în proiectarea VHDL files.
Acest parametru este utilizat în scopuri de modelare și simulare comportamentală. Editorul de parametri calculează valoarea acestui parametru.
Parametru specific Intel. Trebuie să utilizați parametrul LPM_HINT pentru a specifica parametrul ONE_INPUT_IS_CONSTANT în proiectarea VHDL files. Valorile sunt DA, NU sau NEUTILIZATE. Oferă o optimizare mai mare dacă o intrare este constantă. Dacă este omisă, valoarea implicită este NU.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 29
683490 | 2020.10.05 Trimiteți feedback
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core
Figura 6.
Intel furnizează nucleul IP ALTECC pentru a implementa funcționalitatea ECC. ECC detectează datele corupte care apar la nivelul receptorului în timpul transmiterii datelor. Această metodă de corectare a erorilor este cea mai potrivită pentru situațiile în care erorile apar la întâmplare, mai degrabă decât în rafale.
ECC detectează erori prin procesul de codificare și decodare a datelor. De exampatunci când ECC este aplicat într-o aplicație de transmisie, datele citite de la sursă sunt codificate înainte de a fi trimise la receptor. Ieșirea (cuvântul de cod) de la codificator constă din datele brute atașate cu numărul de biți de paritate. Numărul exact de biți de paritate atașați depinde de numărul de biți din datele de intrare. Cuvântul cod generat este apoi transmis la destinație.
Receptorul primește cuvântul cod și îl decodifică. Informațiile obținute de decodor determină dacă este detectată o eroare. Decodorul detectează erori pe un singur bit și pe dublu biți, dar poate remedia numai erori pe un singur bit din datele corupte. Acest tip de ECC este o singură eroare cu corectare a erorilor duble (SECDED).
Puteți configura funcțiile de codificare și decodor ale nucleului IP ALTEC. Datele de intrare în codificator sunt codificate pentru a genera un cuvânt cod care este o combinație a datelor de intrare și a biților de paritate generați. Cuvântul de cod generat este transmis către modulul decodor pentru decodare chiar înainte de a ajunge la blocul său de destinație. Decodorul generează un vector de sindrom pentru a determina dacă există vreo eroare în cuvântul de cod primit. Decodorul corectează datele numai dacă eroarea pe un singur bit provine din biții de date. Niciun semnal nu este marcat dacă eroarea pe un singur bit este de la biții de paritate. Decodorul are, de asemenea, semnale de semnalizare pentru a arăta starea datelor primite și acțiunea întreprinsă de decodor, dacă este cazul.
Următoarele figuri arată porturile pentru nucleul IP ALTEC.
Porturi pentru codificator ALTEC
ALTEC_ENCODER
date[]
q[]
ceas
ceas
aclr
inst
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core 683490 | 2020.10.05
Figura 7. Porturi pentru decodor ALTEC
ALTEC_DECODER
data[] clock clock
q[] err_detected err_corrected
err_fatal
aclr
inst
7.1. Caracteristici codificatorului ALTEC
Nucleul IP al codificatorului ALTECC oferă următoarele caracteristici: · Efectuează codificarea datelor utilizând schema Hamming Coding · Acceptă lățimea datelor de 2 de biți · Acceptă formatul de reprezentare a datelor semnate și nesemnate · Suportă pipelining cu latență de ieșire de unul sau două cicluri de ceas · Acceptă opțional porturi asincrone clear și activare ceas
Nucleul IP al codificatorului ALTECC preia și codifică datele folosind schema Hamming Coding. Schema Hamming Coding derivă biții de paritate și îi adaugă la datele originale pentru a produce cuvântul cod de ieșire. Numărul de biți de paritate atașați depinde de lățimea datelor.
Următorul tabel listează numărul de biți de paritate atașați pentru diferite game de lățimi de date. Coloana Biți totali reprezintă numărul total de biți de date de intrare și biți de paritate adauși.
Tabelul 21.
Numărul de biți de paritate și cuvântul cod în funcție de lățimea datelor
Lățimea datelor
Numărul de biți de paritate
Total biți (cuvânt de cod)
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
Derivarea biților de paritate utilizează o verificare a parității parității. 1 bit suplimentar (indicat în tabel ca +1) este atașat biților de paritate ca MSB al cuvântului de cod. Acest lucru asigură că cuvântul cod are un număr par de 1. De exampdacă lățimea datelor este de 4 biți, 4 biți de paritate sunt atașați datelor pentru a deveni un cuvânt cod cu un total de 8 biți. Dacă 7 biți din LSB al cuvântului de cod de 8 biți au un număr impar de 1, al 8-lea bit (MSB) al cuvântului de cod este 1, făcând numărul total de 1 din cuvântul de cod par.
Următoarea figură prezintă cuvântul de cod generat și aranjarea biților de paritate și a biților de date într-o intrare de date de 8 biți.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 31
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core 683490 | 2020.10.05
Figura 8.
Aranjarea biților de paritate și a biților de date într-un cuvânt cod generat de 8 biți
MSB
LSB
4 biți de paritate
4 biți de date
8
1
Nucleul IP al codificatorului ALTEC acceptă numai lățimi de intrare de la 2 la 64 de biți simultan. Lățimi de intrare de 12 biți, 29 de biți și 64 de biți, care sunt potrivite în mod ideal pentru dispozitivele Intel, generează ieșiri de 18 biți, 36 de biți și, respectiv, 72 de biți. Puteți controla limitarea selecției de biți în editorul de parametri.
7.2. Prototip Verilog HDL (ALTECC_ENCODER)
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
module altecc_encoder #( parametru destinat_device_family = „unused”, parametrul lpm_pipeline = 0, parametrul width_codeword = 8, parametrul width_dataword = 8, parametrul lpm_type = „altecc_encoder”, parametrul lpm_hint = „unused”) ( input wire aclr, input wire clock, input wire clock wire clock, fir de intrare [width_dataword-1:0] date, fir de ieșire [width_codeword-1:0] q); modul final
7.3. Prototip Verilog HDL (ALTECC_DECODER)
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) lpm.v în directorul de edasinteză.
module altecc_decoder #( parametru destinat_device_family = „neutilizat”, parametrul lpm_pipeline = 0, parametrul width_codeword = 8, parametrul width_dataword = 8, parametrul lpm_type = „altecc_decoder”, parametrul lpm_hint = „neutilizat”) ( intrare fir aclr, intrare fir aclr, intrare wire clocken, fir de intrare [width_codeword-1:0] date, fir de ieșire err_corrected, fir de ieșire err_detected, outut wire err_fatal, fir de ieșire [width_dataword-1:0] q); modul final
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 32
Trimiteți feedback
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core 683490 | 2020.10.05
7.4. Declarația componentei VHDL (ALTECC_ENCODER)
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) altera_mf_components.vhd în directorul librariesvhdlaltera_mf.
componenta altecc_encoder generic (intentioned_device_family:string := „unused”; lpm_pipeline:natural := 0; width_codeword:natural := 8; width_dataword:natural := 8; lpm_hint:string := „NEUSED”; lpm_type:string := „altecc_encoder ”); port( aclr:in std_logic := '0'; clock:in std_logic := '0'; clock:in std_logic := '1'; data:in std_logic_vector(width_dataword-1 downto 0); q:out std_logic_vector(width_codeword -1 până la 0)); componentă de capăt;
7.5. Declarația componentei VHDL (ALTECC_DECODER)
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) altera_mf_components.vhd în directorul librariesvhdlaltera_mf.
componenta altecc_decoder generic (intentioned_device_family:string := „unused”; lpm_pipeline:natural := 0; width_codeword:natural := 8; width_dataword:natural := 8; lpm_hint:string := „NEUSED”; lpm_type:string := „altecc_decoder ”); port( aclr:in std_logic:= '0'; clock:in std_logic:= '0'; clock:in std_logic:= '1'; date:in std_logic_vector(width_codeword-1 downto 0); err_corrected: out std_logic; err_detected : out std_logic q:out std_logic_vector(width_dataword-1 downto 0: out std_logic); componentă de capăt;
7.6. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ altera_mf; USE altera_mf.altera_mf_components.all;
7.7. Porturi pentru codificator
Următoarele tabele listează porturile de intrare și de ieșire pentru miezul IP al codificatorului ALTECC.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 33
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core 683490 | 2020.10.05
Tabelul 22. Porturi de intrare a codificatorului ALTECC
Numele portului
Necesar
Descriere
date[]
Da
Port de introducere a datelor. Mărimea portului de intrare depinde de WIDTH_DATAWORD
valoarea parametrului. Portul de date[] conține datele brute care trebuie codificate.
ceas
Da
Port de intrare pentru ceas care furnizează semnalul de ceas pentru a sincroniza operația de codificare.
Portul de ceas este necesar atunci când valoarea LPM_PIPELINE este mai mare decât 0.
ceas
Nu
Activare ceas. Dacă este omisă, valoarea implicită este 1.
aclr
Nu
Intrare clară asincronă. Semnalul activ aclr ridicat poate fi utilizat în orice moment pentru
ștergeți asincron registrele.
Tabelul 23. Porturi de ieșire a codificatorului ALTECC
Nume port q[]
Obligatoriu Da
Descriere
Port de ieșire a datelor codificate. Mărimea portului de ieșire depinde de valoarea parametrului WIDTH_CODEWORD.
7.8. Porturi pentru decodor
Următoarele tabele listează porturile de intrare și de ieșire pentru miezul IP al decodorului ALTEC.
Tabelul 24. Porturi de intrare pentru decodor ALTEC
Numele portului
Necesar
Descriere
date[]
Da
Port de introducere a datelor. Mărimea portului de intrare depinde de valoarea parametrului WIDTH_CODEWORD.
ceas
Da
Port de intrare pentru ceas care furnizează semnalul de ceas pentru a sincroniza operația de codificare. Portul de ceas este necesar atunci când valoarea LPM_PIPELINE este mai mare decât 0.
ceas
Nu
Activare ceas. Dacă este omisă, valoarea implicită este 1.
aclr
Nu
Intrare clară asincronă. Semnalul activ aclr ridicat poate fi utilizat în orice moment pentru a șterge asincron registrele.
Tabelul 25. Porturi de ieșire a decodorului ALTEC
Nume port q[]
Obligatoriu Da
Descriere
Port de ieșire a datelor decodificate. Mărimea portului de ieșire depinde de valoarea parametrului WIDTH_DATAWORD.
err_detected Da
Semnal semnal pentru a reflecta starea datelor primite și specifică orice erori găsite.
err_correcte Da d
Semnal de semnalizare pentru a reflecta starea datelor primite. Indică o eroare pe un singur bit găsită și corectată. Puteți utiliza datele deoarece au fost deja corectate.
err_fatal
Da
Semnal de semnalizare pentru a reflecta starea datelor primite. Indică o eroare pe dublu biți găsită, dar neremediată. Nu trebuie să utilizați datele dacă acest semnal este afirmat.
syn_e
Nu
Un semnal de ieșire care va crește ori de câte ori este detectată o eroare pe un singur bit pe paritate
biți.
7.9. Parametrii codificatorului
Următorul tabel listează parametrii pentru miezul IP al codificatorului ALTECC.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 34
Trimiteți feedback
7. ALTEC (Cod de corectare a erorilor: Encoder/Decoder) IP Core 683490 | 2020.10.05
Tabelul 26. Parametrii codificatorului ALTECC
Nume parametru
Tip
Necesar
Descriere
WIDTH_DATAWORD
Număr întreg Da
Specifică lățimea datelor brute. Valorile sunt de la 2 la 64. Dacă sunt omise, valoarea implicită este 8.
WIDTH_CODEWORD
Număr întreg Da
Specifică lățimea cuvântului de cod corespunzător. Valorile valide sunt de la 6 la 72, excluzând 9, 17, 33 și 65. Dacă sunt omise, valoarea implicită este 13.
LPM_PIPELINE
Număr întreg
Specifică conducta pentru circuit. Valorile sunt de la 0 la 2. Dacă valoarea este 0, porturile nu sunt înregistrate. Dacă valoarea este 1, porturile de ieșire sunt înregistrate. Dacă valoarea este 2, porturile de intrare și de ieșire sunt înregistrate. Dacă este omisă, valoarea implicită este 0.
7.10. Parametrii decodorului
Următorul tabel listează parametrii de bază IP a decodorului ALTEC.
Tabelul 27. Parametrii decodorului ALTECC
Nume parametru WIDTH_DATAWORD
Tastați Integer
Necesar
Descriere
Da
Specifică lățimea datelor brute. Valorile sunt de la 2 la 64
valoarea implicită este 8.
WIDTH_CODEWORD
Întreg
Da
Specifică lățimea cuvântului de cod corespunzător. Valorile sunt 6
la 72, excluzând 9, 17, 33 și 65. Dacă este omisă, valoarea implicită
este 13.
LPM_PIPELINE
Întreg
Nu
Specifică registrul circuitului. Valorile sunt de la 0 la 2. Dacă
valoarea este 0, nu este implementat niciun registru. Dacă valoarea este 1,
ieșirea este înregistrată. Dacă valoarea este 2, atât intrarea, cât și
ieșirile sunt înregistrate. Dacă valoarea este mai mare de 2, suplimentar
registrele sunt implementate la ieșire pentru adițional
latențe. Dacă este omisă, valoarea implicită este 0.
Creați un port „syn_e”.
Întreg
Nu
Activați acest parametru pentru a crea un port syn_e.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 35
683490 | 2020.10.05 Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core
Figura 9.
Nucleul IP Intel FPGA Multiply Adder (dispozitive Intel Stratix 10, Intel Arria 10 și Intel Cyclone 10 GX) sau ALTERA_MULT_ADD (dispozitive Arria V, Stratix V și Cyclone V) vă permite să implementați un multiplicator-adăugător.
Următoarea figură arată porturile pentru Intel FPGA Multiply Adder sau nucleul IP ALTERA_MULT_ADD.
Intel FPGA Multiply Adder sau porturi ALTERA_MULT_ADD
Intel FPGA Multiply Adder sau ALTERA_MULT_ADD
dataa[] signa datab[] signb datac[] coefsel0[] coefsel1[] coefsel2[] coefsel3[] addnsub1 addnsub3 aclr/sclr[] scanina[] clock0 clock1 clock2 ena0 ena1 ena2 sload_accum
accum_sload chainin[]
scanouta[] rezultat[]
aclr0 aclr1
inst
Un multiplicator-adunator acceptă perechi de intrări, înmulțește valorile împreună și apoi adaugă sau scade din produsele tuturor celorlalte perechi.
Dacă toate lățimile datelor de intrare sunt de 9 biți sau mai mici, funcția utilizează configurația multiplicatorului de intrare de 9 x 9 biți din blocul DSP pentru dispozitivele care acceptă configurația 9 x 9. Dacă nu, blocul DSP utilizează multiplicatori de intrare de 18 × 18 biți pentru a procesa date cu lățimi între 10 și 18 biți. Dacă într-un proiect apar mai multe nuclee Intel FPGA Multiply Adder sau ALTERA_MULT_ADD, funcțiile sunt distribuite ca
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
cât mai multe blocuri DSP diferite, astfel încât rutarea către aceste blocuri să fie mai flexibilă. Mai puțini multiplicatori per bloc DSP permit mai multe opțiuni de rutare în bloc, reducând la minimum căile către restul dispozitivului.
Registrele și registrele extra pipeline pentru următoarele semnale sunt, de asemenea, plasate în interiorul blocului DSP: · Intrare de date · Selectare semnată sau nesemnată · Selectare adăugare sau scădere · Produse multiplicatoare
În cazul rezultatului de ieșire, primul registru este plasat în blocul DSP. Cu toate acestea, registrele de latență suplimentară sunt plasate în elemente logice în afara blocului. Periferic la blocul DSP, inclusiv intrările de date către multiplicator, intrările de semnal de control și ieșirile agregatorului, utilizează rutarea obișnuită pentru a comunica cu restul dispozitivului. Toate conexiunile din funcție folosesc rutare dedicată în interiorul blocului DSP. Această rutare dedicată include lanțurile de registru de schimbare atunci când selectați opțiunea de a muta datele de intrare înregistrate ale unui multiplicator de la un multiplicator la un multiplicator adiacent.
Pentru mai multe informații despre blocurile DSP din oricare dintre seriile de dispozitive Stratix V și Arria V, consultați capitolul Blocuri DSP din manualele respective de pe pagina Literatură și documentație tehnică.
Informații înrudite AN 306: Implementarea multiplicatorilor în dispozitivele FPGA
Oferă mai multe informații despre implementarea multiplicatorilor folosind DSP și blocuri de memorie în dispozitivele Intel FPGA.
8.1. Caracteristici
Nucleul Intel FPGA Multiply Adder sau ALTERA_MULT_ADD IP oferă următoarele caracteristici: · Generează un multiplicator pentru a efectua operații de multiplicare a două
numere Notă: Când construiți multiplicatori mai mari decât dimensiunea acceptată nativ, este posibil/
va fi un impact asupra performanței rezultat din cascada blocurilor DSP. · Acceptă lățimi de date de 1 256 de biți · Acceptă formatul de reprezentare a datelor semnate și nesemnate · Acceptă pipelining cu latență de intrare configurabilă · Oferă o opțiune de comutare dinamică între suport pentru date semnate și nesemnate · Oferă o opțiune de comutare dinamică între operația de adăugare și scădere · Suportă porturi de intrare opționale asincrone și sincrone și activarea ceasului · Suportă modul de înregistrare a întârzierii sistolice · Suportă pre-adunator cu 8 coeficienți de preîncărcare per multiplicator · Suportă constantă de preîncărcare pentru a completa feedback-ul acumulatorului
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 37
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.1. Preasumator
Cu pre-adunator, adunările sau scăderile se fac înainte de alimentarea multiplicatorului.
Există cinci moduri de pre-adunare: · Modul simplu · Modul coeficient · Modul de intrare · Modul pătrat · Modul constant
Nota:
Când se folosește pre-adunator (coeficient de pre-adunator/mod de intrare/pătrat), toate intrările de date către multiplicator trebuie să aibă aceeași setare de ceas.
8.1.1.1. Modul simplu pre-adăugător
În acest mod, ambii operanzi derivă din porturile de intrare și pre-adunatorul nu este utilizat sau ocolit. Acesta este modul implicit.
Figura 10. Modul simplu pre-adăugător
a0 b0
Mult0
rezultat
8.1.1.2. Modul coeficient de pre-adunator
În acest mod, un operand multiplicator derivă din pre-adunator, iar celălalt operand derivă din stocarea coeficientului intern. Stocarea coeficientului permite până la 8 constante prestabilite. Semnalele de selecție a coeficienților sunt coefsel[0..3].
Acest mod este exprimat în următoarea ecuație.
Următoarele arată modul de pre-adunator al coeficientului unui multiplicator.
Figura 11. Modul coeficient pre-adunator
Preader
a0
Mult0
+/-
rezultat
b0
coefsel0 coef
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 38
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.1.3. Modul de intrare pre-adunator În acest mod, un operand multiplicator derivă din pre-adunator, iar celălalt operand derivă din portul de intrare datac[]. Acest mod este exprimat în următoarea ecuație.
Următoarele arată modul de intrare pre-adăugător al unui multiplicator.
Figura 12. Modul de intrare pre-adăugător
a0 b0
Mult0
+/-
rezultat
c0
8.1.1.4. Modul pătrat pre-adunator Acest mod este exprimat în următoarea ecuație.
Următoarele arată modul pătrat pre-adunator a doi multiplicatori.
Figura 13. Modul pătrat pre-adăugător
a0 b0
Mult0
+/-
rezultat
8.1.1.5. Modul constant pre-adăugător
În acest mod, un operand multiplicator derivă din portul de intrare, iar celălalt operand derivă din stocarea coeficientului intern. Stocarea coeficientului permite până la 8 constante prestabilite. Semnalele de selecție a coeficienților sunt coefsel[0..3].
Acest mod este exprimat în următoarea ecuație.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 39
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Următoarea figură arată modul constant de pre-adunator al unui multiplicator.
Figura 14. Modul constant pre-adăugător
a0
Mult0
rezultat
coefsel0
coef
8.1.2. Registrul de întârziere sistolică
Într-o arhitectură sistolică, datele de intrare sunt introduse într-o cascadă de registre care acționează ca un buffer de date. Fiecare registru furnizează o intrare sample la un multiplicator unde se înmulțește cu coeficientul respectiv. Adăugătorul în lanț stochează rezultatele combinate treptat de la multiplicator și rezultatul înregistrat anterior de la portul de intrare chainin[] pentru a forma rezultatul final. Fiecare element de multiplicare-adăugare trebuie amânat cu un singur ciclu, astfel încât rezultatele să se sincronizeze corespunzător atunci când sunt adăugate împreună. Fiecare întârziere succesivă este utilizată pentru a adresa atât memoria coeficienților, cât și memoria tampon de date ale elementelor de înmulțire-adunare respective. De example, o singură întârziere pentru al doilea element de adăugare înmulțire, două întârzieri pentru al treilea element de înmulțire-adăugare și așa mai departe.
Figura 15. Registrele sistolice
Registrele sistolice
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 y(t)
x(t) reprezintă rezultatele dintr-un flux continuu de intrare samples și y(t)
reprezintă însumarea unui set de intrări samples, iar în timp, înmulțit cu lor
coeficienții respectivi. Atât rezultatele de intrare, cât și cele de ieșire curg de la stânga la dreapta. De la c(0) la c(N-1) se desemnează coeficienții. Registrele de întârziere sistolice sunt notate cu S-1, în timp ce 1 reprezintă o singură întârziere de ceas. Registrele de întârziere sistolice sunt adăugate la
intrările și ieșirile pentru conducte într-un mod care să asigure rezultatele de la
operand multiplicator și sumele acumulate rămân sincronizate. Acest element de prelucrare
este replicat pentru a forma un circuit care calculează funcția de filtrare. Această funcție este
exprimată în următoarea ecuație.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 40
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
N reprezintă numărul de cicluri de date care au intrat în acumulator, y(t) reprezintă ieșirea la momentul t, A(t) reprezintă intrarea la momentul t și B(i) sunt coeficienții. T și i din ecuație corespund unui anumit moment de timp, deci pentru a calcula rezultatul sample y(t) la momentul t, un grup de intrare sampsunt necesare în N momente diferite de timp sau A(n), A(n-1), A(n-2), … A(n-N+1). Grupul de N intrare sampchirii sunt înmulțiți cu N coeficienți și însumați pentru a forma rezultatul final y.
Arhitectura registrului sistolic este disponibilă numai pentru modurile sum-of-2 și sum-of-4. Pentru ambele moduri de arhitectură a registrului sistolic, primul semnal în lanț trebuie să fie legat la 0.
Următoarea figură arată implementarea registrului de întârziere sistolică a 2 multiplicatori.
Figura 16. Implementarea registrului de întârziere sistolică a 2 multiplicatori
lanț
a0
Mult0
+/-
b0
a1
Mult1
+/-
b1
rezultat
Suma a doi multiplicatori este exprimată în următoarea ecuație.
Următoarea figură arată implementarea registrului de întârziere sistolică a 4 multiplicatori.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 41
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Figura 17. Implementarea registrului de întârziere sistolică a 4 multiplicatori
lanț
a0
Mult0
+/-
b0
a1
Mult1
+/-
b1
a2
Mult2
+/-
b2
a3
Mult3
+/-
b3
rezultat
Suma a patru multiplicatori este exprimată în următoarea ecuație. Figura 18. Suma a 4 multiplicatori
Următoarele listează avansultagimplementarea registrului sistolic: · Reduce utilizarea resurselor DSP · Permite maparea eficientă în blocul DSP utilizând structura de adăugare în lanț
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 42
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.1.3. Pre-încărcare constantă
Constanta de preîncărcare controlează operandul acumulatorului și completează feedback-ul acumulatorului. Valoarea LOADCONST_VALUE validă variază de la 0. Valoarea constantă este egală cu 64N, unde N = LOADCONST_VALUE. Când LOADCONST_VALUE este setat la 2, valoarea constantă este egală cu 64. Această funcție poate fi utilizată ca rotunjire părtinitoare.
Următoarea figură arată implementarea constantă de pre-încărcare.
Figura 19. Constanta de preîncărcare
Feedback al acumulatorului
constant
a0
Mult0
+/-
b0
a1
Mult1
+/b1
rezultat
accum_sload sload_accum
Consultați următoarele nuclee IP pentru alte implementări ale multiplicatorului: · ALTMULT_ACCUM · ALTMEMMULT · LPM_MULT
8.1.4. Acumulator dublu
Caracteristica acumulatorului dublu adaugă un registru suplimentar în calea de feedback al acumulatorului. Registrul dublu acumulator urmează registrul de ieșire, care include ceasul, activarea ceasului și aclr. Registrul suplimentar al acumulatorului returnează rezultatul cu o întârziere de un ciclu. Această caracteristică vă permite să aveți două canale de acumulator cu același număr de resurse.
Figura următoare arată implementarea acumulatorului dublu.
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 43
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Figura 20. Acumulator dublu
Registrul acumulatorului dublu
Feedback acumulator
a0
Mult0
+/-
b0
a1
Mult1
+/b1
Rezultat de ieșire Registrul de ieșire
8.2. Prototip Verilog HDL
Puteți găsi prototipul Intel FPGA Multiply Adder sau ALTERA_MULT_ADD Verilog HDL file (altera_mult_add_rtl.v) în directorul bibliotecimegafuncții.
8.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în altera_lnsim_components.vhd din fișierul directorul librariesvhdl altera_lnsim.
8.4. Declarație VHDL LIBRARY_USE
Declarația VHDL LIBRARY-USE nu este necesară dacă utilizați Declarația componentei VHDL.
BIBLIOTECĂ altera_mf; USE altera_mf.altera_mf_components.all;
8.5. Semnale
Următoarele tabele listează semnalele de intrare și de ieșire ale nucleului IP Multiply Adder Intel FPGA IP sau ALTERA_MULT_ADD.
Tabelul 28. Multiplicarea Adder Intel FPGA IPor ALTERA_MULT_ADD semnale de intrare
Semnal
Necesar
Descriere
dataa_0[]/dataa_1[]/
Da
dataa_2[]/dataa_3[]
Introducerea datelor în multiplicator. Port de intrare [NUMBER_OF_MULTIPLIERS * WIDTH_A – 1 … 0] lățime
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 44
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Semnal 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] semnă
semnb
scanina[] accum_sload
Obligatoriu Da Nu
Nu Nu NU NU NU
Nu
Nu Nu
Descriere
Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) la aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Introducerea datelor în multiplicator. Semnal de intrare [NUMBER_OF_MULTIPLIERS * WIDTH_B – 1 … 0] lățime Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Introducerea datelor în multiplicator. Semnal de intrare [NUMBER_OF_MULTIPLIERS * WIDTH_C – 1, … 0] wide Selectați INPUT pentru parametrul Selectare mod predder pentru a activa aceste semnale. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) la aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Portul de intrare a ceasului în registrul corespunzător. Acest semnal poate fi folosit de orice registru din nucleul IP. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) la aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Intrare clară asincronă în registrul corespunzător. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) la aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Intrare clară sincronă în registrul corespunzător. Modelul de simulare pentru acest IP acceptă valoarea de intrare X nedeterminată pentru aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire
Activați intrarea semnalului în registrul corespunzător. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) la aceste semnale. Când furnizați valoare X acestor semnale, valoarea X este propagată pe semnalele de ieșire.
Specifică reprezentarea numerică a multiplicatorului de intrare A. Dacă semnalul de semnal este mare, multiplicatorul tratează semnalul de multiplicare de intrare A ca un număr cu semn. Dacă semnalul de semnal este scăzut, multiplicatorul tratează semnalul de intrare a multiplicatorului A ca un număr fără semn. Selectați VARIABLE pentru Care este formatul de reprezentare pentru parametrul de intrare Multipliers A pentru a activa acest semnal. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Specifică reprezentarea numerică a semnalului de intrare B a multiplicatorului. Dacă semnalul semnb este ridicat, multiplicatorul tratează semnalul de intrare B al multiplicatorului ca un număr de complement a doi cu semn. Dacă semnalul semnb este scăzut, multiplicatorul tratează semnalul de intrare B al multiplicatorului ca un număr fără semn. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Intrare pentru lanțul de scanare A. Semnal de intrare [WIDTH_A – 1, … 0] lățime. Când parametrul INPUT_SOURCE_A are valoarea SCANA, este necesar semnalul scanina[].
Specifică dinamic dacă valoarea acumulatorului este constantă. Dacă semnalul accum_sload este scăzut, atunci ieșirea multiplicatorului este încărcată în acumulator. Nu utilizați accum_sload și sload_accum simultan.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 45
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Semnal sload_accum
lanț[] addnsub1
addnsub3
coefsel0[] coefsel1[] coefsel2[] coefsel3[]
Nr. obligatoriu
Nu Nu
Nu
Nu Nu NU NU
Descriere
Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Specifică dinamic dacă valoarea acumulatorului este constantă. Dacă semnalul sload_accum este ridicat, atunci ieșirea multiplicatorului este încărcată în acumulator. Nu utilizați accum_sload și sload_accum simultan. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
magistrala de intrare a rezultatului sumătorului din s-ul precedenttage. Semnal de intrare [WIDTH_CHAININ – 1, … 0] lat.
Efectuați adunarea sau scăderea la ieșirile din prima pereche de multiplicatori. Intrarea 1 la semnalul addnsub1 pentru a adăuga ieșirile de la prima pereche de multiplicatori. Introduceți 0 la semnalul addnsub1 pentru a scădea ieșirile din prima pereche de multiplicatori. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Efectuați adunarea sau scăderea la ieșirile din prima pereche de multiplicatori. Intrarea 1 la semnalul addnsub3 pentru a adăuga ieșirile de la a doua pereche de multiplicatori. Introduceți 0 la semnalul addnsub3 pentru a scădea ieșirile din prima pereche de multiplicatori. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Semnal de intrare coeficient[0:3] la primul multiplicator. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Semnal de intrare coeficient[0:3]la al doilea multiplicator. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Semnal de intrare coeficient[0:3]la al treilea multiplicator. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Semnal de intrare coeficient [0:3] la al patrulea multiplicator. Modelul de simulare pentru acest IP acceptă o valoare de intrare nedeterminată (X) pentru acest semnal. Când furnizați valoare X acestei intrări, valoarea X este propagată pe semnalele de ieșire.
Tabelul 29. Multiplicarea semnalelor de ieșire IP Intel FPGA Adder
Semnal
Necesar
Descriere
rezultat []
Da
Semnal de ieșire multiplicator. Semnal de ieșire [WIDTH_RESULT – 1 … 0] lățime
Modelul de simulare pentru acest IP acceptă valoarea de ieșire nedeterminată (X). Când furnizați valoarea X ca intrare, valoarea X este propagată pe acest semnal.
scanouta []
Nu
Ieșirea lanțului de scanare A. Semnal de ieșire [WIDTH_A – 1..0] lățime.
Selectați mai mult de 2 pentru numărul de multiplicatori și alegeți Scanare intrare în lanț pentru Care este intrarea A a multiplicatorului conectat la parametrul pentru a activa acest semnal.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 46
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.6. Parametrii
8.6.1. Tab. General
Tabelul 30. General Tab
Parametru
Parametru generat de IP
Valoare
Care este numărul multiplicatorilor?
număr_de_m 1 – 4 multiplicatori
Cât de lățime ar trebui să fie magistralele de intrare A width_a?
1 – 256
Cât de lățime ar trebui să fie magistralele de intrare B width_b?
1 – 256
Cât de largă ar trebui să fie magistrala de ieșire pentru „rezultat”?
width_result
1 – 256
Creați o activare asociată ceasului pentru fiecare ceas
gui_associate On d_clock_enbl Off e
8.6.2. Fila Moduri suplimentare
Tabelul 31. Tabul Moduri suplimentare
Parametru
Parametru generat de IP
Valoare
Configurare ieșiri
Înregistrați ieșirea unității de adunare
gui_output_re Pornit
gister
Oprit
Care este sursa pentru intrarea ceasului?
gui_output_re gister_clock
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_output_re gister_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_output_re gister_sclr
NIMIC SCLR0 SCLR1
Operațiunea Adder
Ce operație ar trebui efectuată la ieșirile primei perechi de multiplicatori?
gui_multiplicator 1_direcție
ADAUGĂ, SUB, VARIABIL
Valoarea implicită 1
16
Descriere
Numărul de multiplicatori care se adună. Valorile sunt de la 1 la 4. Specificați lățimea portului de datea[].
16
Specificați lățimea portului datab[].
32
Specificați lățimea portului rezultat[].
Oprit
Selectați această opțiune pentru a activa ceasul
pentru fiecare ceas.
Valoare implicită
Descriere
Ceas oprit0
NIMIC NIMIC
Selectați această opțiune pentru a activa registrul de ieșire al modulului de adunare.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica sursa ceasului pentru registrele de ieșire. Trebuie să selectați Înregistrare ieșire a unității de adunare pentru a activa acest parametru.
Specifică sursa clară asincronă pentru registrul de ieșire a sumătorului. Trebuie să selectați Înregistrare ieșire a unității de adunare pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul de ieșire a sumătorului. Trebuie să selectați Înregistrare ieșire a unității de adunare pentru a activa acest parametru.
ADĂUGA
Selectați operația de adunare sau scădere de efectuat pentru ieșirile dintre primul și al doilea multiplicator.
· Selectați ADD pentru a efectua operația de adăugare.
· Selectați SUB pentru a efectua operația de scădere.
· Selectați VARIABIL pentru a utiliza portul addnsub1 pentru controlul dinamic al adunării/scăderii.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 47
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Parametru generat de IP
Valoare
Înregistrați intrarea „addnsub1”.
gui_addnsub_ On multiplier_reg Off ister1
Care este sursa pentru intrarea ceasului?
gui_addnsub_ multiplier_reg ster1_clock
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_addnsub_ multiplicator_aclr 1
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_addnsub_ multiplicator_sclr 1
NIMIC SCLR0 SCLR1
Ce operațiune ar trebui efectuată la ieșirile celei de-a doua perechi de multiplicatori?
gui_multiplicator 3_direcție
ADAUGĂ, SUB, VARIABIL
Înregistrați intrarea „addnsub3”.
gui_addnsub_ On multiplier_reg Off ister3
Care este sursa pentru intrarea ceasului?
gui_addnsub_ multiplier_reg ster3_clock
Ceas0 Ceas1 Ceas2
Valoare implicită
Off Clock0 NIMIC NIMIC ADAUGĂ
Ceas oprit0
Descriere
Când este selectată valoarea VARIABILĂ: · Drive addnsub1 semnal la mare pentru
operatie de adaugare. · Conduceți semnalul addnsub1 la scăzut pentru
operația de scădere. Trebuie să selectați mai mult de doi multiplicatori pentru a activa acest parametru.
Selectați această opțiune pentru a activa registrul de intrare pentru portul addnsub1. Trebuie să selectați VARIABIL pentru Ce operație trebuie efectuată pe ieșirile primei perechi de multiplicatori pentru a activa acest parametru.
Selectați Clock0 , Clock1 sau Clock2 pentru a specifica semnalul de ceas de intrare pentru registrul addnsub1. Trebuie să selectați Register 'addnsub1' input pentru a activa acest parametru.
Specifică sursa clară asincronă pentru registrul addnsub1. Trebuie să selectați Register 'addnsub1' input pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul addnsub1. Trebuie să selectați Register 'addnsub1' input pentru a activa acest parametru.
Selectați operația de adunare sau scădere de efectuat pentru ieșirile dintre al treilea și al patrulea multiplicator. · Selectați ADD pentru a efectua adăugarea
operare. · Selectați SUB pentru a efectua scăderea
operare. · Selectați VARIABIL pentru a utiliza addnsub1
port pentru controlul dinamic de adunare/scădere. Când este selectată valoarea VARIABILĂ: · Conduceți semnalul addnsub1 la nivel ridicat pentru operarea de adăugare. · Conduceți semnalul addnsub1 la scăzut pentru operația de scădere. Trebuie să selectați valoarea 4 pentru Care este numărul de multiplicatori? pentru a activa acest parametru.
Selectați această opțiune pentru a activa registrul de intrare pentru semnalul addnsub3. Trebuie să selectați VARIABIL pentru Ce operațiune trebuie efectuată pe ieșirile celei de-a doua perechi de multiplicatori pentru a activa acest parametru.
Selectați Clock0 , Clock1 sau Clock2 pentru a specifica semnalul de ceas de intrare pentru registrul addnsub3. Trebuie să selectați Înregistrați intrarea „addnsub3” pentru a activa acest parametru.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 48
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Care este sursa pentru intrare clară asincronă?
Parametru generat de IP
Valoare
gui_addnsub_ multiplicator_aclr 3
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_addnsub_ multiplicator_sclr 3
NIMIC SCLR0 SCLR1
Activare polaritate `use_subadd'
gui_use_subn Activat
adăuga
Oprit
8.6.3. Fila Multiplicatori
Tabelul 32. Tab. Multiplicatori
Parametru
Parametru generat de IP
Valoare
Ce este
gui_reprezentare
format de reprezentare ation_a
pentru intrări Multiplicatori A?
SEMNAT, NESEMNAT, VARIABIL
Înregistrați intrarea „signa”.
gui_register_s Pornit
igna
Oprit
Care este sursa pentru intrarea ceasului?
gui_register_s igna_clock
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_register_s igna_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_register_s igna_sclr
NIMIC SCLR0 SCLR1
Ce este
gui_reprezentare
format de reprezentare ation_b
pentru intrări Multiplicatori B?
SEMNAT, NESEMNAT, VARIABIL
Înregistrați intrarea „signb”.
gui_register_s Pornit
ignb
Oprit
Valoarea implicită NIMIC
NICI UNUL
Descriere
Specifică sursa clară asincronă pentru registrul addnsub3. Trebuie să selectați Register 'addnsub3' input pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul addnsub3. Trebuie să selectați Înregistrați intrarea „addnsub3” pentru a activa acest parametru.
Oprit
Selectați această opțiune pentru a inversa funcția
a portului de intrare addnsub.
Drive addnsub la mare pentru operația de scădere.
Drive addnsub la scăzut pentru operațiune de adăugare.
Valoare implicită
Descriere
UNSIGNED Specificați formatul de reprezentare pentru intrarea multiplicatorului A.
Oprit
Selectați această opțiune pentru a activa signa
registru.
Trebuie să selectați valoarea VARIABILĂ pentru Care este formatul de reprezentare pentru intrările Multipliers A? parametru pentru a activa această opțiune.
Ceas0
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica semnalul de ceas de intrare pentru registrul de semnal.
Trebuie să selectați Register `signa' input pentru a activa acest parametru.
NICI UNUL
Specifică sursa clară asincronă pentru registrul signa.
Trebuie să selectați Register `signa' input pentru a activa acest parametru.
NICI UNUL
Specifică sursa clară sincronă pentru registrul signa.
Trebuie să selectați Register `signa' input pentru a activa acest parametru.
UNSIGNED Specificați formatul de reprezentare pentru intrarea multiplicatorului B.
Oprit
Selectați această opțiune pentru a activa signb
registru.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 49
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Parametru generat de IP
Valoare
Valoare implicită
Care este sursa pentru intrarea ceasului?
gui_register_s ignb_clock
Ceas0 Ceas1 Ceas2
Ceas0
Care este sursa pentru intrare clară asincronă?
gui_register_s ignb_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_register_s ignb_sclr
NIMIC SCLR0 SCLR1
Configurație de intrare
Înregistrați intrarea A a multiplicatorului
Care este sursa pentru intrarea ceasului?
gui_input_reg Activat
ister_a
Oprit
gui_input_reg ister_a_clock
Ceas0 Ceas1 Ceas2
NIMIC NIMIC
Ceas oprit0
Care este sursa pentru intrare clară asincronă?
gui_input_reg ister_a_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_input_reg ister_a_sclr
NIMIC SCLR0 SCLR1
Înregistrați intrarea B a multiplicatorului
Care este sursa pentru intrarea ceasului?
gui_input_reg Activat
ister_b
Oprit
gui_input_reg ister_b_clock
Ceas0 Ceas1 Ceas2
NIMIC NIMIC Oprit Ceas0
Care este sursa pentru intrare clară asincronă?
gui_input_reg ister_b_aclr
NIMIC ACLR0 ACLR1
NICI UNUL
Care este sursa pentru intrare clară sincronă?
gui_input_reg ister_b_sclr
NIMIC SCLR0 SCLR1
NICI UNUL
La ce este conectată intrarea A a multiplicatorului?
gui_multiplier Multiplicator input Multiplicator
_o_intrare
Intrare de intrare în lanț de scanare
Descriere
Trebuie să selectați valoarea VARIABILĂ pentru Care este formatul de reprezentare pentru intrările Multipliers B? parametru pentru a activa această opțiune.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica semnalul de ceas de intrare pentru registrul de semnătură. Trebuie să selectați Înregistrare intrare `signb' pentru a activa acest parametru.
Specifică sursa clară asincronă pentru registrul signb. Trebuie să selectați Înregistrare intrare `signb' pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul signb. Trebuie să selectați Înregistrare intrare `signb' pentru a activa acest parametru.
Selectați această opțiune pentru a activa registrul de intrare pentru magistrala de intrare a datelor.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica semnalul de ceas de intrare a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare A a multiplicatorului pentru a activa acest parametru.
Specifică sursa clară asincronă a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare A a multiplicatorului pentru a activa acest parametru.
Specifică sursa de ștergere sincronă a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare A a multiplicatorului pentru a activa acest parametru.
Selectați această opțiune pentru a activa registrul de intrare pentru magistrala de intrare de date.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica semnalul de ceas de intrare a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare B a multiplicatorului pentru a activa acest parametru.
Specifică sursa clară asincronă a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare B a multiplicatorului pentru a activa acest parametru.
Specifică sursa de ștergere sincronă a registrului pentru magistrala de intrare a datelor. Trebuie să selectați Înregistrare intrare B a multiplicatorului pentru a activa acest parametru.
Selectați sursa de intrare pentru intrarea A a multiplicatorului.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 50
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Parametru generat de IP
Valoare
Scanout A Register Configuration
Înregistrați ieșirea lanțului de scanare
gui_scanouta On
_registru
Oprit
Care este sursa pentru intrarea ceasului?
gui_scanouta _register_cloc k
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_scanouta _register_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_scanouta _register_sclr
NIMIC SCLR0 SCLR1
8.6.4. Fila Preadder
Tabelul 33. Fila Preadder
Parametru
Parametru generat de IP
Valoare
Selectați modul Preader
predder_mo de
SIMPLU, COEF, INTRARE, PATRAT, CONSTANT
Valoare implicită
Descriere
Selectați Intrarea multiplicatorului pentru a utiliza magistrala de intrare a datelor ca sursă pentru multiplicator. Selectați Scanare intrare în lanț pentru a utiliza magistrala de intrare de scanare ca sursă pentru multiplicator și pentru a activa magistrala de ieșire a scanării. Acest parametru este disponibil când selectați 2, 3 sau 4 pentru Care este numărul de multiplicatori? parametru.
Off Clock0 NIMIC NIMIC
Selectați această opțiune pentru a activa registrul de ieșire pentru magistrala de ieșire scanouta.
Trebuie să selectați Scanare intrare în lanț pentru La ce este conectată intrarea A a multiplicatorului? parametru pentru a activa această opțiune.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și a specifica semnalul de ceas de intrare a registrului pentru magistrala de ieșire scanouta.
Trebuie să activați înregistrarea ieșirii parametrului lanțului de scanare pentru a activa această opțiune.
Specifică sursa de ștergere asincronă a registrului pentru magistrala de ieșire scanouta.
Trebuie să activați înregistrarea ieșirii parametrului lanțului de scanare pentru a activa această opțiune.
Specifică sursa de ștergere sincronă a registrului pentru magistrala de ieșire scanouta.
Trebuie să selectați Înregistrare ieșire a parametrului lanțului de scanare pentru a activa această opțiune.
Valoare implicită
SIMPLU
Descriere
Specifică modul de funcționare pentru modulul preadder. SIMPLU: Acest mod ocolește preadder-ul. Acesta este modul implicit. COEF: Acest mod folosește ieșirea magistralei de intrare preadder și coefsel ca intrări pentru multiplicator. INTRARE: Acest mod folosește ieșirea predder-ului și magistralei de intrare de date ca intrări pentru multiplicator. SQUARE: Acest mod folosește ieșirea preadder-ului ca ambele intrări pentru multiplicator.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 51
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Parametru generat de IP
Valoare
Selectați direcția preadderului
gui_preadder ADD,
_direcţie
SUB
Cât de lățime ar trebui să fie magistralele de intrare C width_c?
1 – 256
Date C Configurare registru de intrare
Înregistrați intrarea de date
gui_datac_inp Activat
ut_register
Oprit
Care este sursa pentru intrarea ceasului?
gui_datac_inp ut_register_cl ock
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_datac_inp ut_register_a clr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_datac_inp ut_register_sc lr
NIMIC SCLR0 SCLR1
Coeficienți
Cât de largă ar trebui să fie lățimea coefului?
width_coef
1 – 27
Configurarea registrului Coef
Înregistrați intrarea coefsel
gui_coef_regi On
ster
Oprit
Care este sursa pentru intrarea ceasului?
gui_coef_regi ster_clock
Ceas0 Ceas1 Ceas2
Valoare implicită
ADĂUGA
16
Descriere
CONSTANT: Acest mod folosește o magistrală de intrare de date cu predder ocolit și magistrală de intrare coefsel ca intrări pentru multiplicator.
Specifică funcționarea preadder-ului. Pentru a activa acest parametru, selectați următoarele pentru modul Select predder: · COEF · INPUT · SQUARE sau · CONSTANT
Specifică numărul de biți pentru magistrala de intrare C. Trebuie să selectați INPUT pentru Select predder mode pentru a activa acest parametru.
On Clock0 NIMIC NIMIC
Selectați această opțiune pentru a activa registrul de intrare pentru magistrala de intrare de date. Trebuie să setați INPUT la parametrul Selectare mod predder pentru a activa această opțiune.
Selectați Clock0 , Clock1 sau Clock2 pentru a specifica semnalul de ceas de intrare pentru registrul de intrare de date. Trebuie să selectați Register datac input pentru a activa acest parametru.
Specifică sursa clară asincronă pentru registrul de intrare datac. Trebuie să selectați Register datac input pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul de intrare datac. Trebuie să selectați Register datac input pentru a activa acest parametru.
18
Specifică numărul de biți pentru
magistrală de intrare coefsel.
Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Pe Ceas0
Selectați această opțiune pentru a activa registrul de intrare pentru magistrala de intrare coefsel. Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Selectați Clock0 , Clock1 sau Clock2 pentru a specifica semnalul de ceas de intrare pentru registrul de intrare coefsel. Trebuie să selectați Înregistrați intrarea coefsel pentru a activa acest parametru.
a continuat…
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 52
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Care este sursa pentru intrare clară asincronă?
Parametru generat de IP
Valoare
gui_coef_regi ster_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă
gui_coef_regi ster_sclr
NIMIC SCLR0 SCLR1
Configurație Coeficient_0
coef0_0 până la coef0_7
0x00000 0xFFFFFFF
Configurație Coeficient_1
coef1_0 până la coef1_7
0x00000 0xFFFFFFF
Configurație Coeficient_2
coef2_0 până la coef2_7
0x00000 0xFFFFFFF
Configurație Coeficient_3
coef3_0 până la coef3_7
0x00000 0xFFFFFFF
8.6.5. Tab. Acumulator
Tabelul 34. Tab. Acumulator
Parametru
Parametru generat de IP
Valoare
Activați acumulatorul?
acumulator
DA NU
Care este tipul de funcționare a acumulatorului?
accum_directi ADD,
on
SUB
Valoarea implicită NIMIC
NICI UNUL
0x0000000 0
0x0000000 0
0x0000000 0
0x0000000 0
Descriere
Specifică sursa clară asincronă pentru registrul de intrare coefsel. Trebuie să selectați Înregistrați intrarea coefsel pentru a activa acest parametru.
Specifică sursa clară sincronă pentru registrul de intrare coefsel. Trebuie să selectați Înregistrați intrarea coefsel pentru a activa acest parametru.
Specifică valorile coeficientului pentru acest prim multiplicator. Numărul de biți trebuie să fie același cu cel specificat în Cât de largă ar trebui să fie lățimea coefului? parametru. Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Specifică valorile coeficientului pentru acest al doilea multiplicator. Numărul de biți trebuie să fie același cu cel specificat în Cât de largă ar trebui să fie lățimea coefului? parametru. Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Specifică valorile coeficientului pentru acest al treilea multiplicator. Numărul de biți trebuie să fie același cu cel specificat în Cât de largă ar trebui să fie lățimea coefului? parametru. Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Specifică valorile coeficientului pentru acest al patrulea multiplicator. Numărul de biți trebuie să fie același cu cel specificat în Cât de largă ar trebui să fie lățimea coefului? parametru. Trebuie să selectați COEF sau CONSTANT pentru modul Predder pentru a activa acest parametru.
Valoarea implicită NR
ADĂUGA
Descriere
Selectați DA pentru a activa acumulatorul. Trebuie să selectați Înregistrare ieșire a unității de adunare când utilizați caracteristica acumulator.
Specifică funcționarea acumulatorului: · ADD pentru operația de adunare · SUB pentru operația de scădere. Trebuie să selectați DA pentru Activare acumulator? parametru pentru a activa această opțiune.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 53
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Preload Constant Activați constanta de preîncărcare
Parametru generat de IP
Valoare
gui_ena_prelo On
ad_const
Oprit
La ce este conectat intrarea portului de acumulare?
gui_accumula ACCUM_SLOAD, te_port_select SLOAD_ACCUM
Selectați valoarea pentru preîncărcare loadconst_val 0 – 64
constant
ue
Care este sursa pentru intrarea ceasului?
gui_accum_sl oad_register_ ceas
Ceas0 Ceas1 Ceas2
Care este sursa pentru intrare clară asincronă?
gui_accum_sl oad_register_ aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_accum_sl oad_register_ sclr
NIMIC SCLR0 SCLR1
Activați acumulatorul dublu
gui_double_a On
ccum
Oprit
Valoare implicită
Descriere
Oprit
Activați accum_sload sau
semnalele sload_accum și intrarea registrului
pentru a selecta dinamic intrarea în
acumulator.
Când accum_sload este scăzut sau sload_accum, ieșirea multiplicatorului este alimentată în acumulator.
Când accum_sload este mare sau sload_accum, o constantă de preîncărcare specificată de utilizator este alimentată în acumulator.
Trebuie să selectați DA pentru Activare acumulator? parametru pentru a activa această opțiune.
ACCUM_SL OAD
Specifică comportamentul semnalului accum_sload/sload_accum.
ACCUM_SLOAD: Drive accum_sload low pentru a încărca ieșirea multiplicatorului la acumulator.
SLOAD_ACCUM: conduceți sload_accum la nivel ridicat pentru a încărca ieșirea multiplicatorului în acumulator.
Trebuie să selectați opțiunea Enable preload constant pentru a activa acest parametru.
64
Specificați valoarea constantă prestabilită.
Această valoare poate fi 2N, unde N este valoarea constantă prestabilită.
Când N=64, acesta reprezintă un zero constant.
Trebuie să selectați opțiunea Enable preload constant pentru a activa acest parametru.
Ceas0
Selectați Clock0 , Clock1 sau Clock2 pentru a specifica semnalul de ceas de intrare pentru registrul accum_sload/sload_accum.
Trebuie să selectați opțiunea Enable preload constant pentru a activa acest parametru.
NICI UNUL
Specifică sursa clară asincronă pentru registrul accum_sload/sload_accum.
Trebuie să selectați opțiunea Enable preload constant pentru a activa acest parametru.
NICI UNUL
Specifică sursa clară sincronă pentru registrul accum_sload/sload_accum.
Trebuie să selectați opțiunea Enable preload constant pentru a activa acest parametru.
Oprit
Activează registrul dublu acumulator.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 54
Trimiteți feedback
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
8.6.6. Tabă Sistolic/Chainout
Tabelul 35. Fila Adder Sistolic/Chainout
Parametrul Activare adaugătorului de lanț
Parametru generat de IP
Valoare
chainout_add DA,
er
NU
Care este tipul de operație pentru adăugarea în lanț?
chainout_add ADD,
er_direction
SUB
Activați intrarea „negație” pentru adaosul chainout?
Port_negate
PORT_USED, PORT_UNUSED
Înregistrați intrarea „negație”? negate_regist er
NEÎNREGISTRAT, CLOCK0, CLOCK1, CLOCK2, CLOCK3
Care este sursa pentru intrare clară asincronă?
negate_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
negate_sclr
NIMIC SCLR0 SCLR1
Întârziere sistolică
Activați registrele de întârziere sistolice
gui_sistolic_d On
elay
Oprit
Care este sursa pentru intrarea ceasului?
gui_systolic_d CLOCK0,
elay_clock
CLOCK1,
Valoare implicită
NU
Descriere
Selectați DA pentru a activa modulul de adăugare în lanț.
ADĂUGA
Specifică operațiunea de adăugare în lanț.
Pentru operația de scădere, trebuie selectat SIGNED pentru Care este formatul de reprezentare pentru intrările Multipliers A? și Care este formatul de reprezentare pentru intrările Multipliers B? în fila Multiplicatori.
PORT_UN FOLOSIT
Selectați PORT_USED pentru a activa semnalul de intrare de negare.
Acest parametru este invalid atunci când adaugătorul chainout este dezactivat.
NEÎNREGISTRARE ERED
Pentru a activa registrul de intrare pentru semnalul de intrare de negare și specifică semnalul de ceas de intrare pentru registrul de negare.
Selectați NEÎNREGISTRAT dacă nu este necesar registrul de intrare de negare la
Acest parametru este invalid atunci când selectați:
· NU pentru Enable Chainout Adder sau
· PORT_UNUSED pentru Activați intrarea „negație” pentru adaosul chainout? parametru sau
NICI UNUL
Specifică sursa clară asincronă pentru registrul de negare.
Acest parametru este invalid atunci când selectați:
· NU pentru Enable Chainout Adder sau
· PORT_UNUSED pentru Activați intrarea „negație” pentru adaosul chainout? parametru sau
NICI UNUL
Specifică sursa clară sincronă pentru registrul de negare.
Acest parametru este invalid atunci când selectați:
· NU pentru Enable Chainout Adder sau
· PORT_UNUSED pentru Activați intrarea „negație” pentru adaosul chainout? parametru sau
Oprit CLOCK0
Selectați această opțiune pentru a activa modul sistolic. Acest parametru este disponibil când selectați 2 sau 4 pentru Care este numărul de multiplicatori? parametru. Trebuie să activați ieșirea Register a unității sumatoare pentru a utiliza registrele de întârziere sistolice.
Specifică semnalul de ceas de intrare pentru registrul de întârziere sistolic.
a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 55
8. Intel FPGA Multiply Adder IP Core 683490 | 2020.10.05
Parametru
Parametru generat de IP
Valoare
CLOCK2,
Care este sursa pentru intrare clară asincronă?
gui_systolic_d elay_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_systolic_d elay_sclr
NIMIC SCLR0 SCLR1
Valoare implicită
NICI UNUL
NICI UNUL
Descriere
Trebuie să selectați Enable Systolic Delay registers pentru a activa această opțiune.
Specifică sursa clară asincronă pentru registrul de întârziere sistolică. Trebuie să selectați Enable Systolic Delay registers pentru a activa această opțiune.
Specifică sursa clară sincronă pentru registrul de întârziere sistolică. Trebuie să selectați Enable Systolic Delay registers pentru a activa această opțiune.
8.6.7. Fila Conducte
Tabelul 36. Tab. Conducte
Configurație de canalizare a parametrilor
Parametru generat de IP
Valoare
Doriți să adăugați un registru pipeline la intrare?
gui_pipelining Nu, da
Valoare implicită
Nu
Vă rugăm să specificați
latenta
numărul de ceas de latență
cicluri
Orice valoare mai mare de 0 decât 0
Care este sursa pentru intrarea ceasului?
gui_input_late ncy_clock
CLOCK0, CLOCK1, CLOCK2
Care este sursa pentru intrare clară asincronă?
gui_input_late ncy_aclr
NIMIC ACLR0 ACLR1
Care este sursa pentru intrare clară sincronă?
gui_input_late ncy_sclr
NIMIC SCLR0 SCLR1
CLOCK0 NIMIC NIMIC
Descriere
Selectați Da pentru a activa un nivel suplimentar de registru de conducte pentru semnalele de intrare. Trebuie să specificați o valoare mai mare decât 0 pentru parametrul Vă rugăm să specificați numărul de cicluri de ceas de latență.
Specifică latența dorită în ciclurile de ceas. Un nivel al registrului conductei = 1 latență în ciclul de ceas. Trebuie să selectați DA pentru Doriți să adăugați registrul conductei la intrare? pentru a activa această opțiune.
Selectați Clock0 , Clock1 sau Clock2 pentru a activa și specifica semnalul de ceas de intrare al registrului conductei. Trebuie să selectați DA pentru Doriți să adăugați registrul conductei la intrare? pentru a activa această opțiune.
Specifică sursa clară asincronă a registrului pentru registrul pipeline suplimentar. Trebuie să selectați DA pentru Doriți să adăugați registrul conductei la intrare? pentru a activa această opțiune.
Specifică sursa clară sincronă a registrului pentru registrul suplimentar al conductei. Trebuie să selectați DA pentru Doriți să adăugați registrul conductei la intrare? pentru a activa această opțiune.
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 56
Trimiteți feedback
683490 | 2020.10.05 Trimiteți feedback
9. ALTMEMMULT (Multiplicator de coeficient constant bazat pe memorie) IP Core
Atenţie:
Intel a eliminat suportul pentru acest IP în versiunea 20.3 Intel Quartus Prime Pro Edition. Dacă nucleul IP din designul dvs. vizează dispozitivele din Intel Quartus Prime Pro Edition, puteți înlocui IP-ul cu LPM_MULT Intel FPGA IP sau să regenerați IP-ul și să vă compilați designul utilizând software-ul Intel Quartus Prime Standard Edition.
Nucleul ALTMEMMULT IP este folosit pentru a crea multiplicatori bazați pe memorie folosind blocurile de memorie onchip găsite în FPGA-urile Intel (cu blocuri de memorie M512, M4K, M9K și MLAB). Acest nucleu IP este util dacă nu aveți resurse suficiente pentru a implementa multiplicatorii în elemente logice (LE) sau resurse multiplicatoare dedicate.
Nucleul ALTMEMMULT IP este o funcție sincronă care necesită un ceas. Nucleul ALTMEMMULT IP implementează un multiplicator cu cel mai mic debit și latență posibil pentru un anumit set de parametri și specificații.
Următoarea figură arată porturile pentru nucleul IP ALTMEMMULT.
Figura 21. Porturi ALTMEMMULT
ALTMEMMULT
data_in[] sload_data coeff_in[]
rezultat[] result_valid load_done
sload_coeff
ceas sclr
inst
Informații înrudite Caracteristici la pagina 71
9.1. Caracteristici
Nucleul ALTMEMMULT IP oferă următoarele caracteristici: · Creează numai multiplicatori bazați pe memorie folosind blocuri de memorie pe cip găsite în
Intel FPGA · Suportă lățimea datelor de 1 biți · Acceptă formatul de reprezentare a datelor semnate și nesemnate · Suportă pipelining cu latență fixă de ieșire
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrat ISO 9001: 2015
9. ALTMEMMULT (Multiplicator de coeficient constant bazat pe memorie) IP Core 683490 | 2020.10.05
· Stochează mai multe constante în memoria cu acces aleatoriu (RAM)
· Oferă o opțiune pentru a selecta tipul de bloc RAM
· Suportă opționale porturi de intrare clare și de control al încărcării sincrone
9.2. Prototip Verilog HDL
Următorul prototip Verilog HDL este situat în Verilog Design File (.v) altera_mf.v în directorul de sinteză eda.
module altmemmult #( parametru coeff_representation = „SIGNED”, parametru coeficient0 = „NEUTILIZAT”, parametru data_representation = „SIGNED”, parametru destinat_device_family = „nefolosit”, parametru max_clock_cycles_per_result = 1, parametru number_of_coefficients = „AUT_O_, parameters = ram” total_latency = 1, parametrul width_c = 1, parametrul width_d = 1, parametrul width_r = 1, parametrul width_s = 1, parametrul lpm_type = „altmemmult”, parametrul lpm_hint = „unused”) ( ceas fir de intrare, fir de intrare [width_c-1: 1]coeff_in, fir de intrare [width_d-0:1] data_in, fir de ieșire load_done, fir de ieșire [width_r-0:1] rezultat, fir de ieșire result_valid, fir de intrare sclr, fir de intrare [width_s-0:1] sel, intrare wire sload_coeff, input wire sload_data)/* sinteza syn_black_box=0 */; modul final
9.3. Declarația componentelor VHDL
Declarația componentei VHDL este localizată în proiectarea VHDL File (.vhd) altera_mf_components.vhd în directorul librariesvhdlaltera_mf.
component altmemmult generic ( coeff_representation:string := „SIGNED”; coeficient0:string := „NEUSED”; data_representation:string := „SIGNED”; reason_device_family:string := „nefolosit”; max_clock_cycles_per_result:natural := 1; := 1; ram_block_type:= „AUTO”; „altmemmult”); port( clock:in std_logic; coeff_in:in std_logic_vector(width_c-1 downto 1) := (altele => '0'); data_in:in std_logic_vector(width_d-0 downto 1);
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 58
Trimiteți feedback
9. ALTMEMMULT (Multiplicator de coeficient constant bazat pe memorie) IP Core 683490 | 2020.10.05
load_done:out std_logic; rezultat:out std_logic_vector(width_r-1 downto 0); result_valid:out std_logic; sclr:in std_logic := '0'; sel:in std_logic_vector(width_s-1 downto 0) := (altele => '0'); sload_coeff:in std_logic := '0'; sload_data:in std_logic := '0'); componentă de capăt;
9.4. Porturi
Următoarele tabele listează porturile de intrare și de ieșire pentru nucleul IP ALTMEMMULT.
Tabelul 37. Porturi de intrare ALTMEMMULT
Numele portului
Necesar
Descriere
ceas
Da
Ceas de intrare la multiplicator.
coeff_in[]
Nu
Port de intrare coeficient pentru multiplicator. Mărimea portului de intrare depinde de valoarea parametrului WIDTH_C.
date_in[]
Da
Portul de intrare a datelor la multiplicator. Mărimea portului de intrare depinde de valoarea parametrului WIDTH_D.
sclr
Nu
Intrare clară sincronă. Dacă nu este utilizată, valoarea implicită este activă ridicată.
sel[]
Nu
Selectarea coeficientului fix. Dimensiunea portului de intrare depinde de WIDTH_S
valoarea parametrului.
sload_coeff
Nu
Port de intrare pentru coeficientul de sarcină sincron. Înlocuiește valoarea coeficientului selectată curent cu valoarea specificată în intrarea coeff_in.
sload_data
Nu
Port de intrare a datelor de încărcare sincronă. Semnal care specifică o nouă operație de înmulțire și anulează orice operație de înmulțire existentă. Dacă parametrul MAX_CLOCK_CYCLES_PER_RESULT are valoarea 1, portul de intrare sload_data este ignorat.
Tabelul 38. Porturi de ieșire ALTMEMMULT
Numele portului
Necesar
Descriere
rezultat[]
Da
Port de ieșire a multiplicatorului. Mărimea portului de intrare depinde de valoarea parametrului WIDTH_R.
rezultat_valid
Da
Indică când rezultatul este rezultatul valid al unei înmulțiri complete. Dacă parametrul MAX_CLOCK_CYCLES_PER_RESULT are valoarea 1, portul de ieșire result_valid nu este utilizat.
încărcare_terminat
Nu
Indică când noul coeficient sa terminat de încărcat. Semnalul load_done se afirmă când un nou coeficient s-a terminat de încărcat. Cu excepția cazului în care semnalul load_done este mare, nicio altă valoare a coeficientului nu poate fi încărcată în memorie.
9.5. Parametrii
Următorul tabel listează parametrii pentru nucleul IP ALTMEMMULT.
Tabelul 39.
WIDTH_D WIDTH_C
ALTMEMMULT Parametri
Nume parametru
Tip Necesar
Descriere
Număr întreg Da
Specifică lățimea portului data_in[].
Număr întreg Da
Specifică lățimea portului coeff_in[]. a continuat…
Trimiteți feedback
Ghid de utilizare a nucleelor IP Intel FPGA Integer Arithmetic 59
9. ALTMEMMULT (Multiplicator de coeficient constant bazat pe memorie) IP Core 683490 | 2020.10.05
Nume parametru WIDTH_R WIDTH
Documente/Resurse
![]() |
Intel FPGA Integer Arithmetic IP Cores [pdfGhid de utilizare FPGA nuclee IP aritmetice întregi, nuclee IP aritmetice întregi, nuclee IP aritmetice, nuclee IP |