Domanda

Utilizzando VHDL voglio avere un alcuni registri che memorizzano a 16 bit in ciascuno di essi. Così ho scoperto che VHDL hanno costruito in serie, e voglio usarla per memorizzare 16 bit in ogni elemento in IY quindi voglio sapere se VHDL mappa questo array ai registri reali o no?

È stato utile?

Soluzione

La risposta breve è no - il tipo di matrice non mappa a un registro

.

La risposta lunga:
Il tipo di matrice in VHDL è solo una raccolta indicizzata di elementi dello stesso tipo. Nel tuo caso, si sarebbe probabilmente utilizza un array come l'uscita da un banco di registri.

Quindi, supponiamo di avere un banco di 8 registri contenenti ciascuna 16 bit. L'uscita da questa banca sarebbe un array (di dimensione 8) di vettori 16 bit. La dichiarazione dei componenti di questo banco di registri sarebbe simile a questa:

 component reg8x16
  port(
   clock: in std_logic;
   reset: in std_logic;
   enable: in std_logic;
   rout : out r_array(0 to 7)
   );
 end component; 

rout è la matrice delle uscite registrate dalla banca registro. Così si può dereference l'uscita del registro 0 dalla banca utilizzando rout(0), che è di tipo std_logic_vector(15 downto 0).

Inoltre, non dimenticare di dichiarare il tipo di matrice da qualche parte (di solito in un file di pacchetto). Sarebbe qualcosa di simile:

type r_array is array (integer range <>) of std_logic_vector(15 downto 0);

L'istruzione (integer range <>) è una sorta di segnaposto per l'intervallo di indice di matrice - sarà riempito in seguito quando si utilizza il tipo di matrice (come nel nostro dichiarazione dei componenti sopra)

.

Non sono sicuro se questo risponde alla tua domanda o no. Non voglio entrare nello specifico di come creare il componente reg8x16. In pratica, basta creare un registro a 16 bit la cui uscita è di tipo std_logic_vector(15 downto 0); (è possibile cercare come fare questo in linea ... è VHDL piuttosto semplice). Poi basta un'istanza 8 di questi registri, e metterli nel componente denominato reg8x16.

Altri suggerimenti

Un array è come qualsiasi altra variabile o segnale: Se si descrive un comportamento che significa che deve ricordare il suo stato da un ciclo di clock ad un altro, poi flipflops (o blocchi di memoria, se le condizioni lo permettono) sarà desunto da il sintetizzatore.

Qualunque matrice con un intervallo valido mapperebbe ai fili in netlist generata. Questo è l'hardware abbastanza evidente infatti contiene solo porte e fili. Qualcosa di simile a (3 downto 0) (da 1 a 0) farebbe un 4x2 o filo formato 8-bit. Ora mappare accessi individuali come una (3) (1) per indici in questo array 1-dimensionale. Quindi un (3) (1) è fondamentalmente un (7).

questa pagina , di controllare anche la register VHDL

fondamentalmente è un array di std_logic_vector con lunghezze richieste

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top