gibt es "lokale" Signale?

Gast #1629690
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
Gast #1629758
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
Gast #1629772
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
Gast #1629796
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
Gast #1629810
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren