Forum: FPGA, VHDL & Co. PLL verwenden ice40HX8k


von Student (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich arbeite mich gerade in VHDL/FPGAs ein und bin gerade auf ein Problem 
gestoßen. Ich will die PLL des FPGAs ( Typ oben ) verwenden um einen 
höheren Takt zu generieren. Der FPGA sitz auf den Lattice iCEDragon 
Evaluation Board. Mein Problem ist nun ich habe mir ein Frequenzteiler 
aufgebaut der den Takt der PLL runterteilen soll. Die Software iCECube2 
stellt eine Wizard zur Verfügung der mir die PLL konfiguriert und zwei 
Dateien ausspuckt:

Einmal die Instanziierung:
1
PLLModul_inst: PLLModul
2
port map(
3
          PACKAGEPIN => ,
4
          PACKAGEPINB => ,
5
          PLLOUTCORE => ,
6
          PLLOUTGLOBAL => ,
7
          RESET => 
8
        );

und die "Modul-Makros":
1
entity PLLModul is
2
port(
3
      PACKAGEPIN: in std_logic;
4
      RESET: in std_logic;
5
      PLLOUTCORE: out std_logic;
6
      PLLOUTGLOBAL: out std_logic
7
    );
8
end entity PLLModul;
9
10
architecture BEHAVIOR of PLLModul is
11
begin
12
PLLModul_inst: SB_PLL40_PAD
13
port map(
14
          PACKAGEPIN => PACKAGEPIN,
15
          PLLOUTCORE => PLLOUTCORE,
16
          PLLOUTGLOBAL => PLLOUTGLOBAL,
17
          EXTFEEDBACK => open,
18
          DYNAMICDELAY => open,
19
          RESETB => RESET,
20
          BYPASS => '0',
21
          LATCHINPUTVALUE => open,
22
          LOCK => open,
23
          SDI => open,
24
          SDO => open,
25
          SCLK => open
26
        );
27
28
-- Fin=27, Fout=100
29
generic map(
30
             DIVR => "0001",
31
             DIVF => "0111010",
32
             DIVQ => "011",
33
             FILTER_RANGE => "001",
34
             FEEDBACK_PATH => "SIMPLE",
35
             DELAY_ADJUSTMENT_MODE_FEEDBACK => "FIXED",
36
             FDA_FEEDBACK => "0000",
37
             DELAY_ADJUSTMENT_MODE_RELATIVE => "FIXED",
38
             FDA_RELATIVE => "0000",
39
             SHIFTREG_DIV_MODE => "00",
40
             PLLOUT_SELECT => "GENCLK",
41
             ENABLE_ICEGATE => '0'
42
           );
43
end BEHAVIOR;
44
45
--uiPll40ModuleData
46
--PllType: SB_PLL40_PAD
47
--PllModuleName: PLLModul
48
--PllInstanceName: PLLModul_inst
49
--DIVR: 0001
50
--DIVF: 0111010
51
--DIVQ: 011
52
--FILTER_RANGE: 001
53
--FEEDBACK_PATH: SIMPLE
54
--EXTERNAL_DIVIDE_FACTOR: 1
55
--DELAY_ADJUSTMENT_MODE_FEEDBACK: 
56
--DELAY_ADJUSTMENT_MODE_RELATIVE: FIXED
57
--FIXED_DELAY_ADJUSTMENT_FEEDBACK: 0
58
--FIXED_DELAY_ADJUSTMENT_RELATIVE: 0
59
--SHIFTREG_DIV_MODE: 00
60
--PLLOUT_SELECT: GENCLK
61
--PLLOUT_SELECT_PORTA: 
62
--PLLOUT_SELECT_PORTB: 
63
--ENABLE_ICEGATE: false
64
--ENABLE_ICEGATE_PORTA: false
65
--ENABLE_ICEGATE_PORTB: false
66
--TEST_MODE: 
67
--RESET: true
68
--BYPASS: false
69
--LATCHINPUTVALUE: false
70
--LOCK: false
71
--InputFrequency: 27
72
--OutputFrequency: 100

Daraufhin hab ich ein komplettes Modul geschrieben (siehe Anhang), wo 
diese generierten Files in mein Top-Level Design verwendet werden. Beim 
Synthetisieren bekomme ich aber zwei Fehler:

@E:CD213 : PLLModul.vhd(16) | Undefined identifier
@E:CD214 : PLLModul.vhd(33) | Not a concurrent statement
@E: :  | Parse errors encountered - exiting

Das Modul SB_PLL40_PAD ist ein "Primitive"! Wie binde ich das in mein 
Desgin ein, da scheinbar nicht bekannt??

Habt ihr vielleicht einen Beispielcode wo die PLL verwendet wird??

Hoffe wir kann jemand Tipps geben wie man das Problem konsequent angehen 
kann! ( Die Suchmaschine hab ich mittlerweile schon einige Zeit lang 
bemüht, außerdem sind die Beispiele der IDE bzw. die Dokumentation zur 
PLL relativ dürftig)


mfg
Student

von SuperWilly (Gast)


Lesenswert?

Der Compiler weiß nicht, woher er die Komponente "SB_PLL40_PAD" nehmen 
soll.

Entweder man spendiert eine Komponenten-Deklaration oder eine Library, 
die man so einbindet:
1
library xy;
2
use xy.components.all;

Es wundert mich ein wenig, dass derlei Zeilen im generierten Code 
fehlen...


VG, SuperWilly

von Student (Gast)


Lesenswert?

Hallo,
mich hat das auch verwundert, vorrallem das beim auto. generiertern code 
vorm entity keine standard libarys eingebuden werden! Was eigentlich 
Pflicht ist!

Danke fuer das schnelle feedback! Werde es versuchen! Wenn schon andere 
mit diesen  Board bzw. mit diesen fpga gearbeitet haben! Wuerde ich mich 
nochn ueber Tipps freuen!

Lg Student

von Student (Gast)


Lesenswert?

Student schrieb:
> Hallo,
> mich hat das auch verwundert, vorrallem das beim auto. generiertern code
> vorm entity keine standard libarys eingebuden werden! Was eigentlich
> Pflicht ist!
>
> Danke fuer das schnelle feedback! Werde es versuchen! Wenn schon andere
> mit diesen  Board bzw. mit diesen fpga gearbeitet haben! Wuerde ich mich
> nochn ueber Tipps freuen!
>
> Lg Student

Sorry fuer die vielen Tippfehler! :)

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.