2013-10-16 15 views
11

Molto spesso in VHDL noto che un determinato componente ha più porte di uscita. Cioè in uno dei nostri esempi ci hanno dato i seguenti componenti:Come ignorare le porte di output con le mappe delle porte

COMPONENT eight_bitadder 
    PORT (a, b: in std_logic_vector(7 downto 0); 
     f: in std_logic; 
     C: out std_logic_vector(7 downto 0); 
     o, z: out std_logic); 
END COMPONENT; 

dove Z determina se il risultato è 0, e innesca o in caso di overflow.

Ora nel mio caso, desidero utilizzare questo sommatore, tuttavia il risultato effettivo non è importante, piuttosto desidero solo verificare se il risultato è "0". Potrei ovviamente aggiungere un segnale fittizio e memorizzare la porta su questo segnale, tuttavia sembra inutilmente complicato e potrebbe aggiungere componenti extra durante la sintesi?

risposta

10

Quando si crea un'istanza del componente, è possibile lasciare le porte di uscita a cui non interessa aprire. L'unico segnale che ti interessa di seguito è "overflow".

MODIFICA: si noti che gli strumenti di sintesi ottimizzano le uscite che non vengono utilizzate.

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    c => open, 
    o => overflow, 
    z => open 
    ); 
+0

Quindi open è una parola chiave speciale: può essere utilizzata anche con la sintassi in cui non si specifica il nome delle porte e si utilizza l'ordine? (chiedendo solo la verifica/chiarezza)? – paul23

+0

Sì, "aperto" è riservato in VHDL. Onestamente non l'ho mai provato, provaci e fammi sapere come va. Dichiaro sempre esplicitamente la mappatura delle porte. – Russell

+1

ben testato e sì, potrei compilarlo e sintetizzarlo, anche con la denominazione non esplicita. Grazie ancora. – paul23

3

Si potrebbe anche scegliere di non collegare un'uscita a nulla in questo modo:

EIGHT_BITADDER_INST : eight_bitadder 
    port map (
    a => a, 
    b => b, 
    f => f, 
    o => overflow 
); 

Si noti che ho semplicemente non ho incluso uscite C e Z nella mappa porto. Alcuni possono discutere sulla chiarezza di questo (dal momento che potrebbe non essere chiaro che gli output c e z esistono), ma riduce anche il codice solo a ciò che è necessario.

+0

Si noti che potrebbe essere necessario rimuovere anche le righe dalla dichiarazione del componente o assegnare valori predefiniti alle porte che si stanno rimuovendo. Se non lo fai, potresti incorrere in errori durante il tentativo di compilazione. – TW80000