Infos zum Umgang mit "Lattice Diamond"?

OP #2582125
Lesenswert?

Tut mir leid wenn ich hier so rumspäme ... aber ich komme einfach nicht 
weiter.

Bin absolut neu in sachen VHDL, FPGA und habe vorher nur mit AVR 
gearbeitet.

Habe nun hier das Breakoutboard mit dem MachXO2 von Lattice aus der 
Sammelbestellung.

Zu Anfang bin ich noch dabei ein VHDL Tutorial durch zu gehen, gehe aber 
zwischenzeitlich immer mal wieder in das Programm "Lattice Diamond" um 
das lernen nicht ganz so einseitig zu haben.

Habe nun mehrfach das "Tutorail" von Lattice zu diesem Programm 
durchgearbeitet, aber das ist meiner Meinung nach so besch*ssen das man 
da kaum was versteht...

Ich weiß jetzt ... garnichts.

>Kann mir hier zufällig jemand helfen bzgl. Infos zum Programm, alternative 
>Programme.


Mein Problem beim Tutorial von Lattice: Man erstellt ein neues Projekt 
und fügt fertige Datein (Programmteile) ein, welche kein bisschen 
erklärt werden. Dann editiert man diese nach genauer Vorgabe auch hier 
ist die erklärung eher oberflächig.

Ich habe keine Ahnung wo ich in diesem Programm meinen Code schreiben 
kann ... ich weiß jetzt nur wie ich die Laufzeiten eines fertigen 
Programms errechnen lassen kann was für mich für den Einstieg erstmal 
total Wumpe ist.

Habe mal die tolle .pdf angehängt.
Angehängte Dateien:
Gast #2582200
Lesenswert?

Dieses Tutorial richtet sich leider nicht an blutige Anfänger, sondern 
da geht es darum auch die fortgeschrittenen Möglichkeiten insbesondere 
eines Mixed Language Designs zu zeigen.

Lade einfach mal eines von Lothars VHDL Beispielen herrunter, z.B. 
Lauflicht.

Lege ein neues Projekt an.
Wähle den FPGA aus.
Füge die heruntergeladene VHDL Datei hinzu.
Gehe auf Process.
Doppelclick auf Place & Route umd das alles zu kompilieren.

Im Spreadsheetview kannst du anschliessend unter anderen Pins zuordnen.
Dann nochmal Place & Route
Dann hacken bei BitStream file unter "Export Files"
Doppelclick auf Export Files.

Dann im Toolmenu bzw mit dem entsprechenden Icon in der Toolleiste den 
Programmer aufrufen.
OP #2583472
Lesenswert?

Vielen Dank.

Habe ich so gemacht, nur das ich anstelle von "BitStream" "JEDEC File" 
aktiviert habe, da es dieses nicht gab.

Sobald ich das rübergespielt habe leuchten die LED`s alle auf. 
Vermutlich da ich keinen Clock habe.

Daher habe ich einen 1kHz sowie 1MHz Clock mal an einen Pin gehängt und 
diesen als CLK_in eingestellt. es leuchten weiterhin alle LED`s.

Also habe ich mal einen LED`s Pin verstellt um zu schauen ob ich die 
richtigen Pin`s eingestellt habe: Die Verstellte LED leuchtet nun 
dunkler.

Daher das ich nun wirklich noch sogut wie garnichts kann wollte ich mal 
fragen ob mir jemand zufällig auf das Lauflicht einen internen Takt 
geben kann?
Moderator (Firma: Titel) Persönliche Seite #2583605
Lesenswert?

Michael D. schrieb:
> Habe ich so gemacht, nur das ich anstelle von "BitStream" "JEDEC File"
> aktiviert habe, da es dieses nicht gab.
Einen Bitstrom gibts auch "nur" für FPGAs mit externem Flash.

Michael D. schrieb:
> Also habe ich mal einen LED`s Pin verstellt um zu schauen ob ich die
> richtigen Pin`s eingestellt habe: Die Verstellte LED leuchtet nun
> dunkler.
Wie wärs ganz am Anfang mit dem einfachsten aller Projekte: einen 
Eingang auf einen Ausgang? Sowas wie das hier:
1
entity DasAllerersteProjekt is
2
   Port ( Taster: in  STD_LOGIC;
3
            LED : out STD_LOGIC);
4
   
5
end DasAllerersteProjekt;
6

7
architecture Behavioral of DasAllerersteProjekt is
8
begin   
9
    LED <= Taster;
10
end;
Ganz ohne Takt, reinste Verdrahtung....
Gast #2583678
Lesenswert?

Mach doch als allererstes ein Projekt mit einem Schematic als Quelle. 
Sobald das durchgelaufen ist, kannst du dir den generierten VHDL- oder 
Verilog-Code anschauen und so lernen, wie man das Ganze macht.

Wenn du dann in VHDL oder Verilog weitermachen willst, dann wirf das 
Schematics aus deinem Projekt heraus und füge das o.g. generierte File 
als Quelle ein.

W.S.
Gast #2583702
Lesenswert?

Ich kenne das Board nicht, hat es den keinen Onboard Oscillator?

Wenn nicht, kann man die Onchip RC Oscillator verwenden. Der ist leider 
nicht über IPExpress zugänglich, warum auch immer.

Hier mal das Lauflicht mit RC Oscillator, Funktion kann ich aber Mangels 
MachXO2 Board nicht garantieren.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4

5
library MACHXO2;
6
use MACHXO2.components.all;
7

8
entity Lauflicht is
9
    Port ( leds : out  STD_LOGIC_VECTOR (7 downto 0));
10
end Lauflicht;
11

12
architecture Behavioral of Lauflicht is
13
  component Clockdivider is
14
    Generic ( fclk     : integer;
15
              frequenz : integer);
16
    Port    ( clk : in  STD_LOGIC;
17
              clken : out  STD_LOGIC);
18
  end component;
19
  signal clk    : std_logic;
20
  signal clken  : std_logic;
21
  signal sr : std_logic_vector (7 downto 0) := "10000000";
22
begin
23

24
   OSCInst0: OSCH  GENERIC MAP ( NOM_FREQ => "2.56" )
25
                   PORT MAP ( OSC=> clk );
26

27
   clocken: Clockdivider GENERIC MAP( fclk => 10000000, frequenz => 3)
28
                         PORT MAP   ( clk => clk , clken => clken );
29
   process begin
30
      wait until rising_edge(clk);
31
      if (clken='1') then
32
         if (sr="00000001") then
33
            sr <= "10000000";
34
         else
35
            sr <= '0' & sr(7 downto 1);
36
         end if;
37
      end if;
38
   end process;
39
   leds <= sr; 
40
end Behavioral;
OP #2584178
Lesenswert?

Es ist zwar vorhanden ein Pad X2 mit im Schaltplan eingezeichneten 50MHz 
Oscillator aber dieser ist nicht bestückt :Þ

Werde mir bei der nächsten Bestellung mal einen Oscillator mitbestellen.


Vielen Dank für das kleine Progrämmchen.
Beim Überfliegen schaut das gut aus (vergleich mit standard Programm des 
Boards).


Würde es einen Unterschied machen wenn man in diesem Programm anstelle 
von:
1
wait until ...
2

3
if ...
verwenden würde?
Moderator (Firma: Titel) Persönliche Seite #2584249
Lesenswert?

Michael D. schrieb:
> Würde es einen Unterschied machen wenn man in diesem Programm
Vorneweg: es ist kein Programm, es ist eine Hardwarebeschreibung.
> anstelle von:
> wait until ...
> if ...
> verwenden würde?
Nein, aber außer Nachteilen hat man keine Vorteile...  ;-)
http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html
http://www.lothar-miller.de/s9y/categories/34-Getakteter-Prozess
OP #2585104
Lesenswert?

Habe nun mal das Programm erstmal "as is" übernommen. Daher das ich 
einen Error bekommen habe dann auch etwas herumversucht, bekomme es aber 
nicht hin.

ERROR - ngdbuild: logical block 'clocken' with type 'Clockdivider' is 
unexpanded

Wenn ich richtig gegoogled habe bedeutet das soviel das zwei 
verschiedene Prozesse auf eine Variable zugreifen ... (clk?).

Kann mir zufällig (hoffentlich das letzte mal jemand wieder helfen?).
1
   OSCInst0: OSCH  GENERIC MAP ( NOM_FREQ => "2.56" )
2
                   PORT MAP ( OSC=> clk );
3

4
   clocken: Clockdivider GENERIC MAP( fclk => 10000000, frequenz => 3)
5
                         PORT MAP   ( clk => clk , clken => clken );
Moderator (Firma: Titel) Persönliche Seite #2585303
Lesenswert?

Michael D. schrieb:
> zwei verschiedene Prozesse auf eine Variable zugreifen ... (clk?).
Obacht: clk ist keine Variable, sondern ein Signal. Und die Prozesse 
"grifen" nicht darauf zu, sondern das Signal ist an mehrere Komponenten 
verdrahtet...
Fazit: in Hardware denken! Auch dort gibt es z.B. ein Taktsignal, das an 
mehrere Komponenten verdrahtet werden kann.

>>  OSCInst0: OSCH  GENERIC MAP ( NOM_FREQ => "2.56" )
>>                     PORT MAP ( OSC=> clk );
Ich verweise hier auf die Technical Note TN1199 von Lattice:
http://www.latticesemi.com/documents/TN1199.pdf
Auf Seite 13-27 der OSCH
Gast #2586467
Lesenswert?

Duke Scarring schrieb:
> Hast Du da schon mal reingeguckt?

Ja. Eher trocken, aber funktioniert. Zumeist nur Zuweisungen, die auf 
Bibliothekselemente verweisen. Aber das Drumherum geht so. Bei Xilinx 
gibt es da was Netteres: Man kann von vornherein ansagen, was für Inputs 
und Outputs man haben will und die ISE generiert einem damit den ganzen 
Rumpf, den man dann bloß noch mit den Prozeßinhalten ausfüllen muß. Ist 
sehr hilfreich gegen Vergeßlichkeitsfehler, wenn man nicht jeden Tag mit 
VHDL umgeht und nach ein paar Wochen "was ganz anderes machen" mal 
wieder sich um's Programmieren kümmern muß.

W.S.
#2587977
Lesenswert?

W.S. schrieb:
> Mach doch als allererstes ein Projekt mit einem Schematic als Quelle.

Duke Scarring schrieb:
> Aus per Schematic-Entry generiertem Code möchte ich aber nicht VHDL
> lernen wollen. Hast Du da schon mal reingeguckt?

W.S. schrieb:
> Man kann von vornherein ansagen, was für Inputs
> und Outputs man haben will und die ISE generiert einem damit den ganzen
> Rumpf, den man dann bloß noch mit den Prozeßinhalten ausfüllen muß.

Naja, das macht ISE auch, wenn man ein neues VHDL Modul File erstellt. 
Dazu muss man nicht die Krücke von Schematic Editor verwenden.
Gast #2651384
Lesenswert?

Hallo,

ich wärme den etwas älteren Thread hier mal auf. Ich habe das gleiche 
Problem wie der OP, kaum Kenntnisse vorhanden und das MachXO2-Board soll 
programmiert werden. Ich hatte das gleiche Problem wie er mit dem 
Lauflicht. Im Anhang eine funktionierende Lösung des Knight 
Rider-Lauflichts von Lothar Miller, angepasst für das 
MachXO2-Breakoutboard unter Verwendung des internen FPGA-Oszillators 
(2,08 MHz). Über die Timings (Zählerstände/Signale) bin ich mir noch 
unsicher, so ganz genau hintergestiegen bin ich noch nicht. Aber der 
angehängte Code läuft auf meinem Board prima.

Gruß
Chris2k
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren