2016-06-21 5 views
2

Ich mache ein Projekt in VHDL, und ich brauche Hilfe.vhdl wähle ersten Vektor und setze alle anderen zurück

Ich habe einig std_logic_vector s in einem Array-Typ, zum Beispiel sagen lassen:

vector(0) = "00" 
vector(1) = "00" 
vector(2) = "00" 
vector(3) = "01" 
vector(4) = "00" 
vector(5) = "01" 
vector(6) = "11" 
vector(7) = "11" 
vector(8) = "11" 

dann, was ich möchte, dass meine kombinatorische Logik zu tun, um den ersten Vektor zu finden, den "01" gleich und macht alle Vektoren nach dass gleich "11" Für unser Beispiel wäre:

vector(0)= "00" 
vector(1)= "00" 
vector(2)= "00" 
vector(3)= "01" 
vector(4)= "11" 
vector(5)= "11" 
vector(6)= "11" 
vector(7)= "11" 
vector(8)= "11" 

eine Ahnung, wie es zu tun?

+1

Ein guter Weg wäre, eine _for-Schleife_ zu verwenden. –

Antwort

5

Sie können eine Schleife verwenden. Angenommen, Sie haben die folgende Array-Definition:

type vector_array is array(natural range <>) of std_logic_vector(1 downto 0); 
signal vector : vector_array(0 to 8); 
signal vector_out : vector_array(0 to 8); 

Sie können dann die erste „01“ mit dem folgenden Beispiel finden (und es gibt viele Möglichkeiten, es zu tun). Dieses Beispiel dauert vector und erstellt vector_out.

process(vector) 
    variable found : boolean; 
begin 
    found := false; 
    for i in vector'range loop 
    if (found) then 
     vector_out(i) <= "11"; 
    else 
     vector_out(i) <= vector(i); 
     if (vector(i) = "01") then 
     found := true; 
     end if; 
    end if; 
    end loop; 
end process; 
+0

danke für die Antwort! geholfen viel :) –

+0

nur eine Frage, ist diese Variable synthetisierbar? –

+1

Ja ist es. Variablen im Allgemeinen sind synthetisierbar (es gibt Ausnahmen, wie zum Beispiel einige gemeinsame Variablen). – PlayDough

Verwandte Themen