Se non mi sono spiegato bene ti faccio uno schema
Se i bit sono pochi puoi mettere un adeguato numero di full address in cascata.
chiaro... l'autocomplete di android ha deciso "address" e chi sono io per correggerlo!
architecture behv of Line_Counter isbegin process(INPUT) VARIABLE var : INTEGER RANGE 0 TO 255; begin var := 0; FOR x IN 0 TO 3 LOOP IF INPUT(x) = '1' THEN var := var + 1; END IF; END LOOP; OUTPUT <= std_logic_vector(to_unsigned(var,2)); end process;end behv;
Ecco il listato VHDL con 4 linee di ingresso e 2 bit di uscita (il range della variabile VAR è sovradimensionato)Codice: [Seleziona]architecture behv of Line_Counter isbegin process(INPUT) VARIABLE var : INTEGER RANGE 0 TO 255; begin var := 0; FOR x IN 0 TO 3 LOOP IF INPUT(x) = '1' THEN var := var + 1; END IF; END LOOP; OUTPUT <= std_logic_vector(to_unsigned(var,2)); end process;end behv;Il mio dubbio ads è questo: in quanti cicli di clock eseguirà il tutto? Ad intuito direi che il for richiede un colpo di clock per ogni ciclo..ma è così?(scusate, sono davvero alle primissime armi con VHDL...)
Usare una LUT, invece?
Anche di questo dovrei fare uno schema per essere più chiaro...
Ho appena aumentato nel mio sorgente il numero di ingressi (256) e di uscite (, ma compliando non ho notato un aumento dei LE usati (2 prima e 2 sono adesso). E' "normale"? eppure ads il circuito sintetizzato dovrebbe avere più componenti...