-
Thread
Aktionen bei steigender und fallender Flanke durchführen
Guten morgen Ich bin immer noch dabei mich in VHDL einzugewöhnen (Xilinx, Spartan 3). Im Moment bin ich dabei, einen Übertrager für SPI zu schreiben. Damit der SPI Takt unabhängig vom Systemtakt verwendet werden kann und weil ich auch ganz gerne einen
Regeln muß fundiert begründet werden können. [/pre] Warum schaffe ich es, in meinen Designs diese Postulate meist einzuhalten? Und, falls ich eine Regel verletze, immer einen guten Grund dafür habe?
-
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
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
Frage zu variable counter : std_logic_vector(2 downto 0) := "100";
case; counter := counter + 2; end if; end process; end Behavioral; [/vhdl]
Reinhard J. schrieb im Beitrag #3417782: > in meinem ersten VHDL Projekt Und das fängt schon mal gut an: [vhdl] variable state : std_logic_vector(1 downto 0); variable counter : std_logic_vector(2 downto 0) := "100"; [/vhdl] Siehe den
-
Thread
State Machine zwei oder ein Prozess
HDL_Coding_Techniques/state_machines/state_machines_2.vhd ein konkretes Beispiel. Der erste Prozess enthält ein [vhdl]rising_edge(clk)[/vhdl] Statement (und "clk" in der Sensitivity-Liste), dem zweiten Prozess fehlt dieses Statement; er ist daher kombinatorisch (hier steht dann "state" in der Sensitivity-Liste).
rising_edge()'-Scopes. Der asynchrone Reset ist der einzige Fall, wo man so etwas tun darf ohne vom VHDL-Gott mit einem Blitz gesteinigt zu werden. Ob das in anderen Fällen noch synthesefähig ist, habe ich nie probiert. Es gibt keinen rationalen Grund, das zu tun.
-
Thread
Entwicklung eines RAM mit Interface - Probleme mit der Synthese/Impl.
Leben nicht: [vhdl] if(falling_edge(nWE) or falling_edge(nOE)) then [/vhdl] Alles, das mit _edge() oder 'event beschrieben wird, ergibt ein Flipflop. Und das, was du da beschreibst, ist ein "Dual-Clock-Input-Flipflop
; [/vhdl] BTW: Du kannst Eingängen keinen Defaultwert geben: [vhdl] nCS : in std_logic := '1'; -- low-active Chip-Enable of the SRAM device; defaults to '1' (inactive)
-
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]
-
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
Aufruf einer CLK-gesteuerten FSM mittels einer Buttonflanke
auf dem Board An-Aus-An-Aus-An-Aus gehen, also 101010. Bisher dachte ich da an folgendes: [vhdl] Procedure Sequenz ( signal CLK_2Hz : in STD_LOGIC; signal State : inout BIT_VECTOR; signal LED1 : out STD_LOGIC) is begin if (CLK_2Hz='1' and CLK_2Hz'event) then
Software wird die Schritt für Schritt x-mal nacheinander (sequentiell) abgearbeitet. In Hardware (VHDL) produziert eine for-Schleife aber x-mal die selbe Baugruppe. In der Hardware wird die komplette Schleife zum selben Zeitpunkt abgearbeitet.
-
Thread
Unterschied zwischen cast und convert bei VHDL Datentypen?
Was wird denn bei "cast" und "convert" von VHDL Datentypen anders gemacht? Danke :D
darauf aufbauende wie signed und unsigned nicht einfach nach Integer casten. Und ja, die meisten VHDL-Tutorials sind grottenschlecht und auf dem Stand von VHDL-87 oder VHDL-93.
-
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
FPGA-Benutzung als Bastler sinnfrei?
Seite vorbei. Ist quasi meine kleine VHDL-Bibel geworden. http://www.lothar-miller.de/s9y/
Miller an einigen inhaltlichen Punkten herummäkelt. Das liegt aber wohl an seinen Dogmen^W äh Postulaten...
-
Thread
Taktsignal in der Mitte der "High-Phase" abtasten
bist an der falschen Ecke unterwegs. Du weißt es nur noch nicht... Mit rising_edge() werden in VHDL keine Taktabfragen sondern einfach nur D-Flipflops beschrieben. Hier nochmal meine Postulate: [pre] Ein Design (insbesondere ein Anfängerdesign) hat genau 1 Takt, der immer auf dieselbe Flanke
-
Thread
State machine für SPI
schrieb im Beitrag #2357400: [vhdl] if (rising_edge(clk)) then -- eine STEIGENDE Flanke von clk SPI_SCK <= clk AND SPI_CLK_EN; -- --> was meinst du: welchen Pegel hat clk an dieser Stelle IMMER? [/vhdl] Mir ist
Ich finds in VHDL angenehm, signale und variablen klein, constante, typen und generics groß zu schreiben. Daran erkenne ich immer obs etwas veränderliches oder konstantes ist. Ist in VHDL ein bisschen geschmacksache
-
Thread
Kein Bild bei eigenem VGA
'0'; end if;[/vhdl]
Ja genau denn da [vhdl]signal x : integer range 0 to 16; signal y : integer range 0 to 20;[/vhdl] kann x hier nur maximal 16 sein [vhdl]if(x < 639) then x <= x + 1; end if;[/vhdl] und y nur maximal 20 [vhdl
-
Thread
Hilfe bei PWM Takteiler
Coolrunner II XC2C64A, der Eingangstakt beträgt 150 MHz. Ich bin absoluter Anfänger bezüglich VHDL und komme dort leider grade nicht weiter. Vielen Dank im voraus.
> Anhängend mein Code. So wie du mit dem PWMClk generiert man keine Takte. Such mal nach "Postulate" hier im Forum. Eines davon ist: es gibt (für Anfänger) nur 1 einzigen Takt im Design. Und das ist der Quarzoszillator, der aussen angeschlossen ist. > Beide wait until .. in einen Process packen
-
Thread
FPGA dazu geeignet?
Dann solltest du bald mit den ersten Spielereien auf dem FPGA anfangen. Und mein Vorschlag: nimm VHDL (dann bekommst du hier am ehesten Hilfe) und such hier im Forum nach "Postulate", dann findest du schon mal die üblichsten Anfängerprobleme... ;-)
-
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
Assembler wieder auf dem Weg nach vorn Gesperrt
was andere schreiben hat mit dem 8-Bit-MSR-Thema nichts zu tun. Und es natürlich klar, daß sein Postulat "es get nicht besser" von anderen wiederlegt werden muß. Auf seiner Forums-Homepage nennt er sein Interesse an Naturwissenschaft. Ein solcher würde dieses C-Programm selber schreiben, um nachzuweisen
Erfahrung in 10 Jahren Hobby/Studium/Beruf: Sehr viel C, viel C++, AVR-Assembler, MIPS-Assembler, VHDL, Softwareentwicklung für Supercomputer, Skriptsprachen fürs Web. Und du? Ein paar Hobby-Projekte in Assembler, Ende der Fahnenstange. Moby A. schrieb im Beitrag #4381848: > Wie kommst Du auf den