Forum: FPGA, VHDL & Co. LED blinken FPGA


von Sabine M. (zizo)


Lesenswert?

Hi,
ich habe seit paar Tage ein FPGA ED0 bekommen, ich möchte als Anfang ein 
LED blinken lassen.
beim Kompileren kein Fehler, aber nach der Configuration bleibt der LED 
aus:


LIBRARY ieee ;
USE ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;







ENTITY led1 IS
    PORT (
    CLCK :  in std_logic;
    LED  :  out std_logic );
END led1;


ARCHITECTURE blinken OF led1 IS

  signal valeur : std_logic_vector(10 downto 0):="00000000000";
  BEGIN
CLOCKGEN: process (CLCK)
variable cont : natural;



begin

  if rising_edge (CLCK) then

    if cont<1000000 then
      cont := cont + 1;
    else
      cont:=0;
      valeur <=valeur +'1';
      LED<= valeur(0);
    end if;

  end if;
end process CLOCKGEN;



  END blinken;

von Alexis S. (seraptin)


Lesenswert?

Wie waehre es wenn du

signal valeur : std_logic;

machst und in deiner Routine statt

>valeur <=valeur +'1';
>LED<= valeur(0);

valeur <= not valeur;
LED    <= valeur;

schreibst ?

von Sabine M. (zizo)


Lesenswert?

es hat leider nich gebracht..

von Johannes D. (balou)


Lesenswert?

Hm auf den ersten Blick kann ich keinen Fehler in deinem Code erkennen. 
Bin aber selbst noch recht neu in der Materie :-D. Ich bekam hier den 
Tip Variablen (erstmal) nicht zu nutzen...

Für deinen Counter würde ich einen integer nehmen...
Hab leider kein Board da zum Testen aber ich würde mal folgendes 
probieren...

Hast du auch die Pins des FPGAs richtig verbunden?
Kannst du die LED mit dem FPGA einfach nur einschalten.???

LIBRARY ieee ;
USE ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY led1 IS
    PORT (
    CLCK :  in std_logic;
    LED  :  out std_logic );
END led1;


ARCHITECTURE blinken OF led1 IS
begin
LED <= '1';
end blinken;

Gruß
balou

von Sabine M. (zizo)


Lesenswert?

ja der LED leuchtet

von Sabine M. (zizo)


Lesenswert?

CLCK habe ich zu CLK0 verbinden, ist das Richtig?

von Johannes D. (balou)


Lesenswert?

Ich kenne dein Board nicht.... und den FPGA nicht.....
Meist gibt es mehrere Takteingänge...
Wenn ich raten müsste würde ich den CLK0 nehmen...
Wieviel MHz hat der Quarz?

Warte ich schreibe mal schnell ein paar Zeilen, wie ich meine, dass es 
funktionieren müsste.... (aber wie gesagt ungetestet, habe keine 
Hardware hier)

von Alexis S. (seraptin)


Lesenswert?

Was ich noch vergessen habe:

Die Zuweisung "LED <= valeur;" sollte dann ausserhalb des Prozesses 
stehen.


Fuer den Taktteiler wuerde ich eventuell eine FSM aufbauen, das ist dann 
allerdings etwas komplizierter. Mit den Variablen hab ich jetzt selbst 
noch nicht gross gearbeitet und kenn deshalb die Fallstricke dabei auch 
nicht so genau.


Edit:

Fuer meine Variante sollte valeur natuerlich auch erstmal mit 0 
initialisiert werden. Ich wuerde dir auch raten dir einen Simulator wie 
z.B. Modelsim zuzulegen, der hilft bei solchen Problemen oft weiter.

von Johannes D. (balou)


Lesenswert?

--------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;



entity test is
    Port ( LED : out  STD_LOGIC;
           CLK : in  STD_LOGIC);
end test;

architecture Behavioral of test is
constant XTAL : integer := 50000000; --hier Frequenz des Quarzes 
eintragen
signal COUNTER : integer := 0;  --eventuell noch range 0 to xxx := 0;
signal LED_STATE : std_logic := '0';

begin
BLINKEN : process
begin

wait until rising_edge(CLK);
  if (COUNTER = XTAL -1) then
    COUNTER <= 0;
          LED_STATE <= not LED_STATE;
   else
    COUNTER <= COUNTER + 1;
  end if;
end process BLINKEN;
LED <= LED_STATE;

end Behavioral;

von Sabine M. (zizo)


Lesenswert?

hi,
danke für deine Code, ich habe das getestet , aber es funktioniert 
nicht, LED bleibt aus. mein Board ist DE0 der CLCK habe ich mit PIN_G2 
verbunden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> mein Board ist DE0 der CLCK habe ich mit PIN_G2 verbunden.
Hast du das ausgewürfelt oder geraten oder wie?
G2 ist eine Strippe des VGA-Ausgangs.... :-/
Die Doku sagt, der 50MHz-Oszillator sei an G21 und B12 angeschlossen.

von Sabine M. (zizo)


Lesenswert?

Hi,
ich habe nicht geraten, das steht im Pin Planner das G2 Clock0 ist. muss 
ich das G21 anschließen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Du mußt den Takteingang verwenden, an dem tatsächlich ein Takt 
anliegt. Und das sind bei deinem DE0-Board (lies mal die Doku dazu) 
nun mal G21 (CLK4) und B12 (CLK9).

von Sabine M. (zizo)


Lesenswert?

hi,
danke es hat geklappt TACKT auf G21 gelegt

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
Noch kein Account? Hier anmelden.