Microblaze - pins im UCF enabled - altes geht nicht

Gast #1154980
Lesenswert?
• ▲
▼
Hi zusammen

komischer Fehler und ich hab keine Dämmerung was schiefgeht.

Ich hab an meinem Microblaze einen LED bus mit 5 LEDS und einen input 
bus der 12 bit breit ist angeschlossen.

Dazu kommt dann noch ein UART.

Für die ersten Tests hab ich den UART und den input port nicht im UCF 
file aktiviert - alles klappte prima. Led liess sich anschalten.

Code siehe hier:
1
############################################################################
2
## This system.ucf file is generated by Base System Builder based on the
3
## settings in the selected Xilinx Board Definition file. Please add other
4
## user constraints to this file based on customer design specifications.
5
############################################################################
6

7
Net sys_clk_pin LOC=P52;
8
Net sys_rst_pin LOC=P2 | PULLUP;
9
## System level constraints
10
Net sys_clk_pin TNM_NET = sys_clk_pin;
11
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 20000 ps;
12
Net sys_rst_pin TIG;
13

14
## IO Devices constraints
15

16
#### Module RS232 constraints
17

18
Net fpga_0_RS232_RX_pin LOC=P78;
19
Net fpga_0_RS232_TX_pin LOC=P77 |DRIVE = 12;
20

21
#### Module LEDS constraints
22

23
Net fpga_0_LEDS_GPIO_d_out_pin<0> LOC=P130 |DRIVE = 12;
24
Net fpga_0_LEDS_GPIO_d_out_pin<1> LOC=P25 |DRIVE = 12;
25
Net fpga_0_LEDS_GPIO_d_out_pin<2> LOC=P27 |DRIVE = 12;
26
Net fpga_0_LEDS_GPIO_d_out_pin<3> LOC=P30 |DRIVE = 12;
27
Net fpga_0_LEDS_GPIO_d_out_pin<4> LOC=P1 |DRIVE = 12;
28

29
#### Module Push_Buttons constraints
30

31
#Net fpga_0_Push_Buttons_GPIO_in_pin<0> LOC=P21 | PULLDOWN;
32
#Net fpga_0_Push_Buttons_GPIO_in_pin<1> LOC=P23 | PULLDOWN;
33
#Net fpga_0_Push_Buttons_GPIO_in_pin<2> LOC=P17 | PULLDOWN;
34
#Net fpga_0_Push_Buttons_GPIO_in_pin<3> LOC=P15 | PULLDOWN;
35
#Net fpga_0_Push_Buttons_GPIO_in_pin<4> LOC=P14 | PULLDOWN;
36
#Net fpga_0_Push_Buttons_GPIO_in_pin<5> LOC=P11 | PULLDOWN;
37
#Net fpga_0_Push_Buttons_GPIO_in_pin<6> LOC=P13 | PULLDOWN;
38
#Net fpga_0_Push_Buttons_GPIO_in_pin<7> LOC=P10 | PULLDOWN;
39
#Net fpga_0_Push_Buttons_GPIO_in_pin<8> LOC=P12 | PULLDOWN;
40
#Net fpga_0_Push_Buttons_GPIO_in_pin<9> LOC=P8 | PULLDOWN;
41
#Net fpga_0_Push_Buttons_GPIO_in_pin<10> LOC=P6 | PULLDOWN;
42
#Net fpga_0_Push_Buttons_GPIO_in_pin<11> LOC=P7 | PULLDOWN;
43

44
Net adcclock LOC = P32;

Das Problem ist nun wenn ich die Pushbuttons aktiviere und genau den 
gleichen C code ausführe wie vorher (nur das UCF file geändert) geht
die LED nicht mehr an.

Es scheint so als würde der Prozessor einfrieren und ich hab keine 
Ahnung wieso? Irgendjemand eine Idee?

Tobi
Gast #1154996
Lesenswert?
• ▲
▼
Nachtrag

witzigerweise läuft es wieder wenn ich die unterste Zeile 
auskommentiere.

Also
1
#Net adcclock LOC = P32;

adcclock ist ein künslich erzeugter port (also nicht via wizard) der 1 
bit breit ist und dazu dient das Clock signal was in den FPGA reingeht 
an Pad 32 wieder auszuspucken um damit den ADC zu füttern.

Aber warum macht das den Unterschied?
Gast #1157643
Lesenswert?
• ▲
▼
Hallo Tobi,

wenn Du den Clock wieder herausgibst, wird das zugehörige Clocksignal 
nicht auf einer dedizierten Clockleitung geroutet sondern auf 
allgemeinen Verbindungsresourcen.
Das erzeugt im Normalfall ( Clockeingang läuft über einen GCLK-Buffer, 
bzw. DCM Ausgang geht über GCLK-Buffer weiter ) eine Fehlermeldung!
Die Tatsache das die Synthese bei Dir durchrennt, würd mich zur These 
bringen, dass die XST den Clock nicht ( in voller Länge ) über den GCLK 
nutzt.
Hast Du eine entsprechende Constraint ( cycle-constraint ) für den Clock 
angegeben?
Wenn nicht, das sofort nachholen, sonst synthetisiert der XST halt 
irgendwas er hat ja keine Ahnung das dein Clock über einen 1Mhz 
hinausgeht...
Im Anschluß dürftest Du oben beschriebene Fehlermeldung erhalten...
Wenn Du den Clock aussen wirklich benötigst, kannst Du Dir mit einem 
DDR-Flipflop am Ausgang behelfen...

Gruss

Andreas
Gast #1161606
Lesenswert?
• ▲
▼
Hallo Tobi,

da in deinem Design auf dem Eingangspin ein Clock-constraint liegt, 
würde mich interessieren ob der Microblaze eine DCM istantiiert.
Evtl. war die Synthese nicht in der Lage die Eingangsclockconstraint auf 
den Ausgang zu übertragen ( evtl. wg. MB-Blackbox ).
Du könntest deshalb nochmals eine Clockconstraint auf den Ausgangstakt 
der DCM geben. Ggfls. must Du im FPGA-Editor das entsprechende Netz 
suchen.

Gruss

Andreas

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.