Initialiseren Opzoektabel Verilog

C

carleethian

Guest
Ik wil een opzoektabel in een array te maken. De onderstaande code zal niet compileren, kan iemand laat het me weten wat ik verkeerd doe? Heeft de for-lus moeten in de altijd blok? Wat ik eigenlijk wil is dat de compiler om alle wiskunde te doen en te laden van de waarden in het geheugen ...
Code:
 localparam BIT_WIDTH = 8; localparam NUM_STATES = 255; reg [BIT_WIDTH-1: 0] State_Array [0: NUM_STATES-1]; for (i = 0; i <NUM_STATES; i = i + 1) te beginnen State_Array [i ] = 1000000 * i / (i +1); uiteindelijk altijd @ (....)
Weet iemand hoe je dit of misschien weet een betere manier doen?
 
Als u kunt gebruik maken van SystemVerilog, kunt u een initialisatie noemen een functie die het ingevulde array geeft.
Code:
 typedef beetje [BIT_WIDTH-1: 0] LUT_t [NUM_STATES]; LUT_t State_Array = LUT_init; functie LUT_t LUT_init (); foreach (LUT_init [i]) LUT_init [i] = 1000000 * i / (i +1); endfunction
 
Dus dat zal niet leiden tot een verdeler in de hardware? Ik probeer de verdeler te vermijden en al mijn vermenigvuldigt en deelt voor de compilatie te doen.
 
Alle vergelijkingen / functies gebruikt om een ​​constante uitdrukkingen te creëren genereren geen hardware. De compiler lost ze op uitwerking voor de synthese begint.
 
Hi Dave, zo is er niet een manier om dit te laten werken in Verilog? De enige manier die ik heb geïnitialiseerd geheugen is in reset, ben ik juist dat als ik zoiets voor de loop in mijn reset verklaring in mijn altijd blok, dat omdat het creëren van constante uitdrukkingen zal het niet synthetiseren in de hardware?
 
A voor lus uitgerolde door synthese gereedschap zolang het aantal herhalingen van de lus statisch bepaald tijdens het compileren. Een synthese tool zal dit doen, ongeacht dat het een Verilog te genereren voor-loop of een procedurele voor-loop-en verliesrekening. De lus variabele wordt dan een constante, en elke uitdrukking alleen gebaseerd op constanten niet om te zetten in hardware.
 
Hi Dave, Wont het beter zijn om dit te gebruiken voor-loop in test-bank en de berekende waarden te laden in RTL tijdens reset? AM nt zeker. Pl gids.
 
je wilt iets als een Eerste blok. bijvoorbeeld:
Code:
 eerste begin / / code einde
kunt u ook gebruik maken van $ readmemb, of $ readmemh, of $ readmem om de ROM te initialiseren uit een bestand. Zowel Xilinx en Altera ondersteunen dit.
 
Ik ben onder de indruk dat een eerste blok niet zal synthetiseren in Verilog ... Wat ik heb gedaan is dat ik een gebruikt voor lus om de waarden voor de opzoektabel te berekenen tijdens het resetten. Net als Dave zei, de compiler lijkt door het lopen voor loop en alle waarden op te slaan in het geheugen. Zo zal de wiskundige bewerkingen niet synthetiseren in de hardware. Dit blijkt in mijn totale LE tellen als het laag blijft met of zonder berekeningen. Of op zijn minst Ik denk dat het alle berekeningen te doen ... De array wordt niet weergegeven in mijn simulatie, dus ik ben er niet helemaal zeker dat het er is.
 
RAM / ROM initialisatie code in eerste blok zal worden geëerd door de synthese tool. Controleer dit bericht [URL = "http://myfpgablog.blogspot.com/2011/12/memory-initialization-methods.html"] geheugeninitialisatie methoden [/URL] voor enkele voorbeelden.
Ik ben onder de indruk dat een eerste blok niet zal synthetiseren in Verilog ... Wat ik heb gedaan is dat ik een gebruikt voor lus om de waarden voor de opzoektabel te berekenen tijdens het resetten. Net als Dave zei, de compiler lijkt door het lopen voor loop en alle waarden op te slaan in het geheugen. Zo zal de wiskundige bewerkingen niet synthetiseren in de hardware. Dit blijkt in mijn totale LE tellen als het laag blijft met of zonder berekeningen. Of op zijn minst Ik denk dat het alle berekeningen te doen ... De array wordt niet weergegeven in mijn simulatie, dus ik ben er niet helemaal zeker dat het er is.
 
Hallo Jim, ik ging door je blog nu en wil de inspanningen die u hebt genomen om het te handhaven waarderen. Reagarding geheugen instantiatie u hebt gesproken tov FPGA design. Kan u reageren op de ASIC tegenhanger?
 

Welcome to EDABoard.com

Sponsor

Back
Top