ID articolo: 000084426 Tipo di contenuto: Risoluzione dei problemi Ultima recensione: 11/09/2012

Perché la sintesi di Quartus II elabora in modo errato le selezioni di bit dalle variabili firmate?

Ambiente

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrizione

Il software Quartus® II versione 6.0 e 6.0 SP1 elabora in modo errato le selezioni di bit dalle variabili firmate a causa di un problema software noto. Il codice Verilog che coinvolge le selezioni di bit dalle variabili firmate dovrebbe restituire valori senza segno come specificato nel Verilog LRM (Std 1364-2001 Versione C, Sec 4.5.1).

Questo problema non esiste nelle versioni 5.1 o precedenti. Il problema è risolto a partire dal software Quartus II versione 6.1.

Come esempio di questo problema, il software Quartus II versione 6.0 elabora erroneamente il seguente esempio di codice:

reg [7:0] unrounded;

reg [6:0] rounded;

always @ (posedge clk) begin

 rounded <= unrounded[7:1]   unrounded[0];

Il software dovrebbe estendere a zero il segnale non arrotondato[0] per garantire che il valore di un bit venga aggiunto alla porzione di bit di unrounded[7:1].

Le versioni del software Quartus II 6.0 e 6.0 SP1 estendono il segnale unrounded[0] invece di estendere zero il segnale. Nell'esempio, se il unrounded[0] segnale è un valore 1, il software interpreta l'1 come il segno del numero e quindi lo converte in una rappresentazione con segno a 7 bit di -1 invece di un valore senza segno. Pertanto, il software aggiunge -1 a unrounded[7:1], invece di aggiungere 1.

Per evitare questo problema (nelle versioni 6.0 o 6.0 SP1), eseguire una delle seguenti operazioni:

  • Contattare mySupport per richiedere la patch 1.20 per il software Quartus II versione 6.0 SP1.
  • Inserire tra parentesi una delle variabili e forzare l'intera espressione a valutare come senza segno utilizzando la funzione Verilog-2001:
rounded <= (unrounded[7:1])   unrounded[0]
  • Tampona manualmente gli zeri iniziali come segue (ad esempio, indicare esplicitamente che i bit iniziali devono essere 0):
  • rounded <= unrounded[7:1]   {{6{1'b 0}}, unrounded[0]};

     

Prodotti correlati

Questo articolo si applica a 1 prodotti

FPGA Stratix® II

Disclaimer

1

Tutti i post e l'utilizzo dei contenuti su questo sito sono soggetti ai Termini di utilizzo Intel.com.

Il contenuto di questa pagina è il risultato della combinazione tra la traduzione umana e quella automatica del contenuto originale in lingua inglese. Questo contenuto è fornito soltanto a titolo di informazione generale e non ha pretese di completezza o accuratezza. In presenza di contraddizioni tra la versione in lingua inglese di questa pagina e la sua traduzione, fa fede la versione inglese. Visualizza la versione in lingua inglese di questa pagina.