Forum: FPGA, VHDL & Co. MCLK in Lattice Diamond zuweisen


von Janis E. (janis_e)


Lesenswert?

Hallo,

ich bin gerade bei den ersten Gehversuchen mit Lattice Diamond.

Ich habe in Verilog also ein Toplevel-Modul erzeugt
1
module blink (clk,led);
2
  input clk;
3
  output led;
4
  //some code
5
endmodule

das Modul soll, wie unschwer zu erraten, später eine LED ansteuern.

Über die "Spreadsheet View" und "Pin Assignments" kann ich den led 
Ausgang nun dem LED Pin zuweisen. Woran ich jedoch scheitere, ist das 
Master Clock Signal mit dem clk Eingang zu verbinden. Wie genau stelle 
ich es an? Leider habe ich dazu keine Informationen gefunden...

Ich verwende das Lattice Mach XO2 Breakout Board mit einem LCMXO2-7000HE 
FPGA.

Danke im Voraus!

von Duke Scarring (Gast)


Lesenswert?

Janis E. schrieb:
> Ich verwende das Lattice Mach XO2 Breakout Board mit einem LCMXO2-7000HE
> FPGA.
Wo kommt Dein Takt her? Hast Du eine externe Taktquelle angeschlossen? 
Wenn ja, wie?
Oder willst Du den internen Oszillator (OSCH) verwenden?

Duke

von Bürovorsteher (Gast)


Lesenswert?

MCLK ist etwas zum Laden des Konfigurationfiles.
Du willst den OSCH verwenden. der muss im Toplevel instanziiert werden.
Die Frequenz wird mit einem generic (VHDL) zugewiesen.
TN1199 behandelt das Problem in epischer Breite.

von Janis E. (janis_e)


Lesenswert?

Duke Scarring schrieb:
> Wo kommt Dein Takt her? Hast Du eine externe Taktquelle angeschlossen?
> Wenn ja, wie?
> Oder willst Du den internen Oszillator (OSCH) verwenden?

Ich möchte den internen Oszillator verwenden. Wenn ich das Datenblatt 
richtig verstehe, ist dieser mit MCLK verbunden 
(http://www.latticesemi.com/~/media/Documents/DataSheets/MachXO23/MachXO2FamilyDataSheet.pdf?document_id=38834?, 
S.33). Über Diamond konnte ich die MCLK Frequenz festlegen (die 
Standardmäßig auf 2.08MHz liegt), aber habe nirgendwo eine Einstellung 
gefunden, wie ich MCLK mit meinem Modul verbinden kann.

von Duke Scarring (Gast)


Lesenswert?

Janis E. schrieb:
> Ich möchte den internen Oszillator verwenden.
Ok. Den kannst Du als interne Komponente instanziieren:
1
...
2
3
library machxo2;
4
use machxo2.components.osch;
5
6
...
7
8
    signal mein_interner_takt : std_logic;
9
10
...
11
12
    osch_instance : OSCH
13
        generic map (
14
            NOM_FREQ => "2.08"
15
            )
16
        port map (
17
            STDBY    => '0',
18
            OSC      => mein_interner_takt,
19
            SEDSTDBY => open
20
            );
21
22
...

Duke

von Janis E. (janis_e)


Lesenswert?

Duke Scarring schrieb:
> Ok. Den kannst Du als interne Komponente instanziieren:

Danke! Funktioniert dies auch mit Verilog (tut mir leid, aber ich 
verstehe den VHDL Syntax nicht, irgendwie komme ich damit nicht klar...)

von Janis E. (janis_e)


Lesenswert?

Bürovorsteher schrieb:
> TN1199 behandelt das Problem in epischer Breite.

habe ich zu spät gesehen, danke, das versuche ich einmal

von Bürovorsteher (Gast)


Lesenswert?

Wenn man 2,08 MHz braucht, kann man sich die Zeile
generic map ( NOM_FREQ => "2.08")
sparen, da 2,08 MHz die Defaultfrequenz ist.

Die Verilog-Instanziierung steh in der TN auch drin

von Janis E. (janis_e)


Lesenswert?

Bürovorsteher schrieb:
> Die Verilog-Instanziierung steh in der TN auch drin

Ja, das habe ich dann auch gesehen, danke! Irgendwie hatte ich deinen 
Beitrag übersehen...

Mit dem Code aus der TN funktioniert es einwandfrei, danke!

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.