Forum: FPGA, VHDL & Co. DE0 Nano Fragen


von Felix L. (flex)


Angehängte Dateien:

Lesenswert?

Hallo,

heute habe ich endlich mein DE0 Nano von Terasic bekommen.
Wenn ich jetzt aber das DE0 Nano Control Panel öffne, kommt folgernder 
fehler obwohl Quartus schon installliert ist: Please make sure Quartus 
is installed! Wo ist da der Fehler.

Mein zweite Frage geht über das angehängte Bild. Wenn ich in Quartus auf 
Programmer gehe, kann ich zwei verschiedene "Speicher" auswählen. Eines 
davon ist der EPCS, aber was ist der andere?

Gruß
Felix

von P. K. (pek)


Lesenswert?

EP4CE22 ist der Cyclone...

von Felix L. (flex)


Lesenswert?

Peter K. schrieb:
> EP4CE22 ist der Cyclone...

Stimmt! Steht ja auch drauf, danke.

Wenn ich das "Programm" in den Cyclone speichere ist es weg wenn ich die 
Versorgungsspannung trenne und wenn ich es in den EPCS Speichere bleibt 
es?

Gruß

von user (Gast)


Lesenswert?

Felix L. schrieb:
> Wenn ich das "Programm" in den Cyclone speichere ist es weg wenn ich die
> Versorgungsspannung trenne und wenn ich es in den EPCS Speichere bleibt
> es?
Ja genau

von Dimi S. (Gast)


Lesenswert?

EP3C25 ist auch Cyclone!

Du sollst aber EP4CE22 auswählen, weil genau dieser
auf DE0-Nano verbaut ist.

MfG

von Felix L. (flex)


Lesenswert?

Dimi S. schrieb:
> EP3C25 ist auch Cyclone!
>
> Du sollst aber EP4CE22 auswählen, weil genau dieser
> auf DE0-Nano verbaut ist.
>
> MfG

Ja,
aber wenn ich den EP4CE22 auswähle, dann ist das Programm weg, nachdem 
ich die Stromversorgung trenne.

Ist es bei Quartus möglich wie bei Xilinx ISE ein UCF-File zu erstellen 
und dort die Pins zu vergeben?

Gruß

von Felix L. (flex)


Lesenswert?

Nachtrag:

Ich habe es jetzt geschafft, die Pins zuzuweisen. Allerdings ist mir was 
aufgefallen, dass ich auch bei einem Xilinx CPLD Board gesehen habe. 
Wenn ich eine einfache UND Verknüpfung machen T1 und T2 = LED0, dann 
leutet die LED dauerhaft, wenn kein Taster gedrückt ist. Sobald ein 
Taster gedrückt wird, geht die LED aus.

von low (Gast)


Lesenswert?

lowaktiv

von tim (Gast)


Lesenswert?

Wahrscheinlich sind die Taster active low...

von klausr (Gast)


Lesenswert?

Die Tasten sind active-low (werden als nach GND geschaltet), siehe S.12 
im users manual.

von Felix L. (flex)


Lesenswert?

klausr schrieb:
> Die Tasten sind active-low (werden als nach GND geschaltet), siehe S.12
> im users manual.

Danke, habs jetzt auch gefunden. Noch eine Frage, wie bekomme ich jetzt 
das Programm auf den nichtflüchtigen Speicher?

mfg
Felix

von Mike (Gast)


Lesenswert?

Felix L. schrieb:
> klausr schrieb:
>> Die Tasten sind active-low (werden als nach GND geschaltet), siehe S.12
>> im users manual.
>
> Danke, habs jetzt auch gefunden. Noch eine Frage, wie bekomme ich jetzt
> das Programm auf den nichtflüchtigen Speicher?
>
> mfg
> Felix

S.11 in der Anleitung lesen ("Configuring the EPCS16 device
"). Googlen nach "serial flash loader" liefert dir AN370 von Altera in 
der weitere Informationen stehen.

von Felix L. (flex)


Lesenswert?

Danke. Hat jetzt geklappt.

von Felix L. (flex)


Lesenswert?

Hallo,

ich habe nun die ersten erfolgreichen Beschreibungen gemaacht und diese 
funtionieren auch.
Jetzt habe ich mit folgender Beschreibung ein Problem:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.std_logic_arith.all;
4
use ieee.std_logic_unsigned.all;
5
6
entity zaehler is
7
  port(
8
      CLK: in std_logic;
9
      LED: out std_logic_vector(7 downto 0)
10
     );
11
end zaehler;
12
13
architecture verhalten of zaehler is
14
  signal counter:    std_logic_vector(7 downto 0);
15
  signal teiler:      std_logic_vector(22 downto 0);  
16
begin
17
18
  counterprocess: process(CLK)
19
  begin
20
    if rising_edge(CLK) then
21
      if teiler < "10111110101111000010000000" then
22
        teiler <= teiler + 1;
23
      else
24
        teiler <= (others => '0');
25
        counter <= counter + 1;
26
      end if;
27
    end if;
28
  end process;
29
  
30
  LED <= counter;
31
  
32
end verhalten;

Diese Beschreibung soll einen Zähler darstellen, aber leider leuchtet 
eine LED nur sehr schwach (denke im 50Mhz Takt).

Gruß
Felix

von Pimmel (Gast)


Lesenswert?

"10111110101111000010000000" hat  26 Zahlen.
Dein teiler nur 23;)

von tim (Gast)


Lesenswert?

Hallo Felix,

Kannst du das Design den synthetisieren?
Ich bin mir nicht sicher ob folgende Zeile erlaubt ist:
counter <= counter + 1;

Ich würde hier sowas schreiben:
counter <= std_logic_vector(unsigned(counter)+1);

Ausserdem finde ich es lesbarer, wenn man für den teiler statt eines 
std_logic_vectors ein integer oder natural nimmt.

Schau dir mal dieses Beispiel an:
Beitrag "Blinker problem"

von Felix L. (flex)


Lesenswert?

Ja,
das Design lässt sich synthetisieren.

Pimmel schrieb:
> "10111110101111000010000000" hat  26 Zahlen.
> Dein teiler nur 23;)

50Mhz entspricht der oben genannten Binarzahl.

Gruß

von pimmel(30 cm lang) (Gast)


Lesenswert?

Ja, aber dein teiler erreicht diese  50000000 nie, deswegen schmeist 
quartus deine if statement raus, weil es ja sowieso nie erfüllt wird. 
Beachte ,dass  du nach erfolgreichen synthese genau Null LE veraendest.

Mach aus deinem teiler std_logic_vector(25 downto 0) ;)

von Andreas K. (zero_ahnung)


Lesenswert?

wenn ich mich recht entsinne sind da kleine fehler bei der 
Vektoraddition im std_logic drin:

müsste es nicht z.b. so aussehen:

Teiler <= Teiler + '1';


außerdem vergleichst du einen Vektor mit 26 elementen mit einem Vektor 
mit 23 Elementen! bist du dir sicher das das seine richtigkeit hat?


edit: da war jemand schneller

von Felix L. (flex)


Lesenswert?

Danke!
Jetzt klappt es(schneller):
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.std_logic_arith.all;
4
use ieee.std_logic_unsigned.all;
5
6
entity zaehler is
7
  port(
8
      CLK: in std_logic;
9
      LED: out std_logic_vector(7 downto 0)
10
     );
11
end zaehler;
12
13
architecture verhalten of zaehler is
14
  signal counter:    std_logic_vector(7 downto 0);
15
  signal teiler:      std_logic_vector(23 downto 0);  
16
begin
17
18
  counterprocess: process(CLK)
19
  begin
20
    if rising_edge(CLK) then
21
      if teiler < "100110001001011010000000" then
22
        teiler <= teiler + 1;
23
      else
24
        teiler <= (others => '0');
25
        counter <= counter + 1;
26
      end if;
27
    end if;
28
  end process;
29
  
30
  LED <= counter;
31
  
32
end verhalten;
Nur die letzte LED wird nicht benutzt.

Gruß

von Delta (Gast)


Lesenswert?

Felix L. schrieb:
> Nur die letzte LED wird nicht benutzt.

Na dann ist ja alles gut...

von Felix L. (flex)


Lesenswert?

Delta schrieb:
> Felix L. schrieb:
>> Nur die letzte LED wird nicht benutzt.
>
> Na dann ist ja alles gut...

Sie leuchtet schon, aber sehr dunkel. Ich habe leider kein Oszi, aber 
ich denke mal dass das das 50Mhz sind.

mfg

von Delta (Gast)


Lesenswert?

Felix L. schrieb:
> Sie leuchtet schon, aber sehr dunkel. Ich habe leider kein Oszi, aber
> ich denke mal dass das das 50Mhz sind.
Soll die LED denn mit 50Mhz blinken?

Ich empfehle dir ausserdem das durchzulesen:
Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"

von Felix L. (flex)


Lesenswert?

Delta schrieb:
> Felix L. schrieb:
>> Sie leuchtet schon, aber sehr dunkel. Ich habe leider kein Oszi, aber
>> ich denke mal dass das das 50Mhz sind.
> Soll die LED denn mit 50Mhz blinken?
>
> Ich empfehle dir ausserdem das durchzulesen:
> Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"

Nein,

die LED sollte eigentlich aus sein oder mitzählen, die stelle 2^7.

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.