Ny på VHDL (Please help)

H

Hammer111

Guest
Hej jeg er ny til VHDL kodning og jeg har brug for lidt hjælp. Jeg forsøger at lave en trafik lys til biler og andre for fodgænger. Jeg har lavet denne kode, som fungerer fint med simulator, men da jeg prøvede at sætte det på chip fik jeg denne fejl: ERROR: Xst: 825 - "C: / sustav/test/test1.vhd" linje 49: Vent erklæring i en procedure, accepteres ikke. Jeg brugte FPGA FRA mit universitet (50 MHz kvartz), så jeg var nødt til at tælle 50000000 lav til høj overgange for at få 1 sekund. Her er koden: enhed test1 er Port (ur: i STD_LOGIC; nøgle: i STD_LOGIC, gule: ud STD_LOGIC: = '0 '; grøn: ud STD_LOGIC: = '1'; red: ud STD_LOGIC: = '0 '; Gæt : ud STD_LOGIC: = '1 '; pgreen: ud STD_LOGIC: = '0'); slutningen test1, arkitektur Behavioral af test1 er signal sek: heltal mellem 0 og 50: = 0; signal nsek: heltal mellem 0 og 50: = 0; begynde processen begynder vente, indtil nøglen = '1 '; for j i 1 til 38 loop for i i 1 til 50000000 loop vente, indtil ur = '1'; nsek
 
Tja ... I VHDL arbejde, er det ikke nok, at koden simulerer perfectky, skal du kontrollere, om koden er "Synthizable", hvilket betyder, at f det kan sættes på en FPGA eller omdannet til ASIC, mange synthsis værktøj gør dette ... Leonardo og de fleste for nylig præcision er eksempler Nu tænker, hvordan ville den FPGA venter, indtil du trykker på 1? den måde, du skrev det tyder på at trække, til loop og se, det er godt, hvis en mikroprocessor godt bære jobbet, men der er ingen processor! Prøv at bruge, hvis i stedet for at vente, "hvis knappen går man så gøre ..." Håber det hjælper ..
 
Det er koden for en computersimulering, ikke for en FPGA. Først, lad os trække den indre løkke ud og sætte det i en ny proces.
Code:
 proces begynder for j i 1 til 50000000 loop vente, indtil ur = '1 'nsek
 
GREAT IT fungerer, men at tælleren går til ∞, jeg vil have det til at begynde at tælle, når der trykkes på tasten, og til at stoppe efter 37 sekunder
Code:
 enhed count1 er Port (ur: i STD_LOGIC; nøgle: i STD_LOGIC, gule: ud STD_LOGIC: = '0 '; grøn: ud STD_LOGIC: = '1'; red: ud STD_LOGIC: = '0 '; Gæt: ud STD_LOGIC: = '1'; pgreen: ud STD_LOGIC: = '0 '); slutningen count1; arkitektur Behavioral af count1 er signal sek: heltal mellem 0 og 50: = 0; signal nsek: integer interval fra 0 til 50000000: = 1; begynde processen (ur) påbegyndes, hvis rising_edge (ur), så hvis nsek = 5 da - jeg sætter 5 til have lettere koden egnet til test (skal 50M) nsek
 
Når kodning i VHDL eller Verilog, så tænk på hardware. Du beskriver adfærd hardware. Tænk over, hvilke signaler laver, skal du ikke tænke på, hvordan løkken udføres. Når du fanger denne filosofi, vil du mestrer FPGA udvikling. I begyndelsen kan det se det samme, dog mere VHDL ting du gør mere vil du være opmærksom på, at VHDL ikke er en "software" udvikling sprog, men hardware.
 
Tak for replys. Det lykkedes mig at få "Circuit design med VHDL" af VA Pedroni. Jeg vil gå gennem alle eksempler. Og jeg løst lyskryds. Ony Jeg har 3 advarsler:
Code:
 enhed count1 er Port (ur: i STD_LOGIC; nøgle: i STD_LOGIC, gule: ud STD_LOGIC: = '0 '; grøn: ud STD_LOGIC: = '1'; red: ud STD_LOGIC: = '0 '; Gæt: ud STD_LOGIC: = '1'; pgreen: ud STD_LOGIC: = '0 '); slutningen count1, arkitektur Behavioral af count1 er signal sek: heltal mellem 0 og 50: = 0; signal nsek: heltal rækkevidde 1 til 50000000: = 1; signal x: std_logic: = '0 '; signal y: std_logic: = '0'; begynde processen (ur, nøgle, x, y) påbegyndes, hvis rising_edge (nøgle), så y
 
Advarsler vil ikke forhindre skabelsen af ​​lasten fil. Du vil stadig være i stand til at teste dit design på rigtig hardware. Men de gør opmærksom på potentielle problemer. De sidste to advarsler fortælle jer, at der var en redundans, og det var optimeret. Den første advarsel peger på mærkværdigheder af signalet "y". Som udstationeret, er y sat til '1 'én gang, og er aldrig ryddet tilbage til '0'.
 
Hej, ville u står over for et problem, hvis u simulere med lågen niveau netlist ... siden u har brugt initialisering for nogle af de signaler, som er ok for RTL simulation, men syntesen værktøj ignorerer initialisering os signaler og u kan se forskellige resultater i gate niveau netlist ..... prøv at tjekke ur gate-niveau simulering Regards, dcreddy
 
også før du skriver VHDL kode, få en god ide af forskellige udsagn, som kan syntetiseres, og som ikke kan syntetiseres. don? t forsøge at implementere algoritmen som en software-kode, analysere de algo, tegne et groft skematisk. identificere, hvordan denne algo vil blive konverteret til hardware. gør dit papir arbejde korrekt, før du starter kodning.
 
når u bruge HDL til at beskrive ur kredsløb, holde logiske gates og interconnect idé i tankerne, er det ikke den software, den skal opfylde reglerne om hardware
 
hi evrey en, jeg har brug for nogle VHDL-filer omkring 7 Segment counter (4 cifre). og Moris Mano CPU'er Design i VHDL. også enhver anden form for ALU er der wellcom. tnx til alle
 

Welcome to EDABoard.com

Sponsor

Back
Top