mikrocontroller.net

Forum: FPGA, VHDL & Co. Vivado IP Blocks und VHDL gemeinsam


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Vivado Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche gerade in Vivado zusätzlich zum IP Block mit einem 
Microblaze und Uart eine Button/LED Logik zu implementieren.

Es ist aber so, dass im Pin Design die Ports für LED und Button nicht 
auftauchen (nur die aus dem IP Design).

Bei meiner Suche habe ich die Möglichkeit gefunden einen eigenen IP 
Block zu erstellen und diesen dann in das IP Design zu integrieren.

Für mich erscheint das aber als Overkill, wenn ich einfach einen 
Schalter mit einer LED verbinden möchte.

Geht das nicht einfacher/schneller?

Autor: Klakx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vivado Einsteiger schrieb:
> Pin Design

Was ist denn das? IO-Planner?

Ansonsten setz doch noch in dein Blockdesign ein GPIO-Controller rein. 
Da kannst du sicher LED und Taster-Pins rausführen ("Make External").

Autor: S. R. (svenska)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist möglich, ein VHDL-Design als Block im Blockdesign (BD) zu 
benutzen. Wie man das in der GUI macht, weiß ich nicht, ich erzeuge das 
BD aus einem TCL-Script (d.h. das BD ist mein Top-Level-Design). Die 
Source-Files müssen Vivado bekannt sein, dann findet der die Referenz 
auch.

Für einen Zynq sieht das z.B. so aus:
# block erzeugen
set design [ create_bd_cell -type module -reference design design_0 ]

# block verdrahten (hier für clk)
connect_bd_net -net FCLK_CLK0 \
  [ get_bd_pins proc_sys_reset_0/slowest_sync_clk ] \
  [ get_bd_pins processing_system7_0/FCLK_CLK0 ] \
  [ get_bd_pins design_0/clk ]

Im Blockdesign taucht das Modul dann als "RTL"-Block auf. Ist sogar in 
der GUI parametrierbar, wenn man die GENERICs passend hinschreibt. :-)

: Bearbeitet durch User
Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch schon mit RTL-Modulen (VHDL) in Vivado gearbeitet und bin 
damit auch sehr zufrieden. Meines Erachtens ein Bug besteht darin, dass 
beim Öffnen des Projektes immer eines der eigenen Module als 
Top-Level-Modul gesetzt wird. Deswegen muss ich jedes Mal wieder das 
Microblaze-Blockdesign mit "Set as Top" explizit setzen. Etliche 
Versuche, dies in das TCL-Skript zur Erzeugung des Projektes 
aufzunehmen, sind gescheitert.

Kennt jemand von Euch den Trick?

Das obige Verhalten ist reproduzierbar mit Vivado 2016.2, 2016.4, 
2017.1. Als Basis für mein Projekt habe ich die von Trenz 
bereitgestellten Skripte usw. für das TE0725 verwendet, d.h. Artix 7 mit 
Microblaze.

Autor: S. R. (svenska)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Kennt jemand von Euch den Trick?

Mein build.tcl enthält:
# create 'sources_1' fileset (if not found), set its properties
if {[string equal [get_filesets -quiet sources_1] ""]} {
  create_fileset -srcset sources_1
}
set obj [get_filesets sources_1]
set_property "top" "top_wrapper" $obj
set_property "ip_repo_paths" "[file normalize $origin_dir/ip_repo]" $obj
update_ip_catalog -rebuild

...

# create block design and wrapper
source $origin_dir/src/bd/top.tcl
set design_name [get_bd_designs]
make_wrapper -files [get_files $design_name.bd] -top -import

Damit funktioniert's bei mir (Vivado 2016.2).
Allerdings habe ich keinen MicroBlaze, sondern einen Zynq.

: Bearbeitet durch User
Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, das werde ich demnächst mal ausprobieren!

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und?

Autor: Xilinx USER (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine ähnliche Anforderung und möchte einen kleinen VHDL-Block 
in ein MicroBlaze-Design einsetzen. Wie geht das am Schnellsten, bzw 
welche AXI-Block wäre empfehlenswert?

Das VHDL hat verschiedenen Parameter und Ergebnisvektoren, die Stati 
anzeigen. Diese sollen per MicroBlaze geschrieben und gelesen werden. 
(am MB hängt ein CAN-Controller, der schon läuft).

Autor: Samuel C. (neoexacun)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Dann ist es in deinem Fall wohl am einfachsten, über den Menüpunkt 
Tools->Create an Package New IP (ich gehe davon aus, du nutzt Vivado) 
einen eigenen AXI-Slave zu generieren. In dem Slave kannst du dann 
beliebig auf Schreib- und Lesezugriffe des Masters reagieren.

Ein eigener Thread für deine Frage wäre übrigens besser gewesen, anstatt 
hier so einen Zombie zu erzeugen.

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Samuel C. schrieb:
> Ein eigener Thread für deine Frage wäre übrigens besser gewesen, anstatt
> hier so einen Zombie zu erzeugen.

Zombie?

Er schreibt ja:

Xilinx USER schrieb:
> Ich habe eine ähnliche Anforderung

-----------

Ich mache das so, dass alle reinen VHDL-Module einen wrapper bekommen, 
die sich AXI-kompatibel machen und zwar entweder AXI oder AXIS und 
keinesfalls beides zusammen mit dem VHDL Interface.

Das aufrechterhält die Modularität und gestattet flexibel zu bauen.

Umgekehrt brauchen dann die AXI-Brocken einen VDHL-wrapper, der deren 
Timing "entaxifiziert". Geht zusammen mit einem Buffer und einem 
AXI-Master/Slave der die Daten in einen kontinuierlichen Daten strom 
verwandelt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.