Altifigence Academy

5 / 37 · Concetto

logic, wire, X/Z e larghezze esplicite

Separa tipo, driver e memoria e verifica letterali, confronti, estensioni e valori ignoti.

Tipo, driver e memoria sono domande distinte

logic è un tipo a quattro stati; wire descrive un collegamento di rete anch'esso a quattro stati. Una variabile logic può essere risultato combinatorio o stato su clock secondo le regole di pilotaggio. Nessun nome garantisce un flip-flop: cerca assegnazione continua, processo combinatorio o di fronte. Usa una sorgente prevista per ogni segnale ordinario. Reti risolte con più driver e interfacce bidirezionali richiedono contratti elettrici e strumenti differenti e non appartengono a questi esempi.

Definire larghezza e interpretazione

logic [7:0] u contiene otto bit senza segno; logic signed [7:0] s interpreta gli stessi bit in complemento a due. 8'hFF vale 255 per u e −1 per s. Un vettore packed raggruppa bit, non otto valori in sequenza temporale.

SystemVerilog
module typed_examples (
  input  logic [3:0] a, b,
  input  logic signed [7:0] s,
  output logic [4:0] full_sum,
  output logic signed [8:0] extended_s,
  output logic negative,
  output logic any_bit, all_bits, parity
);
  assign full_sum = {1'b0, a} + {1'b0, b};
  assign extended_s = {s[7], s};
  assign negative = s < 8'sd0;
  assign any_bit = |a;
  assign all_bits = &a;
  assign parity = ^a;
endmodule

extended_s ripete il bit di segno; aggiungere zero trasforma −1 in +255. La concatenazione è un'espressione senza segno: l'aritmetica signed richiede interpretazione esplicita o intermediario appropriato. Qui il pattern voluto viene assegnato alla destinazione signed. Usa 4'd15,8'hFF,8'sd0 quando conta la larghezza. Un intero senza dimensione può allargare l'espressione: esamina entrambi gli operandi e il contesto dell'assegnazione, non solo il lato sinistro.

Tre famiglie di operatori

a & b opera bit per bit; a && b verifica se entrambi i vettori sono veri e restituisce un bit;&a riduce richiedendo tutti 1. a=0011, b=0101 producono 0001,1,0. ^a calcola parità,0 per 0011. Dividi espressioni ambigue in intermediari per documentarne l'intervallo.

Ignoto non è una terza tensione

X indica sconosciuto, Z alta impedenza, non tensioni esatte. Un modello a due stati non prova quattro stati. Applica reset esplicito invece di nascondere X come zero. == può restituire X se non può decidere; actual !== expected nel banco segnala X/Z contro un'aspettativa nota. Case equality non rileva un X fisico nell'hardware ordinario.

Esercizio: estendere, sommare, confrontare

a=15, b=1 produce full_sum=10000. s=8'h80 dà extended_s=110000000, negative=1; s=8'h7F dà 001111111, negative=0. Prova zero, massimo positivo, minimo negativo e −1. Sostituisci con {1'b0, s} e rileva i difetti negativi. Cambia !== in != e inietta X in actual: una condizione ignota può non segnalare il difetto desiderato.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.