Forum: FPGA, VHDL & Co. gibt es "lokale" Signale?


von Randy (Gast)


Lesenswert?

Hallo,

ich mache gerade meine ersten Basteleien mit VHDL. Zur Zeit habe ich 
alles in einer einzigen entity, was nicht unbedingt schlecht sein muß, 
sind ja nur ca. 200 Zeilen.
Verschiedene Teile sind in verschiedenen Prozessen zusammengefasst. 
Manchmal schreibe ich einen Prozess, der ein paar rein interne "Kabel" 
hat die ich trotzdem als Signale machen will und nicht als Variablen. In 
diesem Fall könnte ich ein "lokales Signal" brauchen das nur innerhalb 
des Prozesses sichtbar ist. Gibt es sowas? Ab und zu gibt es das Problem 
wenn ich einen Prozess in einem anderen Bastelei wiederverwenden will 
dass ich drauf aufpassen muß dass es bei den Prozessen keine 
Überschneidung bei den Signalnamen gibt. Extra eine Entity schreiben für 
einen Codeschnippsel der vielleicht 20 oder 40 Zeilen hat ist mir auch 
zu aufwändig...

Vielen Dank
Randy

von Xenu (Gast)


Lesenswert?

Nö, gibt's nicht. Würd mich mal interessieren, wieso Dir in Prozessen 
die dafür vorgesehenen Variablen nicht reichen und Du unbedingt Signale 
brauchst.

Beispiel?

von Andreas (Gast)


Lesenswert?

Hallo Randy (Gast),
wie schon mein Vorschreiber bemerkt und Du mit deiner Ankündigung das 
Dir eine eigene Entity zu aufwendig ist schon befürchtet hast ist in 
VHDL nichts vorgesehen, Signale innerhalb einer Entity zu lokalisieren.

Wenn Du so anspruchsvoll (extra Entity .... zu aufwendig) bist, könnte 
Dir allerhöchstens der Umstieg auf verilog helfen. der Schreibaufwand 
bei Verilog Code liegt insgesamt etwas niedriger als bei VHDL.

VHDL Code wurde nicht mit der Premisse erschaffen, dem Programmierer 
möglichst (Schreib-)Arbeit anzuschaffen sondern durch eine sehr 
restriktive und knappe Syntax Fehler zu vermeiden bzw. lokalisierbar zu 
machen. (Vergleichbar mit der Programmiersprache ADA).
Inwieweit dies gelungen ist, darüber lässt sich allerdings streiten. 
Über ADA jedenfalls spricht heute (fast) kein Mensch mehr, VHDL haben 
wir aber nach wie vor am Bein.

Gruß

Andreas

von Fpgakuechle K. (Gast)


Lesenswert?

Randy schrieb:

> Verschiedene Teile sind in verschiedenen Prozessen zusammengefasst.
> Manchmal schreibe ich einen Prozess, der ein paar rein interne "Kabel"
> hat die ich trotzdem als Signale machen will und nicht als Variablen. In
> diesem Fall könnte ich ein "lokales Signal" brauchen das nur innerhalb
> des Prozesses sichtbar ist. Gibt es sowas? Ab und zu gibt es das Problem
> wenn ich einen Prozess in einem anderen Bastelei wiederverwenden will
> dass ich drauf aufpassen muß dass es bei den Prozessen keine
> Überschneidung bei den Signalnamen gibt.

architecture
begin

 b1: block is
  signal adfg : ...
 begin
  process(...)
   adfg <= ..
  end process
 end block b1;

 b2:block is
  signal adfg: ...
 begin
  process(...)
   adfg <= ..
  end process;
 end block b2;

end architecture;

MfG

von Randy (Gast)


Lesenswert?

Xenu schrieb:
> in Prozessen die dafür vorgesehenen Variablen nicht reichen und Du
> unbedingt Signale brauchst.

Ich kenne mich in VHDL nicht genug aus um mir eine eigene Meinung zu 
bilden, ich hab hier gelesen dass man besser Signale benutzt, außer wenn 
man einen guten Grund hat auf eine Variable auszuweichen:
Beitrag "Variable vs Signal"


Fpga Kuechle schrieb:
> b1: block is

Ah, Block kannte ich noch gar nicht. Das werde ich die Tage gleich 
ausprobieren. Vielen Dank.

Randy

von Randy (Gast)


Lesenswert?

> wie schon mein Vorschreiber bemerkt und Du mit deiner Ankündigung das
> Dir eine eigene Entity zu aufwendig ist

40 Zeilen Code in eine eigene Entity zu schieben bringt hald 
entsprechend Schreibarbeit mit sich... Hatte schon gelesen dass VHDL 
nicht zum mal eben Quick&Dirty Code hinschreiben geeignet ist... werde 
aber nicht auf Verilog ausweichen weil ich mehr Leute kenne die mir VHDL 
erklären können als bei Verilog... Vehältnis ca. 2:0 ;-)... Aber vielen 
Dank für deine Einschätzung...

Randy

von Klaus F. (kfalser)


Lesenswert?

Randy schrieb:
> 40 Zeilen Code in eine eigene Entity zu schieben bringt hald
> entsprechend Schreibarbeit mit sich...

Hat aber Vorteile ...

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.