LED blinken FPGA

OP #1776230
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;
#1776368
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
#1776392
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)
#1776397
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.
#1776399
--------------------------------------------------------
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;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.