Prozedur mt variablen Ports

Gast #2814775
Lesenswert?
• ▲
▼
Hallöchen,

ich habe mal eine Frage an das Forum:


Wie schaffe ich es, in einer Prozedur ein Ausgangsport generisch zu 
halten?



Beispiel:

1
procedure TEST ( 
2
   signal Ausgang : out std_logic_vector(7 downto 0) 
3
)
4
is
5
begin
6
    Ausgang <= x"77";
7
end TEST;


Nun möchte ich die Vektorbreite variabel halten, also z.B. 16bit.


Geht dann sowas:

1
procedure TEST ( 
2
   signal Ausgang : out std_logic_vector
3
)
4
is
5
begin
6
    Ausgang <= x"7778";
7
end TEST;


Die Frage ist also, ob ich den Vektor constrainen muss oder nicht?


LG, DuArte
Moderator (Firma: Titel) Persönliche Seite #2814815
Lesenswert?
• ▲
▼
DuArte schrieb:
> Die Frage ist also, ob ich den Vektor constrainen muss oder nicht?
Nein, musst du nicht. Sieh dir einfach mal ein paar 
Bibliotheksfunktionen an, denen du Vektoren übergeben kannst.
Aus der numeric_std z.B. to_integer():
1
function TO_INTEGER(ARG: UNSIGNED) return NATURAL is
2
constant ARG_LEFT:INTEGER:= ARG'length-1;
3
alias XXARG:UNSIGNED(ARG_LEFT downto 0) is ARG;
4
variable XARG:UNSIGNED(ARG_LEFT downto 0); 
5
variable RESULT: NATURAL:= 0;
6
variable w : INTEGER:= 1;  -- weight factor
7
begin
8
  if (ARG'length<1) then
9
    assert NO_WARNING
10
    report "numeric_std.TO_INTEGER: null arg"
11
    severity warning;
12
    return 0;
13
    end if;
14
  XARG:= TO_01(XXARG);
15
  if (XARG(XARG'left)='X') then
16
    assert NO_WARNING
17
    report "numeric_std.TO_INTEGER: metavalue arg set to 0"
18
    severity warning;
19
    return 0;
20
    end if;
21
  for i in XARG'reverse_range loop
22
    if XARG (i) = '1' then
23
      RESULT:= RESULT + w;
24
      end if;
25
    if (i /= XARG'left) then w := w + w;
26
      end if;
27
    end loop;
28
  return RESULT;
29
  end TO_INTEGER;
Quelle: 
http://www.csee.umbc.edu/portal/help/VHDL/packages/numeric_std.vhd

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