Verilog Terwijl lus, For-lus is synthesisable??

natuurlijk zijn wanneer u schrijf ze op een manier waarop ze moeten worden
een simpele aanwijzing is
omvatten geen vertraging in de lussen als vertragingen zullen niet worden synthesisable

 
For (i = 0, i <10, i )
Ik denk dat dit werkt .....
waar dit ......
For (i = 0, i <k, i )
waarbij k een variabele ......... veranderingen tijdens de simulatie .....
Ik denk niet dat het zal worden synthesisable ........

Reacties please .....

 
ankit12345 wrote:

For (i = 0, i <10, i )

Ik denk dat dit werkt .....

waar dit ......

For (i = 0, i <k, i )

waarbij k een variabele ......... veranderingen tijdens de simulatie .....

Ik denk niet dat het zal worden synthesisable ........Reacties please .....
 
Ja!
Lus is synthetiseerbare alleen als "k" is constant variabele ..
nummer moet worden beperkt tot 32bit waarde!!of v moet gedefinieerde variabele lengte 32bit of 64bit terwijl verklaren ...

 
Ja,

Het zal synthetiseerbare als en slechts als 'k' moet constant

 
de for-lus en de while-lus zijn afhankelijk van het type design libaraires ur gebruikt om zoom
i mean FPGA

 
Het is synthetiseerbare maar het is altijd geadviseerd om voor de lussen niet mogen worden gebruikt in RTL codering.Dit is omdat het veel middelen verbruikt (zoals oppervlakte etc.etc).Maar u kunt het gebruiken in de gedrags codering becuse we synthetiseren niet gedrags-codes.

 
In verilog, synthetiseerbare van de for-lus en de while-lus hangt af van welke tools die u gebruikt.

Maar het is beter dont gebruiken in RTL omdat het replica van hardware weerspiegelt.

 
met behulp van lussen (voor en tijdens) verbruikt veel hardware en de toenmalige ontstaat totale frequentie verlies.daarom is het raadzaam om te voorkomen dat de lussen in RTL codering.en de synthese tool mojor speelt ook een rol.

 
voor Verilog HDL, zoals de naam al zegt, is een taal om een circuit te beschrijven.zodat je niet kan afhangen van de synthese tool om uw route te genereren voordat u het ontwerp van het circuit itselfe.
zoals de code
For (i = 0, i <k, i )

Heb je deze schakeling?Als u nog niet, hoe zou je kunnen vragen een mathine voor het genereren van een circuit voor u?

 
eigenlijk voor lus is synthetiseerbare omdat we de constat dat is het einde van de lus voor (1 = 0; i <= 10 worden mentionong; i )

maar in het geval van de tijdens het dynamisch; ex: while (i <k)
we dont weet de waarde van k
wanneer u verlenen constant wordt gesynthetiseerd.ankit12345 wrote:

r niet ??????
 
anilkumarv wrote:

Het is synthetiseerbare maar het is altijd geadviseerd om voor de lussen niet mogen worden gebruikt in RTL codering.
Dit is omdat het veel middelen verbruikt (zoals oppervlakte etc.etc).
Maar u kunt het gebruiken in de gedrags codering becuse we synthetiseren niet gedrags-codes.
 
Het is duidelijk dat men moet voorzichtig zijn om loops te maken voor synthetiseerbare (voornamelijk zorgen dat lus beëindiging op de set een constante).
Ik zou niet eens dat ze "niet mag worden gebruikt" ...zogenaamd omdat ze "overmatige gebied".Zij hebben hun plaats in de vereenvoudiging van codering.Een voorbeeld zou zijn het uitvoeren van rand-detectie in een matrix van waarden, bijvoorbeeld:

integer i;

altijd @ (posedge clk)
beginnen
for (i = 0, i <NUMBER_OF_PORTS, i = i 1)
beginnen
port_was <= port_is ;
if (port_was == 1'b0 & & port_now == 1'b1)
port_edge_hi_detected <= 1'b1;
anders
port_edge_hi_detected <= 1'b0
eindigen
eindigen

Merk op dat het altijd @ verklaring niet kan worden binnen de FOR-lus.
Dit is een handige codering stijl.Hij verbruikt niet meer dan logisch als ik had geknipt en geplakt kopieën van de clausules ...EN ...Het laat de constante als een parameter, zodat de code kan expand / collapse voor bepaalde gebruiken.NUMBER_OF_PORTS heeft op te lossen om een constante tijdens het compileren.

Deze dagen, moet elke synthese tool iets waard verwerken dit soort gebruik met geen enkel probleem.

 
De eenvoudige zaak is dat als u in staat zijn om na te denken dan de uitvoering synthese motor ook kunnen denken

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />
 
Ik heb een soortgelijke vraag over for-lussen.
Laten we zeggen dat ik schrijf:
Code:

beginnen

for (i = 0; i <7; i = i 1)

beginnen

mem [i 1] = mem ;

eindigen

mem [7] = 0;

eindigen
 
Dit is synthesisable, maar niet nuttig code bij het gebruik van het blokkeren van opdracht.Het heeft het effect van het kopiëren van mem [0] om mem [1] ..mem [6] en zeroing mem [7].Een HDL-lus is nooit "opeenvolgend uitgevoerd", is het sequentieel wordt geëvalueerd, maar uitgevoerd in parallel.

Gebruik nonblocking "<=" opdracht, zou de code vormen in feite een verschuiving register, dat klinkt meer betekenis naar mijn mening.Overschrijven van mem [7] zou nog steeds voordoen, echter.

 
FVM wrote:

Dit is synthesisable, maar niet nuttig code bij het gebruik van het blokkeren van opdracht.
Het heeft het effect van het kopiëren van mem [0] om mem [1] ..
mem [6] en zeroing mem [7].
Een HDL-lus is nooit "opeenvolgend uitgevoerd", is het sequentieel wordt geëvalueerd, maar uitgevoerd in parallel.Gebruik nonblocking "<=" opdracht, zou de code vormen in feite een verschuiving register, dat klinkt meer betekenis naar mijn mening.
Overschrijven van mem [7] zou nog steeds voordoen, echter.
 
OK dus begrijpen dat alleen tijdens de simulatie dit gaat achtereenvolgens worden uitgevoerd, tenzij ik een nonblocking opdracht.

rectificatie van mijn code, zodat overschrijven mem [7] makes sense ...

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />Code:

beginnen

vermogen van <= mem [0];

for (i = 0; i <7; i = i 1)

beginnen

mem <= mem [i 1]; / / changed zijkanten

eindigen

mem [7] <= 8'b00000000;

eindigen
 

Welcome to EDABoard.com

Sponsor

Back
Top