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.
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.
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?
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....
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.
Hört auf zu hassen ... es funktioniert ^^. Problem war: Schlechter Kontakt des Taktes. Programm ohne Takt: Habe aktuell keine Taster aufn Board :Þ Schematics: Wenn ich nicht muss würde ich diesen Teil gerne auslassen. Weiter gehts ... auf ins Verderben. Vielen Dank für die Hilfe.
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; |
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?
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
W.S. schrieb: > kannst du dir den generierten VHDL- oder > Verilog-Code anschauen und so lernen, wie man das Ganze macht. Aus per Schematic-Entry generiertem Code möchte ich aber nicht VHDL lernen wollen. Hast Du da schon mal reingeguckt? Duke
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 ); |
das Beispiel ist von Lothar, ich hatte nur den externen Clockeingang durch den internen MachXO2 Oscillator ersetzt. Für den Rest siehe: http://www.lothar-miller.de/s9y/index.php?serendipity[action]=search&serendipity[searchTerm]=lauflicht&serendipity[searchButton]=%3E
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
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.
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.
Christian R. schrieb: > Naja, das macht ISE auch Hehe.. hier ging es doch wohl um Lattice Diamond - oder? W.S.
http://www.youtube.com/watch?v=-sbJ-2qhNbw Für den Anfang erst mal ein Projekt aus der Referenz zu diesem Board zu laden. Ich habe den Control Dev Kit. Da sind spezielle Ref-Files zum testen auf der Homepage mit dabei. Gruss Holger.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.