Abfrage eines Std_Logic_Vectors

Gast #700361
Lesenswert?

Moin,
hab ein Problem bei einer Abfrage von einem Bit innerhalb einer 
Bitfolge.

Der folgende Codeausschnitt, fragt eine Bitfolge auf ein Bit ab und 
setzt somit ein entsprechendes Signal.
Signale sind Set_Select, Set_Setzen, Set_Read, Set_Write, Set_Status 
jeweils std_logic
PWDATA ist die Bitfolge (std_logic_vector 31 downto 0)

Wie frage ich die einzelnen Bits ab? So wie ich es geschrieben habe 
funktioniert das irgendwie nicht. Denn ersten Teil (CLK) sowie die 
nächste IF-Abfrage (Set_Select and PADDR) funktionieren ohne Probleme.
1
If …
2
elsif (clk='1' and clk'event) then
3
   if (Set_Select = '1' and PADDR = "00000000000000000000001111101010") then
4
      if (PWDATA(0) = '0') then --normaler Betrieb
5
         Set_Setzen <= '0';
6
      elsif (PWDATA (0) ='1') then --Setzen
7
         Set_Setzen <= '1';
8
      elsif (PWDATA(1) = '0') then --Lesen
9
         Set_Read <= '1';
10
      elsif (PWDATA(1) = '1') then --Schreiben
11
         Set_Write <= '1';
12
      elsif (PWDATA(2) = '0') then --Stop
13
         Set_Status <= '0';
14
      elsif (PWDATA(2) = '1') then --Start
15
         Set_Status <= '1';
16
      end if;
17
   end if;
18
end if;


Ich hoffe, dass ihr mir weiterhelfen könnt.

Torben
#700374
Lesenswert?

@ Torben (Gast)

>Wie frage ich die einzelnen Bits ab?

Einfach abfragen?

>So wie ich es geschrieben habe
>funktioniert das irgendwie nicht.

Es ist auch ziemlich konfus. Warum einfach, wenns auch umständlich geht. 
;-)
Und ausserdem hast du die Bedingungen verkettet, was sicher nicht deine 
Absicht war.
1
elsif (clk='1' and clk'event) then
2
   if (Set_Select = '1' and PADDR = "00000000000000000000001111101010") then
3
         Set_Setzen <= PWDATA(0);
4
         Set_Read <= PWDATA(1);
5
         Set_Status <= PWDATA(2);
6
   end if;
7
end if;

Mfg
Falk

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