www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Falsche Hardwareausgabe mit XC2C256


Autor: Julian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe in VHDL einen Frequenzteiler programmiert, der auf der Hardware 
(Design Kit CoolRunnerII) eine LED blinken lassen sollte. Nur leuchtet 
die LED durchgehend.
1.8432MHz auf 1Hz ==> 2^n = 1.8432MHz / 1Hz ==> n ca. 21
Zählt bis auf 2097152 und gibt Übertrag

VHDL-Code

process(clk)    -- Vorteiler
begin
  if rising_edge(clk) then
    rco <= '0';
    counter <= counter + 1;
    if counter = 2097152 then
      rco <= '1';
      counter <= 0;
    end if;
    led <= rco;
  end if;
end process;

UCF - File
NET "clk"  LOC = "P38";
NET "led"  LOC = "P92"  ;

Bitte um Hilfe.
julian



Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Julian

Tja, die LED wird nur für einen Takt (1.8432 MHz) auf '1' gesetzt, sonst 
auf '0'. Ausserdem brauchst du bei ein 2^n Zähler keinen Overflow 
explizit programmieren, das machen die alleine. Probier mal das.

process(clk)    -- Vorteiler
begin
  if rising_edge(clk) then
    counter <= counter + 1;
    if counter = 0 then
      rco <= not rco;
    end if;
    led <= rco;
  end if;
end process;


MFG
Falk

Autor: Julian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Die LED leuchtet immer noch durchgehend trotz der Änderung.


signal counter : integer range 0 to 2097152;
signal rco : std_logic;
begin
process(clk)    -- Vorteiler
begin
  if rising_edge(clk) then
    counter <= counter + 1;
    if counter = 0 then
      rco <= not rco;
    end if;
    led <= rco;
  end if;
end process;

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal:
signal counter : integer range 0 to 2097152;
signal rco : std_logic;
begin
process(clk)    -- Vorteiler
begin
  if rising_edge(clk) then
    counter <= counter - 1; -- minus statt plus
    if counter = 0 then
      counter <= 2097152;   -- neuer Startwert
      rco <= not rco;
    end if;
    led <= rco;
  end if;
end process;

Bei 50MHz Systemclock sollten 50Mhz/2/2097152 = 12Hz rauskommen. Das 
sollte man flimmern sehen.

Rick

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Julian

>Hallo,
>Die LED leuchtet immer noch durchgehend trotz der Änderung.

Hast du wirklich das neue Design compiliert und geladen? Sind die Pins 
richtig zugeordnet?
Der Code unten sollte laufen, das Einzige was noch dazwischenfunken kann 
ist deine counter Definition. Nimm mal lieber

signal counter : std_logic_vector(21 downto 0);

MFG
Falk

Autor: Julian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten, jetzt funktioniert's.

Komischerweise hab ich auf das Board ein paar mal das selbe Programm 
raufgeladen und auf einmal hats geklappt.
Vielleicht liegt das an der JTAG USB  Schnitstelle.

julian

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Julian

>Komischerweise hab ich auf das Board ein paar mal das selbe Programm
>raufgeladen und auf einmal hats geklappt.
>Vielleicht liegt das an der JTAG USB  Schnitstelle.

Nö, der CPLD braucht einen Reset, denn die Coolrunner II sind eigentlich 
FPGAs + FLASH in einem IC. Die laden beim Power-Up ganz schnell und 
heimlich ihre Konfiguration. Wenn die duch die Programmierung per JTAG 
geändert wird, muss sie aber wieder in den "FPGA im CPLD-Pelz" geladen 
werden. Sollte die Software eigentlich machen, da gibts glaub ich ein 
paar Häckchen in den Optionen.

MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.