Konstanten in VHDL

Gast #1195133
Lesenswert?
• ▲
▼
Hallo

wie kann ich den Vorteilerwert (1667) in folgendem VHDL Code als 
Konstante Dezimalzahl definieren, damit man nicht jedesmal den Wert in 
das Binärsystem umrechnen muss?
1
  serialClkDivider: process (clkIn)
2

3
  begin
4

5
      if RISING_EDGE(clkIn) then
6

7
        if(clkDivider =  "11010000011") then -- divider = 1667 == 9600Baud@16MHz
8
          clkDivider <= "00000000000";
9

10
          shiftClk <= '1';
11
        else
12
          clkDivider <= clkDivider + 1;
13

14
          shiftClk <= '0';
15
        end if;
16

17
      end if;
18

19
  end process serialClkDivider;
#1195156
Lesenswert?
• ▲
▼
Indem Du die Typen "signed" oder "unsigned" aus dem numeric_std package 
verwendest.
Der Compiler kann nämlich nicht schmecken, welche Bedeutung die Bits in 
clkDivider haben.
Dann kannst Du schreiben :
1
 if (clkDivider =  1667) then  
2
     clkDivider <= to_unsigned(0, clkDivider'length);
3
  ....
Gast #1195188
Lesenswert?
• ▲
▼
Nur scheinbar nicht! Die Typconversion laeuft implizit ueber 
Deklararion, sonst musst Du eben zu Fuss:

clkDivider <= conv_std_logic_vector(unsigned(clkDivider) + 1,16);

Das ist aber dumm, wenn man spaeter mal die Aufloesung der Bits aendern 
will.
Gast #1195314
Lesenswert?
• ▲
▼
1
 if (clkDivider =  1667) then

Bei der Methode scheint es mir allerdings etwas als Nachteil, dass der 
Wert im Queltext steht, Da wäre so was ähnliches wie ein #define in C 
besser, bei dem man am Anfang vom Quelltext den Wert definieren kann.

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