Hallo,
ich hätte mal eine Frage bzgl. Signalzuweisung an einen Ausgangsport.
Häufig lese ich in Lehrbüchern Signalzuweisungen der Art (und so habe
ich es auch mal gelernt):
1 | entity add is
|
2 | port (
|
3 | clk: in std_logic;
|
4 | reset: in std_logic;
|
5 | a: in unsigned;
|
6 | b: in unsigned;
|
7 | sum: out unsigned
|
8 | )
|
9 |
|
10 | archtitecture beh of add is
|
11 | signal sum_i: unsigned;
|
12 | begin
|
13 | pp: process(clk, reset)
|
14 | begin
|
15 | if reset = '0' then
|
16 | sum_i <= (others => '0');
|
17 | elsif rising_edge(clk) then
|
18 | sum_i <= a+b;
|
19 | end if;
|
20 | end process pp;
|
21 |
|
22 | sum <= sum_i;
|
23 |
|
24 | end beh;
|
Ich verstehe nicht, wozu im Prozess extra ein temporäres Signal
deklariert werden muss. Ich mache das immer so, das innerhalb eines
Prozesses direkt auf den Ausgangsport schreibe:
1 | archtitecture beh2 of add is
|
2 | begin
|
3 | pp: process(clk, reset)
|
4 | begin
|
5 | if reset = '0' then
|
6 | sum <= (others => '0');
|
7 | elsif rising_edge(clk) then
|
8 | sum <= a+b;
|
9 | end if;
|
10 | end process pp;
|
11 | end beh2;
|
Funktional ist das doch das gleiche und erspart auch noch die lästige
Arbeit zusätzliche Signale zu deklarieren. Gibt es evt. doch einen
trifftigen Grund weshalb ich die erste Variante wählen sollte? Wie macht
ihr das?
Danke & Gruß,
Joe