User Login


Sie sind noch nicht eingeloggt!

     anmelden |  registrieren

Termine


08. - 10.12.2014: Frankfurt |
PLC2 - Video Signal Processing

08. - 12.12.2014: Freiburg |
PLC2 - Expert FPGA Schaltungstechnik

08. - 10.12.2014: Mnchen |
PLC2 - Compact ZYNQ for HW Designers

Boards


Spartan 6 FPGA SP605 Evaluation Kit (XC6SLX45T-FGG484)
    

Links


FPGA Hersteller:  Altera
Xilinx
Lattice
FPGA Schulungen:  PLC2
El Camino
Trias
Weiteres:  VHDL ORG

Literatur


Dieter Wecker

Prozessorentwurf

Jahr: 2015
ISBN-10: 3110 4029 63

IP core wie einbinden und debuggen?

Ihr wollt IP-Cores auf einem Altera System benutzen und habt Fragen bzw. Probleme - dann seht hier nach.

IP core wie einbinden und debuggen?

Beitragvon FABELTiER » Mo 23. Jun 2014, 14:02

Hallo, ich bin ziemlich neu im Umgang von FPGAs. Ich war mir daher auch unsicher bei Sparte des Forums, sorry. Nun habe ich eine recht generelle Frage. :(

Ich will folgenden IP core http://opencores.org/project,aes_128_192_256 mit meinem Cyclone V SoC FPGA board ausprobieren und diesen aus dem Linux Kernel ansprechen. Mit dem Linux Kernel bin ich etwas vertrauter als mit FPGAs. Ich habe ein paar erste VHDL Schritte gemacht, aber bin mir nun sehr unsicher, wie ich zB so ein AES IP core eigentlich am besten anspreche.

Momentan versuche ich mich an QSYS. Fuer ein Anfaenger LED Blinker Projekt in VHDL habe ich nun ein "new Component" erstellt, und meine eigene VHDL Datei hineingezogen. Das erstellte .qip wollte ich in mein Project (eine andere .vhd und ein sog. top Level .vhd) einbinden. Es laeuft auch wie vorher (nur .vhd Dateien) Nun sehe ich aber irgendwie wird die dort verwendete clock im .vhd des "new Component" (ich versuche hier den delay zu veraendern) gar nicht verwendet. Mir ist total schleierhaft wie man sowas eigentlich dann debugt. Soweit habe ich auch nur die gratis Quartus II Version installiert.

Also, vllt, kann mir jemand mal das allg. Vorgehen mal beschreiben und evtl. auch ein paar Tipps oder Links geben? Auch zum Debuggen..

Danke fuer Eure Geduld mit meinen doch sehr allg. Fragen!!
FABELTiER
 
Beiträge: 3
Registriert: Mo 23. Jun 2014, 12:56

Re: IP core wie einbinden und debuggen?

Beitragvon Tobias » Di 24. Jun 2014, 13:33

Hallo,

das ist bei Altera echt noch nicht gut dokumentiert. Ich vermute du musst auf jeden Fall im Qsys erstmal dein HPS System konfigurieren. Unter Embedded Processors --> Hard Processor System. Danach benötigst du noch ein eine Verbindung von dem HPS zu deiner FPGA-User-Peripherie (also dein eigenes VHDL-Design oder halt das von OpenCores). Unter Qsys Interconnect musst du denk ich das AXI-Interface oder den AHB-Bus auswählen, je nachdem was der OpenCores Kern als Schnittstelle unterstützt. Und anschließend kannst du deine eigene Komponente aus deiner zu integrierenden VHDL-Datei einbinden. Dann am Besten durch die unten angezeigten Fehlermeldungen hangeln. Die sollten genau aufzeigen welche Verbindungen und Einstellungen fehlerhaft sind.

Um einfach nur ein paar LEDs anzusteuern kannst du für einen Test auch einfach mal das unter Peripherals --> Microcontroller Peripherals --> zu findende PIO verwenden. Dann kannst du die zugewiesenen Registeradressen direkt vom Controller (bei Verwendung eines Bare-Metall-Designs) ansprechen. Bei Linux weiß ich es nicht genau. Dort musst du ja dem Betriebssystem jede Hardwareveränderung und damit Registeradressenanpassung mitteilen.

Habe leider kein SoC Board da, sonst könnte ich mal schnell etwas ausprobieren.

Viele Grüße

Tobias
Benutzeravatar
Tobias
 
Beiträge: 312
Registriert: Do 10. Dez 2009, 09:49

Re: IP core wie einbinden und debuggen?

Beitragvon FABELTiER » Do 26. Jun 2014, 16:09

Hallo,

Vielen Dank fuer die Hilfe, ich haenge wirklich uebelst!!!

Zunaechst hatte ich eine LED Ansteuerung nachgebaut nach folgendem Tutorial (sh Link unten, aber part 1). Leider habe ich bei meinem Board keine Buttons oder sonstige direkte Eingabemoeglichkeit. Pins direkt verbinden und grounden, wie mir das erklaert wurde wollte ich nicht riskieren, da mir das Board nicht gehoert. Also habe ich einfach versucht das blinken in VHDL (also nicht Verilog wie im Link) zu implementieren, eben zunaechst ohne Input und Frequenzaenderung. Es funktioniert auch. Teil 2 war das BSP fuer Linux, die Bridge zu enablen und zu benutzen, hier kenn ich mich besser aus. Ich hatte noch eine andere Anwendung aus einem Fortbildungsmaterial dazu und konnte es so umsetzen.

Nun bin ich bei Teil 3 und dem urspr. Tutorial, sh. Link: http://zhehaomao.com/blog/fpga/2013/12/27/sockit-3.html und haenge nun schon seit Wochen. Konkret versuche ich hier folgende Dinge:
[*] per Qsys einen IP core zu erstellen, und dann
[*] per Linux die Werte fuer die Blinkfrequenzen zu setzen
[*] danach will ich gerne mein eigentliches Problem angehen, diesen AES core in qsys mal einzubauen

Mein Problem ist v.a. erstmal der IP Core. Ich habe ein Setup unter Qsys mit HPS und Clock gemacht, soweit alles wie im Link. Als eigene Komponente habe ich eben mein delay_ctrl.vhd eingeladen. Es blinkt zunaechst auch wie erwarten. Als ich nun im delay_ctrl.vhd etwas aenderte, gab es allerdings keine Aenderung im Verhalten (dh. nach Generation, tcl Pin-layout script, und Rebuild). Ich setzte kuerzere Frequenzen hardcoded im delay_ctrl.vhd: keine Aenderung; schliesslich habe ich einfach mal 'asdf' ins delay_ctrl.vhd eingetippt: keine Aenderung.

In Qsys gibt es ein "refresh" aber das scheint manchmal einfach nicht zu funktionieren. Daher mache ich nun bei einem Update quasi einen kompletten Neuzusammenbau um sicher zu gehen. Ich hatte auch schon mit den Revision Nummern der Component herumgespielt, dh. von 1.0 auf 2.0. Dann loeschte ich di Component, baute sie erneut zusammen, diesmal wieder 1.0, und hatte pleotzlich dann die verruecktesten Fehlermeldungen bis schliesslich ein extra total "clean" und Neuzusammenbau alles mit dem selben Code wieder loeste.. uff - weiss da jemand bescheid, wie man Qsys korrekt updated wenn sich die .vhd Datei einer Kompoenente geaendert hat?

Ich bin mir Sicher, dass mein VHDL absoluter "Schrott" ist, aber so herumzustochern bei minutenlangen Kompilationszeiten ist sehr nervend.. Ich denke, dass die Veraenderungen, die allesamt mit der Blinkfrequenz zu tun haben wohl von problemen mit der Clock herkommen. Konkret verwende ich clk, ich denke dass anderes clk evtl. mein clk ueberschreibt und so permanent auf die anderne clk ticks reagiert werden, kann das sein? Nun habe ich versucht alles umzubenennen und kaempfe seither wieder mit der Kompilation...

Zur Implementierung selber, hier stochere ich einfach immer sehr im Dunkeln. Ich weiss nicht ob ich irgendwie konkrete Werte fuer printouts setzen kann, zum Debuggen. Oder ob man hier irgendwo ggf. irgendeine Simulation einsetzen kann, einfach um zu sehen ob eine Aenderung ueberhaupt benutzt wird und wie weit der Code ausgefuehrt wird - wie geht das?

Gerne kann ich hier auch meinen VHDL Code posten, wenn das wer sehen will, aber dann wird der Post etwas laenger :s
FABELTiER
 
Beiträge: 3
Registriert: Mo 23. Jun 2014, 12:56


Zurück zu Altera IP-Core Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron