www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Funktionsaufrufe kapseln


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte meine VHDL-Testbench besser strukturieren und z.B. 
organisierte Abläufe von der eigentlichen Testumgebung trennen, weil 
sowohl Ablauf, als auch Testumgebung varieren. Z.B. habe ich mehrere 
Hardwarekonstellationen (altes Prozessorboard, neues Prozessorbard mit 
jeweils alten AD-Wandlern und neuen Wandlern), die mit unterschiedlichen 
Testbenches zusammengesetzt sind, welche aber auf dieselbe Weise geprüft 
werden müssen. Da ich die verschiedenen Testbaläufe nur einmal schreiben 
und dann zu den Testbenches hinzuladen will, sollen die als 
Funktionsaufrufe abgespalten werden und in eine eigene Datei. Die 
Funktionen sollen aber trotzdem die Signale an die einzelnen Module in 
der Testumgebung anlegen können.

Problem: Wie komme ich über die entity-Grenze hinweg?

Autor: Fpga4u (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

verwende ein Package, in dem du globale Signale definierst.
Diese globalen Signale können in der gesamten Design-Hierarchie über die 
Entity-Grenzen hinweg gesetzt und abgefragt werden. Das Package muss 
natürlich im entsprechenden Modul eingebunden werden :
library work;
use work.pkg_test.all;


Vorsicht ist geboten, wenn man das globale Signal von mehreren Modulen 
aus treiben möchte, das geht ohne Weiteres schief.

Dieses Vorgehensweise funktioniert ausschließlich für Simulation.

Gruß,
Fpga4u

Autor: Fpga4u (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Packages allgemein erleichtern das Funktion/Prozedur-Handling

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>verwende ein Package, in dem du globale Signale definierst.

Wie mache ich das? Ich habe oben in Package ein Signal definiert, kann 
es aber nicht einmal IM Package selber treiben.

"cannot drive this signal from this subprogra"
package drive_output is
  signal global_signal : std_logic_vector(7 downto 0);
  
-- drive output signal
procedure move_motor
(
  signal inputs : in  std_logic_vector(47 downto 0);
  signal outputs : out std_logic_vector(35 downto 0);
  signal code : in  std_logic_vector(15 downto 0)
);

Ich treibe ich alle Signale über outputs mit move_motor 
(inputs,outputs,code); und möchte eigentlich dahin kommen, daß ich 
schreiben kann :

move_motor (code);

Im Package soll dann je nach Code verzeigt werden und in Abhängigkeit 
der Inputs die Outputs getrieben werden.



move_motor (inputs,outputs,code);

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.