Forum: FPGA, VHDL & Co. Farbe weiß kann ich nicht unterbringen im VGA640x480 beim FPGA


von Peter B. (funkheld)


Lesenswert?

Hallo, guten Tag.
Ich habe ein Bild 640x480 mit den senkrechten Farbbalken rot/grün/blau.
In der letzten Reihe möchte ich weiß unterbringen:
---if (hcounter> 479 and hcounter < 640) then---

Bekomme das nicht hin.
Es kommt der Fehler das ich die Vectoren schon verwende.

Danke.
Gruss

[vhdl]
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.ALL;

entity vga_timing is
port(
  clk50_in  : in std_logic;
  hs_out    : out std_logic;
  vs_out    : out std_logic;

  red_out   : OUT STD_LOGIC_VECTOR(3 downto 0);
  green_out : OUT STD_LOGIC_VECTOR(3 downto 0);
  blue_out  : OUT STD_LOGIC_VECTOR(3 downto 0)
  );
end vga_timing;

architecture behavioral of vga_timing is

signal clk25    : std_logic:='0';
signal hcounter : unsigned (9 downto 0):=to_unsigned(0,10);
signal vcounter : unsigned (9 downto 0):=to_unsigned(0,10);

begin

-- generate a 25Mhz clock
process (clk50_in)
begin
  if clk50_in'event and clk50_in='1' then
    clk25 <= not clk25;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if (hcounter > 0 and hcounter < 160) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if (hcounter> 159 and hcounter < 320) then
        green_out<="1000";
      else
        green_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if (hcounter> 319 and hcounter < 480) then
        blue_out<="1000";
      else
        blue_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if hcounter >= (639+16) and hcounter <= (639+16+96) then
      hs_out <= '0';
    else
      hs_out <= '1';
    end if;

    if vcounter >= (479+10) and vcounter <= (479+10+2) then
      vs_out <= '0';
     else
      vs_out <= '1';
    end if;

--- horizontal counts from 0 to 799
    hcounter <= hcounter+1;

    if hcounter = 799 then
      vcounter <= vcounter+1;
      hcounter <= to_unsigned(0,10);
    end if;

--- vertical counts from 0 to 524
    if vcounter = 524 then
      vcounter <= to_unsigned(0,10);
    end if;
  end if;
end process;

end behavioral;
[vhdl]

von Micha (Gast)


Lesenswert?

Schau mal ob du das ganze nicht auch in einen Prozess bekommst statt in 
drei bzw. vier.

Gruß

von Peter B. (funkheld)


Lesenswert?

Ich habe jetzt alles in einem Prozeß:

[VHDL]
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.ALL;

entity vga_timing is
port(
  clk50_in  : in std_logic;
  hs_out    : out std_logic;
  vs_out    : out std_logic;

  red_out   : OUT STD_LOGIC_VECTOR(3 downto 0);
  green_out : OUT STD_LOGIC_VECTOR(3 downto 0);
  blue_out  : OUT STD_LOGIC_VECTOR(3 downto 0)
  );
end vga_timing;

architecture behavioral of vga_timing is

signal clk25    : std_logic:='0';
signal hcounter : unsigned (9 downto 0):=to_unsigned(0,10);
signal vcounter : unsigned (9 downto 0):=to_unsigned(0,10);

begin

-- generate a 25Mhz clock
process (clk50_in)
begin
  if clk50_in'event and clk50_in='1' then
    clk25 <= not clk25;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if (hcounter > 0 and hcounter < 160) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;

      if (hcounter> 159 and hcounter < 320) then
        green_out<="1000";
      else
        green_out<="0000";
      end if;

     if (hcounter> 319 and hcounter < 480) then
        blue_out<="1000";
      else
        blue_out<="0000";
      end if;

     if (hcounter> 479 and hcounter < 640) then
        red_out<="1000";
  green_out<="1000";
        blue_out<="1000";
      else
        red_out<="0000";
        green_out<="0000";
        blue_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if hcounter >= (639+16) and hcounter <= (639+16+96) then
      hs_out <= '0';
    else
      hs_out <= '1';
    end if;

    if vcounter >= (479+10) and vcounter <= (479+10+2) then
      vs_out <= '0';
     else
      vs_out <= '1';
    end if;

--- horizontal counts from 0 to 799
    hcounter <= hcounter+1;

    if hcounter = 799 then
      vcounter <= vcounter+1;
      hcounter <= to_unsigned(0,10);
    end if;

--- vertical counts from 0 to 524
    if vcounter = 524 then
      vcounter <= to_unsigned(0,10);
    end if;
  end if;
end process;

end behavioral;
[VHDL]

Es wird aber nur der letzte Balken Weiß angezeigt. Warum?

Wenn ich den letzten Balken (weiß) rausnehme, sind die Balken 
rot/grün/blau/schwarz da.

Danke.
Gruss

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> if (hcounter> 479 and hcounter < 640) then
>         red_out<="1000";
>   green_out<="1000";
>         blue_out<="1000";
>       else
>         red_out<="0000";
>         green_out<="0000";
>         blue_out<="0000";
>       end if;

- Wie werden if-Bedingungen abgearbeitet?
- Was passiert bei deinem else?

Wenn du beide Fragen beantworten kannst, bist du der Lösung auf die 
Schliche gekommen ;)

von Peter B. (funkheld)


Lesenswert?

Jup, danke.
Dieses "else" muß am schluss verschwinden.
Jetzt ist es so wie es sein soll.

Warum nimmt man für die Farbbalken keine Einzelprozesse?

Gruss

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Es kommt der Fehler das ich die Vectoren schon verwende

Peter Bierbach schrieb:
> Warum nimmt man für die Farbbalken keine Einzelprozesse?

Das hat nichts mit den Farbbalken zu tun, sondern damit das du in 
verschiedenen Prozessen mit dem gleichen Vektor arbeitest. Du kannst 
deinen Vektor zwar in verschiedenen Prozessen auslesen, aber nur in 
einem auf ihn schreiben.

von Peter B. (funkheld)


Lesenswert?

Ja danke für die Info.

Gruss

von Peter B. (funkheld)


Lesenswert?

Hallo, guten Tag.
Ich möchte die Farbbalken jetzt mit einem "switch 0-3" einzeln schalten:
sw   : in  std_logic_vector(3 downto 0);

Und damit die Farben verändern:
---------------------------------
process(sw)
begin
  case sw is
    when "0001" => ?
    when "0010" => ?
    when "0100" => ?
    when "1000" => ?
 end case;
end process;
---------------------------------

Wie sehen jetzt bitte die Variablen aus für red/green/blue/white für die 
obige Schleife? Wie müssen die Varibalen umgewandelt werden, damit die 
hier bitte erkannt werden:
if (hcounter > 0 and hcounter < 160) then
  red_out<="1000";
  ......

Danke.
Gruss

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Wie sehen jetzt bitte die Variablen aus für red/green/blue/white für die
> obige Schleife?

Bitte beachten das ein case keine Schleife ist.
Bei Hardwarebeschreibungssprachen solltest du weiterhin einen default 
Fall mit einbeziehen, da sonst unerwartete Zustände eintreten können.
Was passiert z.B. wenn du an deinem Switch die Werte 0 und 2 high setzt? 
Das wäre der Fall 0101 und der wird mit keiner deiner Bedingungen 
abgefangen.
In VHDL sähe das so aus:
http://de.wikibooks.org/wiki/VHDL#case

Peter Bierbach schrieb:
> Wie müssen die Varibalen umgewandelt werden, damit die
> hier bitte erkannt werden:

Wenn ich es richtig verstehe möchtest du das die einzelnen Balken 
entweder ihre Farbe haben wenn der entsprechende Schalter high ist, bzw. 
schwarz sind, wenn er low ist richtig?
Wenn das so ist, dann nehme deinen Code von oben und füge einfach in das 
if eine weitere Bedingung ein.
1
      if ((hcounter> 159 and hcounter < 320) and (Switch(1) == 1)) then
2
        green_out<="1000";
3
      else
4
        green_out<="0000";
5
      end if;

PS: Wenn du VHDL postest, dann benutze bitte die 
Formatierungsmöglichkeiten des Forums:
http://www.mikrocontroller.net/articles/Formatierung_im_Forum

Das macht alles deutlich übersichtlicher.

von W. M. (thematsche)


Lesenswert?

> PS: Wenn du VHDL postest, dann benutze bitte die
> Formatierungsmöglichkeiten des Forums:
> http://www.mikrocontroller.net/articles/Formatierung_im_Forum
>
> Das macht alles deutlich übersichtlicher.

Hehe, daran war diesmal Lothar "schuld". :)
Beitrag "Re: Beim Projekt erstellen mit Quartus2 alle LED ausschalten"

Wie du siehst, hat er ja brav am Anfang und am Ende
eingefuegt.

 An Peter:

Am Anfang muss
 und am ende muss
 stehn.
Der Schraegstrich ist wichtig.

PS: wie escaped man denn normal die klammern?

: Bearbeitet durch User
von peter (Gast)


Lesenswert?

Hallo, guten Tag.
Es kommt diese Fehlermeldung:
Error (10500): VHDL syntax error at vga_timing.vhd(39) near text "=";
expecting "(", or an identifier, or  unary operator

Die 4 Schalter habe ich so angelegt:  "switch : in std_logic_vector(3 
downto 0)"
Und so ist der Aufruf:
Zeile 39 : if ((hcounter> 159 and hcounter < 320) and (Switch(0) == 1)) 
then

Wo bitte ist der Fehler?

Danke.
Gruss

von Micha (Gast)


Lesenswert?

W. M. schrieb:
> Wie du siehst, hat er ja brav am Anfang und am Endeeingefuegt.

Stimmt, überlesen ;)

peter schrieb:
> if ((hcounter> 159 and hcounter < 320) and (Switch(0) == 1))

Sorry, ich nutze eigentlich Verilog, deswegen das ==.
Versuche es mal mit
1
if ((hcounter> 159 and hcounter < 320) and (Switch(0) = 1))

Sowas kannst du aber auch gut hier nachlesen:
http://de.wikibooks.org/wiki/VHDL#if

Gruß

von Klaus F. (kfalser)


Lesenswert?

Micha schrieb:
> Versuche es mal mit
1
if ((hcounter> 159 and hcounter < 320) and Switch(0) 
2
> = 1))

wohl eher mit
1
if (hcounter> 159 and hcounter < 320 and Switch(0) = '1')

Aber Peter,
bitte, bitte, bitte:
Das sind nun wirklich allereinfachste Grundlagen von VHDL wie man den 
Vergleichsoperator schreibt und wie man std_logic Werte schreibt.
Dazu braucht es kein Buch, da genügen schon die Tutorials im Internet.

von peter (Gast)


Lesenswert?

Au man...

Daran habe ich nicht gedacht.
Ich dachte wenn man Zahlen eingibt das die als gesetztes Bit richtig 
umgesetzt werden.

Danke.
Gruss

von peter (Gast)


Lesenswert?

jup danke.
Die 4 Farbbalken lassen sich jetzt durch die 4 Schiebeschalter ein-und 
ausschalten.

Ich werde jetzt versuchen ab oben links 10 rote kleine Kästchen und 8 
grüne kleine Kästchen in eine Reihe sichtbar zu machen, die dann die 
LED's auf dem DE1 ersetzen sollen.

Vielleicht als Anfänger ein bißchen zu groß..., aber mal schauen.

Gruss

von Peter B. (funkheld)


Lesenswert?

Warum soll man die 4 Farbbalken in einem Prozeß machen?

Was ist der nachteil wenn ich wegen der Übersichtlichkeit für mich für 
jeden Balken ein Prozeß mache?

Danke.
Gruss

von Lattice User (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Warum soll man die 4 Farbbalken in einem Prozeß machen?
>
> Was ist der nachteil wenn ich wegen der Übersichtlichkeit für mich für
> jeden Balken ein Prozeß mache?
>

Du kannst einen Prozess wie in der Vorlage für jede Farbe haben, aber 
dann musst du Balken bei denen man mehr als eine Farbe setzen muss (z.B. 
weiss, gelb etc) auf alle Prozesse verteilen.

von Duke Scarring (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Warum soll man die 4 Farbbalken in einem Prozeß machen?
Es wurde ja schon gesagt, daß ein Signal nur aus einem Prozess heraus 
geschrieben werden kann. Stell Dir den Prozess wie einen kleinen Chip 
vor: die Signale die gelesen werden, sind die Eingänge und die Signale, 
die geschrieben werden, sind die Ausgänge.

Und, wie Du vielleicht bereits gelernt hast: Man verbindet Ausgänge nie 
direkt miteinander!
Entweder verwendet man dafür Tristatesignale (High-Z), die gibt es aber 
innerhalb vom FPGA nicht (mehr), oder es gibt eine weitere Einheit: 
den Multiplexer.

Wenn Du alles in einen Prozess schreibst, wird der Multiplexer einfach 
mit in den Prozess eingebettet.

Wenn Du es übersichtlich haben willst, verwende Leerzeilen, ordentliche 
Einrückung und aussagekräftige Kommentare.

Duke

von Peter B. (funkheld)


Lesenswert?

Ja danke.
1 Signal - 1 Prozeß.

Ich habe jetzt 3 4-Eckige Leuchdioden r/g/b ab oben links gemäß den 
unteren Angaben. Funktioniert auch, weil es 3 verschiedene Farben 
sind(Pins).

Wie kann ich es jetzt schalten das ich für die 3 nur die Farbe rot 
nehme?
Es sollen mal 10 rote LeD werden.

Danke.
Gruss

-------------------------
      if (hcounter >=  20 and hcounter < 35) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;

      if (hcounter >=  40 and hcounter < 55) then
        green_out<="1000";
      else
        green_out<="0000";
      end if;

      if (hcounter >=  60 and hcounter < 75) then
        blue_out<="1000";
      else
        blue_out<="0000";
      end if;
---------------------------

von Micha (Gast)


Lesenswert?

Sag mal, versuchst du dir ein Display aus LEDs zu basteln?

von Peter B. (funkheld)


Lesenswert?

Ne...., ich möchte die LED auf den VGA bildlich darstellen (größer), so 
wie sie auf dem DE1 sind und dann die als Anzeige benutzen.

Vielleicht kannst du meine Frage oben drüber beantworten?
Danke.

Gruss

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Wie kann ich es jetzt schalten das ich für die 3 nur die Farbe rot
> nehme?
green_out<="1000";
und
blue_out<="1000";
einfach durch
red_out<="1000";
ersetzen. Solange das im selben Prozess passiert ist das ja kein 
Problem.

Wenn du später willst das jedes einzelne Feld rot, grün oder blau ist, 
kommen in deine if-Bedingungen einfach weitere Bedingungen welche den 
Zustand abfragen und die entsprechende Farbe high setzen.

Aber:
Du solltest echt mal schauen ob du sowas nicht auch selbst hin bekommst. 
Das sind einfach nur verschachtelte Bedingungen, nicht anders als beim 
Mikrocontroller auch (okay schon ein bisschen anders, aber das spielt 
noch keine Rolle). Es gibt wirklich eine menge Seiten zu VHDL welche 
einem den Einstieg relativ leicht machen:
http://www.lothar-miller.de/
http://www.fpga4fun.com
und sogar ein Tutorial für beide Sprachen:
http://www.fpga4fun.com/HDL%20tutorials.html
Dann kann ich dir noch das hier empfehlen:
http://www.altera.com/education/training/curriculum/fpga/trn-fpga.html
Du musst ja nicht alles durcharbeiten, aber zumindest die wichtigsten 
und grundlegendsten Dinge.

Gruß

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Habe mal ein Bild reingebracht.

Oben ist der schmale blaue Querbalken (korrekt)!
Dann sollen nebeneinander die 3 roten Quadrate kommen , es erscheint nur 
das letzte Quadrat ?
Dann soll darunter alles in blau kommen (korrekt)!

Was habe ich in der Logik falsch gemacht?

Danke.
Gruss

----------------------------
process (clk25)
begin
  if clk25'event and clk25 = '1' then

    if (vcounter >=0 and vcounter < 20)then
      if (hcounter >=  0 and hcounter < 640) then
        blue_out<="1000";
      else
        blue_out<="0000";
      end if;
    end if;

    if (vcounter >=20 and vcounter < 40)then
      if (hcounter >=  20 and hcounter < 35) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;

      if (hcounter >=  40 and hcounter < 55) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;

      if (hcounter >=  60 and hcounter < 75) then
        red_out<="1000";
      else
        red_out<="0000";
      end if;
    end if;

    if (vcounter >=40 and vcounter < 480)then
      if (hcounter >=  0 and hcounter < 640) then
        blue_out<="1000";
      else
        blue_out<="0000";
      end if;
    end if;
  end if;
end process;
-------------------------------------

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Was habe ich in der Logik falsch gemacht?

Micha schrieb:
> - Wie werden if-Bedingungen abgearbeitet?
> - Was passiert bei deinem else?
>
> Wenn du beide Fragen beantworten kannst, bist du der Lösung auf die
> Schliche gekommen ;)

Gruß

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

So sieht das Bild aus wenn ich da die 3 verschiedenen Farben reinsetze 
(korrekt)..
Gruss

von Peter B. (funkheld)


Lesenswert?

Damit geht es :
-------------------------
process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if (vcounter >=20 and vcounter < 40)then

      if (hcounter >=  20 and hcounter < 35) then
        red_out<="1000";
      end if;

      if (hcounter >=  35 and hcounter < 40) then
        red_out<="0000";
      end if;

      if (hcounter >=  40 and hcounter < 55) then
        red_out<="1000";
      end if;

      if (hcounter >=  55 and hcounter < 60) then
        red_out<="0000";
      end if;

      if (hcounter >=  60 and hcounter < 75) then
        red_out<="1000";
      end if;

      if (hcounter >=  75 and hcounter < 640) then
        red_out<="0000";
      end if;

    end if;
  end if;
end process;
--------------------------------

Gruss

von Peter B. (funkheld)


Lesenswert?

Warum wird dann die Arbeit einfach nicht bei der zweiten if angesetzt , 
an der Stelle wo es losgehen soll?

Gruss

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Manche Logiken begreife ich noch nicht.

Mit den Switch 0-9 vom DE1 kann ich jetzt rechteckige rote Quadrate(LED) 
auf dem VGA-Monitor auf 0 oder 1 setzen die ab links oben nach rechts 
gehen.

Das nächste ist die VGA-LED zum Zählen benutzen bzw das zählen anzeigen.

Danke.
Gruss

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Es sieht doch schon mal nach etwas Grafik aus.
Bin gespannt wie es weiter geht.
Der Code kommt mir auch bekannt vor.

Die VGA Ausgabe ist gut geeignet, um VHDL zu lernen. Man muss die 
Gültigkeit von mehreren Signalen im Auge behalten.
Da kann man sich gut austoben.

Linien zeichnen oder Bälle fliegen lassen.
Ein Gitter auf dem Bildschirm.
Alles gute Übungen.

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Ja..
Der Code für die VGA-Zeiten ist hier irgendwo aus dem Forum.

Ich möchte die LED und weitere Signale auf den VGA darstellen.
Die Switsch 0-9 rot und die Key 0-3 grün vom DE1 habe ich jetzt schon 
auf dem VGA.

Gruss

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


Lesenswert?

W. M. schrieb:
>> PS: Wenn du VHDL postest, dann benutze bitte die
>> Formatierungsmöglichkeiten des Forums:
>> http://www.mikrocontroller.net/articles/Formatierung_im_Forum
>> Das macht alles deutlich übersichtlicher.
>
> Hehe, daran war diesmal Lothar "schuld". :)
> Beitrag "Re: Beim Projekt erstellen mit Quartus2 alle LED ausschalten"
>
> Wie du siehst, hat er ja brav am Anfang und am Ende
> eingefuegt.
Schlags kaputt...
Wird sofort korrigiert.

> PS: wie escaped man denn normal die klammern?
Ich nehme die [ pre ] Tags dafür. Dann liest sich das so:
1
[vhdl]
2
  Der VHDL Code
3
[/vhdl]

Peter Bierbach schrieb:
> Manche Logiken begreife ich noch nicht.
Mach dir keine Sorgen. Ich habe für die wichtigsten ein paar Jahre 
gebraucht. Und ein paar der weniger wichtigen überraschen mich noch 
heute...

: Bearbeitet durch Moderator
von Peter B. (funkheld)


Lesenswert?

Jetzt kommt eine 7-Segmentanzeige auf dem VGA neben den Quadrat-LED.

Gruss

von Falk B. (falk)


Lesenswert?

Für ein paar einfache Balken/Streifen reichen ein paar If then Abfragen 
der Zeilen- und Spaltenzähler, sobald aber ein paar Muster mit Quadraten 
etc. gefragt sind, sollte man besser auf einen RAM/ROM gehen, das ist 
DEUTLICH einfacher und flexibler. Und last but not least kommt man am 
Ende zu einem echten Bildspeicher im externen RAM, wo man ein beliebiges 
Bild reinschreibt und auf dem VGA darstellen kann.

von Peter B. (funkheld)


Lesenswert?

---------------------
Und last but not least kommt man am
Ende zu einem echten Bildspeicher im externen RAM, wo man ein beliebiges
Bild reinschreibt und auf dem VGA darstellen kann.
---------------------

Das hört sich ja gut und für mich kompliziert an.
Dieses SRAM lesen/schreiben am DE1 kann ich noch nicht.

Gibt es dafür bitte ein schulmäßiges Beispiel?
Ich vermisse einfache kurze Beispiele in allen Richtungen.
Viele sind so kompliziert geschrieben.

Ich vermute die meisten FPGA'ler sind Hochschulbesucher.

Danke.
Gruss

von Micha (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Gibt es dafür bitte ein schulmäßiges Beispiel?
> Ich vermisse einfache kurze Beispiele in allen Richtungen.
> Viele sind so kompliziert geschrieben.

Hey,
kurze Beispiele gibts leider nur für die simpleren Aufgaben. z.B. LEDs 
oder 7-Segment ansteuern. Ein Beispiel um einen Klang zu erzeugen dürfte 
auch recht einfach zu finden sein.
Alles was sich ausserhalb des FPGAs befindet ist definitiv nicht mehr 
mit einer Seite Code zu beschreiben.
Was mir viel spaß gemacht hat, ist mal den NIOS II
zu implementieren und damit was rum zu spielen. Der bietet dann auch die 
Möglichkeit die mitgelieferten Cores mittels Avalon anzusteuern.

Für NIOSII gibt es ein Youtube Tutorial:
https://www.youtube.com/watch?v=DBkza5-SlqQ (erster Teil)
https://www.youtube.com/watch?v=t-nPunZ49nY (zweiter Teil)

http://www.altera.com/devices/processor/nios2/ni2-index.html
http://www.altera.com/literature/manual/mnl_avalon_spec.pdf

von Falk B. (falk)


Lesenswert?

@ Peter Bierbach (funkheld)

>Gibt es dafür bitte ein schulmäßiges Beispiel?

Wahrscheinlich schon, ich hab aber keine Links dazu.

Fang doch mit dem einfachen Beispiel und deinem internen RAM/ROM an, das 
ist nicht schwer. Adresse und Takt anlegen, schon fallen hinten die 
Daten raus. Den RAM kann man mit dem Megawizeard/Core Generator / 
Whatever erstellen.

von Peter B. (funkheld)


Lesenswert?

Hmm..., was ist das bitte ?
Ein RAM selber erstellen auf dem DE1?

Erklär mir da s bitte einmal?
------------------------
Den RAM kann man mit dem Megawizeard/Core Generator /
Whatever erstellen
---------------------------

Danke.
Gruss

von Falk B. (falk)


Lesenswert?

@ Peter Bierbach (funkheld)

>Ein RAM selber erstellen auf dem DE1?

Dein DE1 Board hat ein Altera FPGA.
Also arbeitest du mit der Software Quartus.
Dort gibt es ein Tool, eben diesen Megawizard, der dir einen RAM als 
VHDL-Komponente erzeugen kann.

von Peter B. (funkheld)


Lesenswert?

Jup danke.

Ist erstmal zu Hoch für mich.
Verschiebe ich bis die anderen Sachen klappen.

GRuss

: Bearbeitet durch User
von FPGA-Analysator (Gast)


Lesenswert?


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.