Hallo, guten Tag. Ich habe ein merkwürdiges verhalten mit diesme Programm am DE1-Board. Es funktioniert soweit. Es blinkt die LED0. Aber beim DE1-Board gehen dann die RXD, die TXD und bei den 4-Hex-Anzeigen sind alle Balken angeschaltet. Was habe ich falsch gemacht? Danke. GRuss ------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity blink1 is Port ( clk : in STD_LOGIC; led : out STD_LOGIC); end blink1; architecture Behavioral of blink1 is signal c : integer range 0 to 24999999 := 0; -- 0,5s bei 50MHz fosc signal x : std_logic:= '0'; begin process begin wait until rising_edge(clk); -- warten bis zum nächsten Takt if (c<24999999) then -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz c <= c+1; -- wenn kleiner: weiterzählen else -- wenn Zählerende erreicht: c <= 0; -- Zähler zurücksetzen x <= not x; -- und Signal x togglen end if; end process; led <= x; -- Signal x an LED ausgeben end Behavioral; -------------------------------
Peter Bierbach schrieb: > Aber beim DE1-Board gehen dann die RXD, die TXD Was bedeutet das? Peter Bierbach schrieb: > Port ( clk : in STD_LOGIC; > led : out STD_LOGIC); Clock als Eingang Ein Signal als Ausgang. Was soll dann deiner Meinung nach die 7 Segment Anzeige tun? Je nach dem, was du am FPGA eingestellt hast, können die Leitungen mit einem Pull-up auf logisch '1' gezogen sein. Wie genau das bei Altera aussieht weiß ich nicht, ich bin von der Xilinx Welt. Deinen weiteren Beiträgen zu Folge befindest du dich ganz, ganz am Anfang. Ich würde dir sehr Nahe legen ein Buch zur Hand zu nehmen. Meistens ist das gut und deutlich erklärt. Btw. Bei VHDL handelt es sich um KEIN Programm, sondern um eine HARDWAREBESCHREIBUNG. Diese Unterscheidung ist sehr wichtig, um das Verhalten eines FPGAs zu verstehen! Grüße
Jup danke. Darum findet meine Programmlogik kein Ziel. Ich suche ein gebrauchtes Buch für Anfänger für VHDL. Danke. Gruss
Noch eine Frage dazu: Hier blinken die beiden LED0/1. Warum sind da die Hexzahlen aus und die LED für TXD und RXD? ------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity blink1 is Port ( clk : in STD_LOGIC; led : out std_logic); end blink1; architecture Behavioral of blink1 is signal c : integer range 0 to 24999999 := 0; -- 0,5s bei 50MHz fosc signal x : std_logic:= '0'; begin process begin wait until rising_edge(clk); -- warten bis zum nächsten Takt if (c<24999999) then -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz c <= c+1; -- wenn kleiner: weiterzählen else -- wenn Zählerende erreicht: c <= 0; -- Zähler zurücksetzen x <= not x; -- und Signal x togglen end if; end process; led <= x; -- Signal x an LED ausgeben end Behavioral; -------------------------------- Danke. Gruss
Hmm.. ein falsches Programm oben drin 16.04.2014 21:19, dieses ist richtig ---------------------- library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity blink is port ( clk : in std_logic; led : out std_logic_vector (1 downto 0) ); end entity blink; architecture blink_arch of blink is signal state : std_logic_vector(1 downto 0); signal terminal_count : std_logic; signal count : unsigned(24 downto 0) := (others => '0'); begin led <= state; process begin wait until rising_edge(clk); count <= count + 1; if count > 30000000 then terminal_count <= '1'; count <= (others => '0'); else terminal_count <= '0'; end if; end process; process begin wait until rising_edge(clk); if terminal_count = '1' then case state is when "01" => state <= "10"; when "10" => state <= "01"; when others => state <= "01"; end case; end if; end process; end architecture blink_arch; ------------------------------------------
Peter Bierbach schrieb: > Warum sind da die Hexzahlen aus und die LED für TXD und RXD? Ich will dir nicht auf den Schlipps treten, aber bei diesem Satz fehlt schon wieder irgendwie was?! Peter Bierbach schrieb: > Hmm.. ein falsches Programm Es ist kein PROGRAMM!!!! Nenn es Design, Hardwarebeschreibung, Logik, ... aber nicht Program!
Du hast in deinem UCF-file eine Zuordnung eingegeben, die die Ausgänge des FPGA den angeschlossenen Bauelementen zuordnet. Möglicherweise ist hier der Fehler. Gruss Robert
Danke. Aber wo finde ich die Zuordnung bei Quartus2 wenn ich ein Projekt erstelle? Gruss
Peter Bierbach schrieb: > Danke. > Aber wo finde ich die Zuordnung bei Quartus2 wenn ich ein Projekt > erstelle? > > Gruss Unter Assignments -> Pins. Dazu musst du aber in den Schaltplan schauen. Am Anfang ist es aber deutlich einfacher wenn du dir das UCF-File von einem der Beispielprojekte nimmst. Noch sehr viel besser wäre es allerdings wenn du einfach einmal das "PDF Tutorial for VHDL Users" durcharbeiten würdest (findest du unter Help). Dort ist eigentlich alles erklärt. Das mit den leuchtenden LEDs könnte auch an den Einstellungen für unbenutzte Pins liegen. Normalerweise ist sind die auf Eingang mit Weak Pullups konfiguriert. Das kann man bei den Einstellungen für das Device ändern. Hier einfach herumzuspielen könnte allerdings im schlimmsten Fall zu Beschädigungen auf dem Board führen, z.B. wenn Ram und FPGA unterschiedliche Pegel auf ein Pin geben (-> Buskonflikt). Besser wäre es die unbenutzte Peripherie im Toplevel zu deaktivieren.
Peter Bierbach schrieb: > Darum findet meine Programmlogik kein Ziel. > Ich suche ein gebrauchtes Buch für Anfänger für VHDL. Für Einsteiger ein recht gutes Buch ist "VHDL Synthese" von J. Reichardt und B Schwarz. Ist eines der wenigen deutschsprachigen Bücher und führt dich langsam an die Denkweise von Hardwarebeschreibungssprachen heran. Für den Einstieg reicht eine eine der älteren Auflagen aus, die findet man auch gebraucht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.