Forum: FPGA, VHDL & Co. Xilinx Artix-7 Nexys 4 mit VGA und XADC


von miezekatzen_dompteur (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Projekt bei dem ich den ADC und die VGA Schnittstelle des 
Nexys 4 Board nutzen will. Den Code konnte ich synthesieren, leider 
kommt bei der Implementation ein Fehler. Was mach ich falsch...??

Gruß

MD

Die Fehlermeldungen in Vivado unter Messages:


[Place 30-372] Bank.35 has terminals with incompatible standards:
Incompatible Pair of IO Standards: LVCMOS33 and LVCMOS18
 The following  terminals correspond to these IO Standards:
SioStd: LVCMOS33   VCCO = 3.3 Termination: 0  TermDir:  In   Bank: 35 
Placed GClock :
  Term: clk
SioStd: LVCMOS18   VCCO = 1.8 Termination: 0  TermDir:  In   Bank: 35 
Placed :
  Term:  xadc_vauxn15
  Term:  xadc_vauxp15

Incompatible Pair of IO Standards: LVCMOS33 and LVCMOS18
 The following  terminals correspond to these IO Standards:
SioStd: LVCMOS33   VCCO = 3.3 Termination: 0  TermDir:  Out  Bank: 35 
Drv: 12 Placed :
  Term:  vgaBlue[0]
  Term:  vgaBlue[1]
  Term:  vgaBlue[2]
  Term:  vgaBlue[3]
  Term:  vgaGreen[0]
  Term:  vgaGreen[1]
  Term:  vgaGreen[2]
  Term:  vgaGreen[3]
  Term:  vgaRed[0]
  Term:  vgaRed[1]
  Term:  vgaRed[2]
  Term:  vgaRed[3]
SioStd: LVCMOS18   VCCO = 1.8 Termination: 0  TermDir:  In   Bank: 35 
Placed :
  Term:  xadc_vauxn15
  Term:  and xadc_vauxp15


[Place 30-374] IO placer failed to find a solution
Below is the partial placement that can be analyzed to see if any 
constraint modifications will make the IO placement problem easier to 
solve.

+----------------------------------------------------------------------- 
------------------------------------------------------------------------ 
--------------------------+
|                                                                     IO Placement 
: Bank Stats 
|
+----+-------+-------+-------------------------------------------------- 
----------------------+------------------------------------------+------ 
--+--------+--------+-----+
| Id | Pins  | Terms |                               Standards 
|                IDelayCtrls               |  VREF  |  VCCO  |   VR   | DCI |
+----+-------+-------+-------------------------------------------------- 
----------------------+------------------------------------------+------ 
--+--------+--------+-----+
|  0 |     0 |     0 | 
|                                          |        |        |        |     |
| 14 |    50 |     0 | 
|                                          |        |        |        |     |
| 15 |    50 |     2 | LVCMOS33(2) 
|                                          |        |  +3.30 |    YES |     |
| 16 |    10 |     0 | 
|                                          |        |        |        |     |
| 34 |    50 |     0 | 
|                                          |        |        |        |     |
| 35 |    50 |    15 | LVCMOS18(2)  LVCMOS33(13) 
|                                          |        |  +3.30 |    YES |     |
+----+-------+-------+-------------------------------------------------- 
----------------------+------------------------------------------+------ 
--+--------+--------+-----+
|    |   210 |    17 | 
|                                          |        |        |        |     |
+----+-------+-------+-------------------------------------------------- 
----------------------+------------------------------------------+------ 
--+--------+--------+-----+

IO Placement:
+--------+----------------------+-----------------+--------------------- 
-+----------------------+----------------------+
| BankId |             Terminal | Standard        | Site                 | Pin 
| Attributes           |
+--------+----------------------+-----------------+--------------------- 
-+----------------------+----------------------+
| 15     | Hsync                | LVCMOS33        | IOB_X0Y142           | B11 
|                      |
|        | Vsync                | LVCMOS33        | IOB_X0Y143           | B12 
|                      |
+--------+----------------------+-----------------+--------------------- 
-+----------------------+----------------------+
| 35     | clk                  | LVCMOS33        | IOB_X1Y126           | E3 
|                      |
|        | vgaBlue[0]           | LVCMOS33        | IOB_X1Y146           | B7 
|                      |
|        | vgaBlue[1]           | LVCMOS33        | IOB_X1Y141           | C7 
|                      |
|        | vgaBlue[2]           | LVCMOS33        | IOB_X1Y137           | D7 
| *                    |
|        | vgaBlue[3]           | LVCMOS33        | IOB_X1Y142           | D8 
|                      |
|        | vgaGreen[0]          | LVCMOS33        | IOB_X1Y148           | C6 
|                      |
|        | vgaGreen[1]          | LVCMOS33        | IOB_X1Y143           | A5 
|                      |
|        | vgaGreen[2]          | LVCMOS33        | IOB_X1Y145           | B6 
|                      |
|        | vgaGreen[3]          | LVCMOS33        | IOB_X1Y144           | A6 
|                      |
|        | vgaRed[0]            | LVCMOS33        | IOB_X1Y133           | A3 
|                      |
|        | vgaRed[1]            | LVCMOS33        | IOB_X1Y135           | B4 
|                      |
|        | vgaRed[2]            | LVCMOS33        | IOB_X1Y147           | C5 
|                      |
|        | vgaRed[3]            | LVCMOS33        | IOB_X1Y134           | A4 
|                      |
|        | xadc_vauxn15         | LVCMOS18        | IOB_X1Y129           | B2 
|                      |
|        | xadc_vauxp15         | LVCMOS18        | IOB_X1Y130           | B3 
|                      |
+--------+----------------------+-----------------+--------------------- 
-+----------------------+----------------------+

[Place 30-99] Placer failed with error: 'IO Clock Placer failed'
Please review all ERROR, CRITICAL WARNING, and WARNING messages during 
placement to understand the cause for failure.
[Common 17-69] Command failed: Placer could not place all instances

von Duke Scarring (Gast)


Lesenswert?

Er beshcwert sich, das Du auf der selben IO-Bank mit verschiedenen 
Spannungen arbeiten willst.
Laut Schaltplan [1, Seite 10] liegen an der Bank 3,3V an.
Du solltest bei den xadc-Pins auch die 3,3V als Constraint angeben.

Duke

[1] 
https://reference.digilentinc.com/_media/reference/programmable-logic/nexys-4/nexys4_sch.pdf

von Gustl B. (-gb-)


Lesenswert?

Hallo, vermutlich kennen wir uns :-) Schön, dass Du das Beispiel 
ausprobieren möchtest, hast Du die .xdc einfach so übernommen oder noch 
irgendwie bearbeitet?

Edit: Im angehängten .zip ist noch die unveränderte .xdc
Ja wie ist das eigentlich, in meinem XADC Beispiel musste ich die 
XADC-Ports gar nicht in der .xdc angeben. Die tauchen da einfach nicht 
auf. Ich weiß nicht wie man die da erklärt aber Du könntest die anderen 
Ports der gleichen Bank auf 1,8V setzen. So hatte ich das im Beispiel 
"nexys4_xadc_minimal.zip" mit dem UART_RXD_OUT gemacht.

Hier http://nas.gus.tl/fpga/ sind übrigens die Beispiele. Das lief im 
Rahmen eines Uni-Workshops.

: Bearbeitet durch User
von miezekatzen_dompteur (Gast)


Lesenswert?

Hallo Gustl,

ich hab dein VGA Beispiel als Basis verwendet, den AD-Wandler verwende 
ich ohne AXI Interface. Als Beispiel habe ich deinen AD-Wandler mit UART 
verwendet. Ich schaue mal in den Constrains ob ich den AD-Wandler auf 
3.3V legen kann.

Gruß

MD

von Gustl B. (-gb-)


Lesenswert?

Sehr gut! Nur aus Interesse:
Bist Du von der Uni Regensburg? Wenn ja, wir werden dort jetzt im 
Wintersemester wieder etwas mit FPGA machen. Geplant ist bisher, dass 
die Teilnehmer Projekte vorschlagen, wir uns dann eines heraussuchen, in 
kleine Blöcke zerteilen und die nach und nach als "Hausaufgabe" stellen. 
Das wird dann einmal die Woche während der Veranstaltung (und im 
Uni-Forum) besprochen. Vermutlich wird es sowas wie das was Du jetzt vor 
hast, also Daten irgendwie erfassen, verarbeiten, anzeigen oder 
irgendwie ausgeben. Und das mit dem Nexys4 Board. Ich fände z. B. ein 
einfaches Videospiel gesteuert mit dem verbauten Beschleunigungssensor 
ganz nett.

von MD (Gast)


Lesenswert?

Hi gustl,

ich bin von BIO/ VKL...wir haben einen Versuch im Fliegen bei dem wir 
ein Monitormuster in Abhängigkeit des AD Wertes verändern...die AD Werte 
sollen auch abgespeichert werden.

Ich habe den Fehler gefunden, lag in den Constrains.

Ciao ciao

MD

von J. S. (engineer) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Geplant ist bisher, dass
> die Teilnehmer Projekte vorschlagen, wir uns dann eines heraussuchen, in
> kleine Blöcke zerteilen und die nach und nach als "Hausaufgabe" stellen.
Macht am Besten was mit Messtechnik, Sensorik und löst elektronische 
Problem. Nicht viel geklicke mit viel output, wo am Ende der Lerneffekt 
minimal und der Gebrauchswert Null ist, wie bei Vielem, was da 
gebrutzelt wird. Vor allem bitte nicht den 5000sten Musikerzeuger :-)

von Gustl B. (-gb-)


Lesenswert?

Ich werde mich nach den Wünschen der Teilnehmer richten. 
Signalverarbeitung und Regelung hat halt als Voraussetzung, dass man das 
mal gelernt hat. So nebenbei an einem Termin kann ich das nicht 
abfrühstücken. Aber welche motivierende Projektvorschläge gibt es denn 
die man mit Anfängern in einem Semester schaffen kann? Mir geht es drum, 
dass die Hardwaredenkweise gelernt wird und weniger darum fertige IP 
Blöcke zusammenzuklicken. Das funktioniert nämlich auch nur wenn man 
versteht was da passiert. Man könnte einen Microblaze verbauen und dann 
alles im SDK mit C machen, aber das ist nicht Sinn der Sache.
Das Problem an Messtechnik und Sensorik ist, dass das erstmal nur die 
Datenerfassung ist. Was macht man dann damit? Man könnte Signalverläufe 
auf VGA anzeigen wie beim Oszi oder ein einfaches Videospiele damit 
steuern. Oder eben Audioausgabe. Wieso eigentlich nicht? Z. B. den 
Beschleunigungssensor als Eingabe für ein Effektgerät verwenden.

von S. R. (svenska)


Lesenswert?

Ich nehme gerade an einem Kurs teil, der ungefähr wie folgt strukturiert 
ist:
- Lab 1: State Machine (Mealy und Moore,
  Sequenzerkenner für beides implementieren), nur Simulation
- Lab 2: PS/2 Keyboard Controller (auf dem Nexys4 ist ein PIC drauf,
  der USB-HID auf PS/2 umsetzt) und Siebensegmentanzeigen
- Lab 3: ALU (Plus, Minus, Modulo-3, jeweils mit/ohne Vorzeichen)
- Lab 4: VGA und "Taschen"rechner (Tastatur - ALU - Bildschirm)

Der nächste Schritt wäre dann Speicher, dass man mehrere 
Rechenoperationen in einem Stack abspeichern kann, bevor man sie in 
umgekehrter Reihenfolge ausführt. Wenn dann noch Zeit ist, kann man die 
ALU z.B. Pipelined machen etc.

Um Datenerfassung und -verarbeitung geht es in unserem Kurs allerdings 
explizit nicht. Die Zeit reicht nicht für beides.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

S. R. schrieb:
> Die Zeit reicht nicht für beides.

Genau. Der Kurs bei Dir geht vermutlich mehr um Rechnerarchitektur. Das 
kann ich hier auch nicht als Voraussetzung verlangen und auch nicht 
nebenbei noch vermitteln.
Schreibt ihr das alles selber in VHDL oder verwendet ihr viele fertige 
Blöcke?

von S. R. (svenska)


Lesenswert?

Der Kurs ist eine Einfühung in VLSI-Design, hat also nichts mit 
Rechnerarchitektur zu tun (dafür gibt es im Studiengang ein Extra-Fach, 
aber da ich dort nicht studiere, weiß ich darüber nichts weiter).

Explizit ging es um Register, Kombinatorik und Zustandsautomaten, aus 
denen dann Funktionalität zusammengebaut wurde.

Bis Lab 3 haben wir alles selbst in VHDL geschrieben, aber mit 
vorgegebener Struktur (leere Blöcke). Fertige IP wird nur für Speicher 
(von Xilinx) und für VGA (vom Kursleiter, nicht zwingend) benutzt.

von Gustl B. (-gb-)


Lesenswert?

Ah ok. ALU klang jetzt eher danach zu lernen wie eine CPU funktioniert 
und generell Rechner aufgebaut sind. Aber auch das ist sehr lehrreich 
wenn man Digitalschaltung lernen möchte.

S. R. schrieb:
> Bis Lab 3 haben wir alles selbst in VHDL geschrieben, aber mit
> vorgegebener Struktur (leere Blöcke). Fertige IP wird nur für Speicher
> (von Xilinx) und für VGA (vom Kursleiter, nicht zwingend) benutzt.

So möchte ich das auch halten, also IP Blöcke nur um zu zeigen wie man 
auch mit sowas umgeht, ist ja heute fast alles AXI ...

von S. R. (svenska)


Lesenswert?

Nein, unsere "ALU" ist rein kombinatorisch mit nem Multiplexer hinten 
dran. Aber mit einer ALU als Konzept kann man den Unterschied zwischen 
Control Path und Data Path gut verdeutlichen.

Für Modulo-3 wurde übrigens absichtlich kein Algorithmus vorgegeben (bis 
auf die Vorgabe, dass es einer mit shifts sein muss), sondern das 
selbstständige Suchen und Implementieren gehörte dazu. Gleiches gilt für 
das optionale Lab 5, wo man eine Wurzelfunktion in die ALU 
implementieren muss.

von Duke Scarring (Gast)


Lesenswert?

S. R. schrieb:
> Wurzelfunktion in die ALU implementieren
[...]
> unsere "ALU" ist rein kombinatorisch

'Wurzelfunktion' und 'rein kombinatorisch' klingt für mich nach einem 
riesigem Gattergrab. Wie sind denn die Bitbreiten eurer ALU? 4 Bit?

Duke

von S. R. (svenska)


Lesenswert?

Duke Scarring schrieb:
> 'Wurzelfunktion' und 'rein kombinatorisch' klingt für mich nach einem
> riesigem Gattergrab. Wie sind denn die Bitbreiten eurer ALU? 4 Bit?

Das war missverständlich. Die bisherige ALU hat ist 8 Bit breit, rein 
kombinatorisch und kann keine Wurzeln.

In einer späteren Aufgabe sollen wir eine Wurzelfunktion hinzufügen, 
haben aber eine Ressourcenbegrenzung und werden die ALU getaktet 
aufbauen - sonst geht's nicht.

von A. F. (chefdesigner)


Lesenswert?

Gustl B. schrieb:
> Das Problem an Messtechnik und Sensorik ist, dass das erstmal nur die
> Datenerfassung ist. Was macht man dann damit? Man könnte Signalverläufe
> auf VGA anzeigen wie beim Oszi oder ein einfaches Videospiele damit
> steuern. Oder eben Audioausgabe. Wieso eigentlich nicht? Z. B. den
> Beschleunigungssensor als Eingabe für ein Effektgerät verwenden.

Du musst Dich fragen, was die Kinderlein lernen sollen:

- Projektabwicklung?  -> Requirements machen lassen, PH, schreiben 
lassen
- Signalverarbeitung  -> Mathe formulieren, getakteten Algo hinscheiben
- VHDL-Programmierung -> Einfaches Problem mit dynamischer VHDL-Struktur
- FPGA-Probleme       -> Elektronik, Spannungen, Bänke, LVDS
- C-Programmierung?   -> PICOblace drauf, SOC, viel Klicken, Busse
- Inbetriebnahme      -> Testplan, Selbst-Test-Integration,


eigentich müssten die ALLEs lernen. Bei den Mischprojekten kommt aber 
das, was wirklich interessant und wichtig ist, nämlich der erste und der 
letzte total zu kurz.

Heraus kommen aus den Hochschulen im Moment viele FPGA-Dünnbrettbohrer, 
die mit MATLAB und EDK große Signalverarbeitungsprojekte anwerfen, die 
gewaltig aussehen, aber niemals nicht funktionieren, weil sie falsch 
geplant, nicht konzeptioneirt sind und niemals in Betrieb zu kriegen 
sind.

Das ist vielfach zu oberflächlich!

von Gustl B. (-gb-)


Lesenswert?

Tja, da hast Du Recht. Aber wir haben nur ein Semester und zwei Stunden 
je Woche. Ich würde das auch echt gerne in mehr Zeit machen aber das ist 
eine Uni, keine FH. Wir haben sowieso großes Glück, dass wir das an der 
Physik Fakultät machen dürfen. Informatik gibt es bei uns nicht.
Ich möchte soweit kommen, dass die Teilnehmer die Grundlagen verstanden 
haben und selber kleine Projekte bauen können. Für alles Weitere müssen 
Interessierte dann selber Zeit investieren.

von S. R. (svenska)


Lesenswert?

Dann musst du dich halt auf irgendwas spezialisieren, und unter den 
gegebenen Bedingungen ist eine Kombination aus "Kombinatorik", 
"Register" und "fertige IP einbinden" durchaus sinnvoll. Für "sinnvolle 
IP selbst entwickeln" reicht die Zeit nicht.

Das ist dann zwar oberflächlich, aber wenigstens nützlich. Die 
Alternative wäre ein Kurzvortrag zu jedem Thema, welches vom Niveau 
nicht über das durchschnittliche Blog hinausgeht und in der Klausur auf 
"auswendig lernen und aufschreiben" hinausläuft.

von Gustl B. (-gb-)


Lesenswert?

Also Klausur gibt es nicht, soll nur die Teilnehmer  motivierten und ein 
paar Grundlagen vermitteln. Also den Einstieg ins Thema etwas begleiten. 
Wir sehen halt dass bei uns in der Physik für einige Aufgaben FPGAs 
verwendet werden, es aber keine Veranstaltung dazu gab. Die die das 
verwendet haben haben sich das also selbst beigebracht wie ich ja auch. 
Und damit das etwas weniger steinig wird gibt es jetzt einen Kurs.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Gustl B. schrieb:
> Die die das
> verwendet haben haben sich das also selbst beigebracht wie ich ja auch.

Was wird denn da gemacht und mit welchem Ziel? Wäre es nicht sinnvoller, 
erst die Grundlagen zu erörtern und dann die Anwendung zu starten?

Ich hatte auch zu dem Thema wieder eine Diskussion mit meinem Neu-Boss, 
der in die Firma eingestiegen ist und früher Vorlesungen in Friedberg 
gehalten hat: Auch er bemängelt, daß heute viel zu viel Masse gemacht 
wird und die Studenten aufgeblasene Projekte durchziehen, die nach viel 
aussehen und wenig bringen, weil sehr oberflächlich durchgezogen. Am 
Ende kommen Studenten heraus, die alle sehr viel können, aber nichts 
richtiges. Ich fände es besser, wenn man weniger machen würde und das 
dann vertiefter.

von Gustl B. (-gb-)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4777302:
> Was wird denn da gemacht und mit welchem Ziel? Wäre es nicht sinnvoller,
> erst die Grundlagen zu erörtern und dann die Anwendung zu starten?

Das wäre bestimmt sinnvoller, aber darauf haben wir keinen Einfluss. 
Hier in der Physik gibt es eben Arbeiten teilweise mit Abschluss 
(Master/Diplom) oder auch einfach so muss etwas gebaut werden und da 
fällt die Wahl eben auch manchmal auf einen FPGA. Das sind aber 
Physiker, die haben nichts zu dem Thema gelernt. Und weil da aber dann 
der FPGA verwendet werden soll oder es eben nicht anders geht, bringen 
sich die das dann auch bei.
Die Ziele sind sehr unterschiedlich, also von Bilderkennung und 
Messwerterfassung bis zur Verwendung eines einzelnen MMCM von Xilinx 
weil man den zur Laufzeit rekonfigureiren kann und davon auch mehrere im 
FPGA hat.

Jetzt in dem Kurs versuchen wir die Grundlagen beizubringen was aber 
auch schwer ist in einem Semester und nur 1,5 Stunden je Woche. Ganz 
trocken soll das ja auch nicht sein.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Ist das eigentlich das Nexys 4 Video?

von Gustl B. (-gb-)


Lesenswert?

Das gibt es nicht. Es gibt aber ein Nexys Video (mit XC7A200T).

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.