שערי XOR ו-XNOR
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 41 מתוך 90.
השיעור הזה עוסק בשתי שערים לוגיים נוספים: XOR (OR בלעדי) ו-XNOR (NOR בלעדי). שערים אלה שימושיים להשוואת ביטים ולבדיקת זוגיות.
שער XOR
שער XOR מוציא 1 כאשר הקלטים שונים.
טבלת אמת (2 קלטים):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
פרימיטיב שער של Verilog:
xor(out, a, b);שקול להשמה רציפה:
assign out = a ^ b;שער XNOR
שער XNOR מפיק 1 כאשר הקלטים זהים. הוא ההפך מ-XOR.
טבלת אמת (2 קלטים):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
פרימיטיב שער Verilog:
xnor(out, a, b);הקצאה רציפה שקולה:
assign out = a ~^ b; // או ~(a ^ b)מספר קלטים
לשערי XOR ו-XNOR יכולים להיות יותר מ-2 קלטים. הפלט הוא:
- XOR: 1 אם מספר אי-זוגי של קלטים הוא 1
- XNOR: 1 אם מספר זוגי של קלטים הוא 1
xor(out, a, b, c); // XOR עם 3 קלטים
xnor(out, p, q, r, s); // XNOR עם 4 קלטיםדוגמה (XOR עם 3 קלטים):
| 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 |
שימושים נפוצים
| שימוש | דוגמה |
|---|---|
| בדיקה אם שני ביטים שונים | xor(diff, a, b) |
| בדיקה אם שני ביטים זהים | xnor(same, a, b) |
| יצירת זוגיות (מספר אי־זוגי של 1's) | xor(parity, data[0], data[1], data[2], data[3]) |
| בדיקת זוגיות (מספר זוגי של 1's) | xnor(parity, data[0], data[1], data[2], data[3]) |
דוגמת קוד
module xor_xnor_demo (
input a, b,
output xor_out,
output xnor_out
);
xor(xor_out, a, b);
xnor(xnor_out, a, b);
endmoduleטבלת סיכום
| שער | פלט 1 כאשר | פעולה פרימיטיבית | אופרטור |
|---|---|---|---|
| XOR | הקלטים שונים | xor(out, a, b) | ^ |
| XNOR | הקלטים זהים | xnor(out, a, b) | ~^ |
אתגר
הוסף את רכיבי השער החסרים בהתאם למשימות.
מה לעשות:
- צור שער XOR עם פלט
xor_resultוכניסותxו-y - צור שער XNOR עם פלט
xnor_resultוכניסותxו-y
נסו בעצמכם
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: הוסף שער XOR (xor_result = x ^ y)
// TODO: הוסף שער XNOR (xnor_result = x ~^ y)
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7השמות ושערים
השמה רציפההשמה עם אופרטוריםרכיבי שערים מובניםשערי AND, OR ו-NOTשערי XOR ו-XNORסיכום – מעגל שערים לוגיים5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין