www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Quartus II Clock


Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Kollegen!

Ich bin gerade dabei ein VHDL Design auf einen FPGA zu "brennen". Leider 
blinken die Lampen nicht und leuchten auch nicht, wenn ich fixe Werte 
zuweise. Ich vermute, dass es daran liegt, dass ich die CLK Frequenz 
nicht eingestellt habe.

Die Frage ist WO IST DIE VERDAM... CLK Frequenz einzustellen. Ich finde 
nichts.


Danke
Freshman

Autor: Boris M. (borism)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste doch mal deinen VHDL-Code - dann werden Sie geholfen :)

> Die Frage ist WO IST DIE VERDAM... CLK Frequenz einzustellen.

Die ist meist fix, d. h. liegt an einem Pin an. Wenn du eine andere 
Frequenz haben willst gibt es verschiedene Wege diese zu erzeugen... 
Aber zeig doch erstmal deinen Code...

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity ioctrl is
  
  port (clk48    : in    std_logic;                     -- 48 MHz system clock 
        reset_n  : in    std_logic;                     -- asynchronous reset
        led      : out   std_logic_vector(6 downto 0);
        led2     : out   std_logic); 

end ioctrl;

architecture rtl of ioctrl is

  constant C_ENCOUNTVAL : std_logic_vector(14 downto 0):= "100101100000000";
  
  --signal s_busfsm  : t_busfsm;
  --signal s_enctr   : std_logic_vector(14 downto 0);
  --signal s_10khzen : std_logic;
  signal s_led       : std_logic_vector(7 downto 0);
  
begin  -- rtl

  -----------------------------------------------------------------------------
  --
  -- Generate 10 KHz enable signal.
  --
  -----------------------------------------------------------------------------
  --p_slowen: process (clk48, reset_n)
  --begin  -- process p_slowen
  --  if reset_n = '0' then                   -- asynchronous reset (active low)
  --    s_10khzen <= '0';
  --    s_enctr <= (others => '0');
  --  elsif clk48'event and clk48 = '1' then  -- rising clock edge
  --    -- Enable signal is inactive per default.
  --    s_10khzen <= '0';
  --    if s_enctr /= C_ENCOUNTVAL then
  --      -- As long as the terminal count is not reached: increment the counter.
  --     s_enctr <= unsigned(s_enctr) + conv_unsigned(1,1);
  --    else
        -- When the terminal count is reached, set enable flag and reset the
        -- counter.
  --      s_enctr <= (others => '0');
  --      s_10khzen <= '1';
  --    end if;
  --  end if;
  --end process p_slowen;
  -----------------------------------------------------------------------------
  --
  -- Generate state machine to put out and to read in data from the bus in a
  -- loop.
  --
  -----------------------------------------------------------------------------
  p_busfsm: process (clk48, reset_n)
  begin  -- process p_busfsm
    if reset_n = '0' then                   -- asynchronous reset (active low)
      s_led <= "10000001";
      
    elsif clk48'event and clk48 = '1' then  -- rising clock edge
      --if s_10khzen = '1' then
        s_led <= "11110000";--not s_led;
      --end if;
    end if;
  end process p_busfsm;
led <= s_led(6 downto 0);
led2<= s_led(7);
end rtl;

Ich hab schon so viel rausgestrichen wir möglich. Geht immer noch 
nichts.

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> und leuchten auch nicht, wenn ich fixe Werte
>> zuweise. Ich vermute, dass es daran liegt, dass ich die CLK Frequenz
>> nicht eingestellt habe.

nein, ganz sicher nicht, bei fixen vektoren ist der takt völlig 
unwichtig, du könntest ihn sogar komplett streichen.


viel warscheinlicher ist wohl, dass du garnicht fest gelegt hast auf 
welchen pins die LEDs liegen(z.b. ucf file bei xilinx) oder du hast die 
falschen gewählt.

Autor: gonzo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn weder reset_n noch der Takt kommen, passiert hier immer noch 
nichts. Es geht aber auch noch einfacher:

Schreib in den Body Deiner architecture zwischen begin und end nur

led <= "101001";
led2 <= '1';

Dann sind die Ausgänge garantiert fix.

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine gute Idee. Werde den Takt rausnehmen.

Wie lege ich bei Altera die Pins fest? Ich habe bis jetzt nur mit Xilinx 
gearbeitet.

Quartus finde ich ganz gut, besonders in Verbindung mit Nios II aber es 
ist wesentlich komplizierter als ISE oder Modelsim (kann vermutlich auch 
mehr).

Danke für Eure Tips.

Freshman

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quartus finde ich persönlich viel übersichtlicher und 
einsteigerfreundlicher bei trotzdem höherer Komplexität.

Aber das ist wohl Ansichtssache, hab halt damit angefangen und war beim 
Umstieg erstmal geschockt ;)

Falls du nicht weißt wie was geht, Altera hat ein komplettes 
Trainingsprogramm im netz als Videos wo wirklich jeder Schritt genau 
erklärt wird.


Zur Pin Frage : oben im menü -> assignments -> pins

musst natürlich aus den Dokumenten zum Board raus suchen welcher pin 
welche led ansteuert.

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Done, it works.

Der Mustercode von der Firma war ohne Pinbelegung. Jetzt geht es. Danke 
für Eure Hilfe.

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.