Întrebări despre pipelined matrice de multiplicare

H

hbsustc

Guest
Bună, vreau să proiecteze un Baugh-Wooley pipelined matrice de multiplicare ca această cifră.Am finalizat o parte din FA şi cu poarta acum, dar nu stiu cum de a-şi realiza pe clanţă parte pentru parţiale de produse.

Adică, dacă vreau să folosiţi "genera" declaraţie, cum se scrie codul de astfel posibilitatea de a selecta număr corespunzător de latches dat parţiale pentru produs?adică există 8 latches pentru P0, 7 latches pentru P1.În special pentru P5 ~ P9, acesta devine mai incomod.Mulţumesc în avans.
Ne pare rău, dar ai nevoie de autentificare pentru a vizualiza acest ataşament

 
Eu am un cod pentru conducte de multiplicare.Am fost folosind-o într-o platformă de reconfigurare rapida unele speciale porouse calcul.Dacă doriţi să-mi scrieti.i va trimite-l.
Dar, în general, "Generează Declaraţia" nu este bună alegere pentru sinteza.Încercaţi un alt drum!

 
Vă mulţumim pentru sursă.Cred că am nevoie de ea.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Zâmbi" border="0" />
 
Max Zerox100, am avut noroc, folosind Verilog "genera 'la mine in Xilinx ISE proiecte.Ea mi-a salvat de multe ore de muncă.Aţi avut ghinion cu asta?

 
da.mai ales imbricate genera sttement!şi, desigur, depinde de cum te-ar genera.Dacă un simplu circuit este OK.
Orice fel este codul meu:
Dacă nu ar ajuta cu ceva scrie-mi ce vrei sa faci exact.Eu vă va ajuta.
---------------------------------
bibliotecă IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;

entitate pipelined_multiplier este

generic (Marime: integer: = 16; nivel: integer: = log (dimensiunea));

port (
R:
In std_logic_vector (mărimea-1 downto 0);
b: in std_logic_vector (mărimea-1 downto 0);
clk: in std_logic;
PDT: out std_logic_vector (2 * dimensiune-1 downto 0));
sfârşitul pipelined_multiplier;

exemplar de arhitectura este pipelined_multiplier
levels_of_registers este de tip array (nivel-1 downto 0) a
nesemnate (2 * dimensiune-1 downto 0);
semnal a_int, b_int: nesemnate (mărimea-1 downto 0);
semnal pdt_int: levels_of_registers;

începe
PDT <= std_logic_vector (pdt_int (level-1));

proces (clk)
începe
dacă clk'event şi clk = "1", apoia_int <= nesemnate (a);
b_int <= nesemnate (b);

pdt_int (0) <= a_int * b_int;
i de la 1 până la nivelul-1 bucla
pdt_int (i) <= pdt_int (i-1);
sfârşitul bucla;
sfârşit dacă;
sfârşitul procesului;
sfârşitul exemplar;

 
Ahh, VHDL.Sunt folosind Verilog cu XST.Am umplut unele destul de mare FPGAs cu Verilog "genera" mai logică fără probleme.Nu-mi amintesc vreodată folosind imbricate genera bucle,
cu toate acestea, astfel încât poate ca nu s-au declanşat problemele pe care le-aţi văzut.Sau poate a Verilog compilator nu are ca bug-ul.

Dacă se poate documentul de imbricate genera probleme, ar trebui să-l trimiteţi Xilinx astfel încât să poată repara.De obicei, ele-mi repari raportat bug-uri,
în cele din urmă.

 
Sunteţi sigur!Ai folosit Generate declaraţie în Verilog!!!!Nu am auzit nici un lucru despre Generate declaraţie în verilog!!!Puteţi să vă împărtăşesc codul?

 
"Generaţi" a fost adăugat în Verilog limba în 2001.

Ne pare rău, nu am nici mici proiecte interesante, care utilizează "genera".Nu pot să-mi arăt mare de proiecte, pentru că acestea au fost facut pentru un client.Cu toate acestea, aveţi posibilitatea să căutaţi-vă XST Ghidul utilizatorului pentru cuvântul cheie "endgenerate", şi veţi găsi câteva mici (unexciting) exemple.

Pentru mai multe informaţii, luaţi o copie a IEEE Std 1364-2005 (în curs Verilog limbă standard), sau orice moderne Verilog manual care include Verilog 2001.

 
Pot să vă spun cu caldura ce ne este proiectul dumneavoastră?
Acest lucru nici un fel de cod verilog pentru pipelined de multiplicare.Sper ca-l va ajuta.
-------------------------------------------------- --
modul pipelined_multiplier (A, B, clk, PDT);
parametru size = 16, la nivel = 4;
input [size-1: 0] a;
input [size-1: 0] b;
input clk;
ieşire [2 * dimensiune-1: 0] PDT;
reg [size-1: 0] a_int, b_int;
reg [2 * dimensiune-1: 0] pdt_int [level-1: 0];
integer i;

aloca PDT pdt_int = [level-1];

mereu @ (posedge clk)
începe

a_int <= a;
b_int <= b;
pdt_int [0] <= a_int * b_int;
for (i = 1; i <nivel; i = i 1)
pdt_int <= pdt_int [i-1];
final
endmodule

 
Max Zerox100, FPGA meu mai mare de proiecte au axat beamforming de transmită şi să primească antenă arrays.
Au folosit de multe secţiuni paralele de procesare, astfel încât "genera" o declaraţie foarte mult scurtată de Verilog cod.

 

Welcome to EDABoard.com

Sponsor

Back
Top