Porte XOR e XNOR
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 41 di 90.
Questa lezione tratta due porte logiche aggiuntive: XOR (OR esclusivo) e XNOR (NOR esclusivo). Queste porte sono utili per confrontare i bit e verificare la parità.
Porta XOR
La porta XOR restituisce 1 quando gli ingressi sono diversi.
Tabella di verità (2 ingressi):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primitiva di porta Verilog:
xor(out, a, b);Equivalente dell'assegnazione continua:
assign out = a ^ b;Porta XNOR
La porta XNOR restituisce 1 quando gli ingressi sono uguali. È l'opposto di XOR.
Tabella di verità (2 input):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitiva di porta Verilog:
xnor(out, a, b);Equivalente dell'assegnazione continua:
assign out = a ~^ b; // oppure ~(a ^ b)Ingressi multipli
Le porte XOR e XNOR possono avere più di 2 ingressi. L'uscita è:
- XOR: 1 se un numero dispari di ingressi è 1
- XNOR: 1 se un numero pari di ingressi è 1
xor(out, a, b, c); // XOR a 3 ingressi
xnor(out, p, q, r, s); // XNOR a 4 ingressiEsempio (XOR a 3 ingressi):
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Usi comuni
| Uso | Esempio |
|---|---|
| Confrontare se due bit sono diversi | xor(diff, a, b) |
| Confrontare se due bit sono uguali | xnor(same, a, b) |
| Generazione della parità (numero dispari di 1) | xor(parity, data[0], data[1], data[2], data[3]) |
| Controllo della parità (numero pari di 1) | xnor(parity, data[0], data[1], data[2], data[3]) |
Esempio di codice
module xor_xnor_demo (
input a, b,
output xor_out,
output xnor_out
);
xor(xor_out, a, b);
xnor(xnor_out, a, b);
endmoduleTabella riassuntiva
| Porta | Output 1 quando | Primitiva | Operatore |
|---|---|---|---|
| XOR | Gli input sono diversi | xor(out, a, b) | ^ |
| XNOR | Gli input sono uguali | xnor(out, a, b) | ~^ |
Sfida
Aggiungi le primitive di porta mancanti in base alle attività.
Cosa fare:
- Crea una porta XOR con uscita
xor_resulte ingressixey - Crea una porta XNOR con uscita
xnor_resulte ingressixey
Provalo tu
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: Aggiungi una porta XOR (xor_result = x ^ y)
// TODO: Aggiungi una porta XNOR (xnor_result = x ~^ y)
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online