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
portmap(
3
PACKAGEPIN=>,
4
PACKAGEPINB=>,
5
PLLOUTCORE=>,
6
PLLOUTGLOBAL=>,
7
RESET=>
8
);
und die "Modul-Makros":
1
entityPLLModulis
2
port(
3
PACKAGEPIN:instd_logic;
4
RESET:instd_logic;
5
PLLOUTCORE:outstd_logic;
6
PLLOUTGLOBAL:outstd_logic
7
);
8
endentityPLLModul;
9
10
architectureBEHAVIORofPLLModulis
11
begin
12
PLLModul_inst:SB_PLL40_PAD
13
portmap(
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
genericmap(
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
endBEHAVIOR;
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
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
libraryxy;
2
usexy.components.all;
Es wundert mich ein wenig, dass derlei Zeilen im generierten Code
fehlen...
VG, SuperWilly
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
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! :)