-
Thread
Einige Fragen zu VHDL
VHDL" Es ist müßig, diese Grundlagenfragen zu beantworten, denn du hast noch gar keinen Plan von VHDL (das ist nicht nicht böse gemeint), deshalb könntest du mit irgendwelchen Antworten nichts anfangen
Ich vergaß zu erwähnen: Im den ersten paar Monaten deiner VHDL-Karriere brauchst du *keine Variablen und keine Schleifen*.
-
Thread
in VHDL 50MHz auf 2 Mhz runterteilen?
Suche mit den Begriffen "Anfänger Postulate" hier im Forum: http://www.mikrocontroller.net/search?query=anf%C3%A4nger+postulate&forums[]=9&max_age=-&sort_by_date=1
Pulsweite herauskommt. Dafür gibt es dann Assertions und Text-IO und den ganzen Sprachumfang von VHDL...
-
Thread
Countdown-Zähler mit anschließender Tonausgabe
Und kaum zu glauben: jeder einzelne Fehler wurde gemacht und sehr oft gemacht... Zum Takt: [vhdl] elsif rising_edge(takt) then : elsif( rising_edge(co_e)and ZUSTAND = B) then : elsif rising_edge(entprell_clk) then [/vhdl] Asynchrones und sogar kombinatorisches
, dann könnte man einfach da draus hierher kopieren. Das Problem ist eigentlich, dass alles über VHDL schon geschrieben wurde. Und das bisschen, das im Zusammenhang von VHDL mit FPGAs zu beachten ist, das passt locker auf ein Faltblatt... > an die Multiplikatoren ... verteilen. An welche?
-
Thread
Counter mit Taster - Map fehlermeldung
? Ja. Nur so kann ein Design von den Tools sinnvoll verwaltet werden... Hier nochmal meine Postulate für FPGA-Anfänger: [vhdl] Ein Design (insbesondere ein Anfängerdesign) hat genau 1 Takt, der immer auf dieselbe Flanke aktiv ist. Es gibt keinen (und schon gar keinen asynchronen) Reset. Externe
Flipflops einsynchronisiert. Jede Abweichung von diesen Regeln muß fundiert begründet werden können. [/vhdl]
-
Thread
Verständnisfrage Prozess
Lothar Miller schrieb im Beitrag #2033881: > Sieh dir den Beitrag "vhdl-richtlinien f. synthese?" mal an. oder ein paar Grundlagen [[VHDL]]
zähler <= zähler + 1; > end if; > end if; > end process; > [/vhdl]
-
Thread
VHDL, DFC77, riesen Problem!
Bevor ich es vergesse: [VHDL] if(timer_hh > 5) then sync <= '1'; else sync <= '0'; end if;[/VHDL] Hier kommt es zum gleichen Problem, sobald ich diesen Code UNTER den anderen, funktionierenden, schiebe
sync <= '1'; else sync <= '0'; end if; end process; end verhalten; [/VHDL]
-
Thread
Code synthetisierbar?
Sieh dir mal die Lösung deines Kollegen an: http://www.mikrocontroller.net/topic/204287 Die Postulate gelten auch für dich... ;-) [vhdl] dff1 : PROCESS(clk_1ms, reset) -- Erstes D-FF zum synchronisieren von dcfsig BEGIN IF(reset = '0') THEN
rising_edge(clk_1ms) THEN temp3 <= temp2; END IF; END PROCESS; [/vhdl] Das geht kürzer: http://www.mikrocontroller.net/topic/126583 BTW: Du brauchst nicht die ganzen Resets. Glaub mir... http://www.mikrocontroller.net/topic/199081
-
Thread
Anfängerfrage: Laufzeit von Prozessbefehlen
anderes ab? > Ja, als Simulations- und Anfängerkrücke :) Wobei das ganze IMHO eher > verwirrt. VHDL für Simulation verwendet Funktionen, die VHDL für > Synthese nicht unterstützt! Im Grunde ist es ganz anders: VHDL ist eine Simulationssprache, mit der man Hardware simuliert und verifiziert, wobei
Übrigens beschreibt Lothar einen synchronen Prozess (der reagiert also nur auf den Clock) gern so: [vhdl] process begin wait until rising_edge(clk); ... end process; [/vhdl] Gebräuchlicher ist: [vhdl] process(clk) begin if rising_edge(clk) then ... end if; end process; [/vhdl
-
Thread
Ganze Zahl in Ziffern zerlegen
end if;[/vhdl] machen und dann weiterzählen lassen und eine Schranke setzen wie [vhdl]if counter - speicher = 100 then spektrum(neu) <= spektrum(neu) + 1; end if;[/vhdl] sprich wenn er 100 weitergezählt hat
Nachtrag: >>> 2.) Mit einem wait until ist natürlich keine Sensitivliste nötig bzw. erlaubt: [vhdl] process begin wait until rising_edge(clk); : end process; [/vhdl]
-
Thread
Einsynchronisieren mit hörerer Taktrate sinnvoll?
hw_trig_in_synch <= '0'; end if; end if; end process; end Behavioral; [/vhdl] Ich denke so müsste ich nun innerhalb von ca. 125 ns (etwas mehr wenn das Triggersignal ungünstig ankommt) immer in der clk_slow (8 MHz) Domäne angekommen sein, oder?
end if; end process; hw_trig_in_synch <= hw_trig_in_synch_int; end Behavioral; [/vhdl] Weiß jemand, wie kurz eigentlich ein Spike beim Spartan3 sein darf??? Grüße, Anguel
-
Thread
Counter Problem
[vhdl] if aufwaerts then zaehler2 <= zaehler2 + 1; else zaehler2 <= zaehler2 - 1; end if; zaehler <= "000000000000000"; [/vhdl] Wofür
hintereinander. Das ist also eher ein Zufallsgenerator... :-) Zusammenfassend nochmal meine Postulate für den geneigten VHDL-Anfänger: [pre] Ein Design (insbesondere ein Anfängerdesign) hat genau 1 Takt, der immer auf dieselbe Flanke aktiv ist. Es gibt keinen (und schon gar keinen asynchronen
-
Thread
vhdl-richtlinien f. synthese?
/categories/35-Einsynchronisieren Für Xilinx gibts den XST User Guide, in dem synthetisierbare VHDL-Beschreibungen definiert sind.
Für Xilimx gibt es die XST User Guide, dort steht drinnen welche VHDL Konstrukte unterstützt werden. Ansonsten gibt es die allgemeine Norm IEEE 1076.6, welche Konstrukte definiert, die ein VHDL Compiler für die RTL Umsetzung beherrschen soll.
-
Thread
Fehler: kann ihn als Anfänger nicht verstehen
treten zu wollen, so habe ich den Eindruck, dass Du noch nicht ganz verstanden hast was ein Prozess in VHDL beschreibt. Aus der Sicht des Softwerkers sieht das so aus als würden hier die Befehle in dem Prozess nacheinander abgearbeitet. Dem ist aber nicht so. Wenn man in einem Prozess den Konstrukt [vhdl
,clk1s, clk500ms) : [/vhdl] Als Tipp: leih dir mal das Buch "VHDL-Synthese" aus....
-
Thread
EA DOG-M initialisieren
muss, und dazwischen immer ein bisschen warten, aber irgendwie fidne ich da keinen start um es in VHDL zu realisieren. Wenn einer so etwas schon in VHDL hat und es verständlich ist, fänd ichdas toll. Danke !!!
Ohne jetzt den ganzen Code angeschaut zu haben: [vhdl] : rising_edge (clock) : rising_edge (delay) : [/vhdl] So macht man das nicht. Hier nochmal meine Postulate für Anfänger: Es gibt nur 1 Takt im Design. Es wird nur 1 Flanke dieses Takts
-
Thread
Fehler durch Signalabgreifen
[vhdl] elsif rising_edge(start) then : elsif rising_edge(global_clk) and counter>0 then : elsif rising_edge(help) then [/vhdl] Böse, böse: viele verschiedene Takte.
; end if; [/vhdl] Gruß, SuperWilly
-
Thread
Uart in Vhdl -- Anfänger
Moin, ich versuche seit zwei Tagen in VHDL eine UART zu entwickeln ( nur Daten empfangen ). Bin ein Anfänger in sachen FPGA und VHDL. Ich habe nun den untenstehenden Code geschrieben und in Modelsim getestet wo er wunderbar funktioniert.
---- end if; end process; Data <= RX_reg; run <= start; end Behavioral; [/vhdl] mfg
-
Thread
numeric_std verwenden sehe ich ein. Konkret
Default-Zuweisung erreichen, dass das Register im Power-Up-Fall den richtigen Wert annimmt, also mit [vhdl] signal ls_richtiger_ini_wert_bei_X : std_logic := '0'; [/vhdl] VG, SuperWilly
>Das war keine Argumentation sondern ein Postulat Ceterum censeo Carthaginem esse delendam ;O) Gruß, SuperWilly
-
Thread
Dipl. Inf. vs Dipl. Ing.
, dafür brauchts keinen > Dipl.-Inf. Was ein Glück, dass jeder Fachinformatiker Assembler und VHDL kann.
Was möchte uns Anteg Emigrant denn nun mitteilen? Was ist sein Postulat? Welche Motivation treibt ihn? Mit freundlichem Interesse Gast
-
Thread
Der vhdl-Schnipsel-Anfängerfragen Thread
[vhdl] use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; [/vhdl] besser die genormte [vhdl]use IEEE.numeric_std.ALL;[/vhdl]
Stichwort: Gated Clock). Das mußt du dann zwar gut im Auge behalten, aber machen kann man das schon: [vhdl] aclk <= gclk when run='1' else '0'; [/vhdl]