חזור לתיקייה: תרגול

5 - תכן לוגי

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • מחבר חלקי(Half Adder)
  • מחבר מלא(Full Adder)
  • בורר - Mux
  • מימוש פונקציות ע"י בוררים
  • מפענח - Decoder

5 - תכן לוגי

00440252

מערכות ספרתיות ומבנה המחשב

רשימות תרגול לקריאה בשבת

תכן לוגי

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

אנו רוצים לבנות מחשב. האם כל פונקציה צריך לממש במיוחד? כמובן שלא. כמו בקוד, גם בחומרה בעיות חוזרות על עצמן.

מחבר חלקי(Half Adder)

למחבר שתי כניסות a,ba,ba,b ושתי יציאות S,CoutS,C_{out}S,Cout​ ומתקיים:

S=a⊕bCout=abS=a \oplus b \qquad \qquad C_{out}=abS=a⊕bCout​=ab

כך נוכל לראות טבלת אמת של HAHAHA:

abCoutS0000010110011110\begin{array}{|cc|cc|} \hline a & b & C_{out} & S \\ \hline 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 0 \\ \hline \end{array}a0011​b0101​Cout​0001​S0110​​

מחבר מלא(Full Adder)

יש לו שלוש כניסות a,b,Cina,b,C_{in}a,b,Cin​ ושתי יציאות S,CoutS,C_{out}S,Cout​.
מתקיים:

S=XOR(a,b,Cin)S=XOR(a,b,C_{in})S=XOR(a,b,Cin​)

נבנה טבלת אמת:

abCinCoutS0000000101010010111010001101101101011111\begin{array}{|ccc|cc|} \hline a & b & C_{in} & C_{out} & S \\ \hline 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 1 \\ 0 & 1 & 0 & 0 & 1 \\ 0 & 1 & 1 & 1 & 0 \\ 1 & 0 & 0 & 0 & 1 \\ 1 & 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 1 & 0 \\ 1 & 1 & 1 & 1 & 1 \\ \hline \end{array}a00001111​b00110011​Cin​01010101​Cout​00010111​S01101001​​

נבנה מפות קרנו של היצורים הללו כדי למצוא את הלוגיקה מאחורי המחבר.

Cin╲ab00011110011111Cin╲ab00011110011111⇓⇓S=a⊕b⊕CinCout=ab+aCin+Cinbראו פיתוח בתרגול הקודם\begin{matrix} \begin{array}{c|c|c|c|c|} _{C_{in}}\diagdown^{ab} & 00 & 01 & 11 & 10 \\ \hline 0 & & 1 & & 1 \\ \hline1 & 1 & & 1 \\ \hline \end{array} & \qquad \qquad & \begin{array}{c|c|c|c|c|} _{C_{in}}\diagdown^{ab} & 00 & 01 & 11 & 10 \\ \hline 0 & & & 1 \\ \hline1 & & 1 & 1 & 1 \\ \hline \end{array} \\ \Downarrow & & \Downarrow \\ S=a \oplus b \oplus C_{in} & & C_{out}=ab+aC_{in}+C_{in}b \\ \R{\text{ראו פיתוח בתרגול הקודם}} \end{matrix}Cin​​╲ab01​001​011​111​101​​⇓S=a⊕b⊕Cin​ראו פיתוח בתרגול הקודם​​Cin​​╲ab01​00​011​1111​101​​⇓Cout​=ab+aCin​+Cin​b​

ראינו בתרגול הקודם כי יש מימוש של FAFAFA שנראה כך:
​תרגול ספרתיות שבוע 6 - 1.png
אבל זה מימוש די מסובך. נוכל לקחת HAHAHA-ים ולממש בעזרתם את ה-FAFAFA כך:
​5 - תכן לוגי 2026-06-01 08.44.22.excalidraw.svg

ה-FAFAFA מהווה מערכת פעולות חצי שלמה ונראה זאת כך:

S(a,b,Cin)=a⊕b⊕Cin  ⟹  S(a,1,0)=a‾S(a,b,C_{in})=a \oplus b \oplus C_{in} \implies S(a,1,0)=\overline{a}S(a,b,Cin​)=a⊕b⊕Cin​⟹S(a,1,0)=a Cout(a,b,Cib)=ab+aCin+Cinb  ⟹  Cout(a,b,0)=abC_{out}(a,b,C_{ib})=ab+aC_{in}+C_{in}b\implies C_{out}(a,b,0)=abCout​(a,b,Cib​)=ab+aCin​+Cin​b⟹Cout​(a,b,0)=ab
תרגיל

ממשו את הפונקציה f(w,x,y)=∑(1,2)f(w,x,y)=\sum(1,2)f(w,x,y)=∑(1,2) בעזרת FAFAFA וקבועים.

נוכל לתרגם ישירות את המינטרמים:

f(w,x,y)=w‾   ⁣x‾y+w‾xy‾=w‾(x‾y+xy‾)=w‾(x⊕y)=S(w,1,0)S(x,y,0)=Cout(S(w,1,0),S(x,y,0),0)f(w,x,y)=\overline{w}\;\!\overline{x}y+\overline{w}x\overline{y}=\overline{w}(\overline{x}y+x\overline{y})=\overline{w}(x \oplus y)=S(w,1,0)S(x,y,0)=C_{out}(S(w,1,0),S(x,y,0),0)f(w,x,y)=wxy+wxy​=w(xy+xy​)=w(x⊕y)=S(w,1,0)S(x,y,0)=Cout​(S(w,1,0),S(x,y,0),0)
תרגיל

ממשו מכפל 2 סיביות על 2 סיביות באמצעות שימוש בשערים לוגים וברכיבי HAHAHA בלבד.

הדבר הזה, כמו כל בעיה לוגית, יכול להיפתר באמצעות מפת קרנו. אבל זה מסובך שכן אנו צריכים 444 מפות קרנו שכן יש 444 סיביות יציאה.
זה גם לא יעזור לנו כי אמרו לנו להשתמש ברכיבי HAHAHA.
נסתכל על כפל ארוך:

+⋅a1a0b1b0a1b0a0b0a1b1a0b1 ⁣M3    M2  M1    M0      \begin{matrix} \begin{matrix} \\ \\ + \\ \end{matrix}\begin{matrix} \cdot \\ \\ \\ \end{matrix}\begin{align*} a_{1}a_{0} \\ b_{1}b_{0} \\ \hline a_{1}b_{0} \quad a_{0}b_{0} \\ a_{1}b_{1} \quad a_{0}b_{1} \quad \quad \quad\! \end{align*} \\ \hline M_{3} \quad\;\; M_{2} \quad\; M_{1} \quad\;\; M_{0} \quad\;\;\; \end{matrix}+​⋅​a1​a0​b1​b0​a1​b0​a0​b0​a1​b1​a0​b1​​​M3​M2​M1​M0​​​

​תרגול ספרתיות שבוע 6 - 3.png

תרגיל (ממבחן)

נתון הרכיב הבא:
​5 - תכן לוגי 2026-06-01 09.02.03.excalidraw.svg
רכיב זה סופר את כמות האחדות והאפסים בכניסותיו ומוציא את הערך בעל הספירה הגבוהה יותר.
לדוגמה: max(0,1,0)=0,max(1,1,1)=1,max(0,1,1)=1max(0,1,0)=0,max(1,1,1)=1,max(0,1,1)=1max(0,1,0)=0,max(1,1,1)=1,max(0,1,1)=1
לרשותכם כמות בלתי מוגבלת של רכיבים כאלו ואת הקבועים 0,10,10,1.
מהי הכמות המינימלית של רכיבי maxmaxmax הנחוצים על מנת לממש שער OROROR?
א. יש צורך ברכיב maxmaxmax יחיד ובקבוע 111.
ב. יש צורך בשני רכיבי maxmaxmax ובקבוע 000
ג. יש צורך בשלושה רכיבי maxmaxmax ובאחד מהקבועים.
ד. יש צורך בארבעה רכיבי maxmaxmax ובשני הקבועים יחד.
ה. הפונקציה maxmaxmax לא מהווה מערכת פעולות שלמה או חצי שלמה ולא ניתן לממש באמצעותה שער OROROR.

max(a,a,a)=amax(a,1,0)=amax(a,b,1)=a+bmax(a,a,a)=a \quad \quad max(a,1,0)=a \quad \quad max(a,b,1)=a +bmax(a,a,a)=amax(a,1,0)=amax(a,b,1)=a+b

נשים לב כי אם נשים max(a,b,1)max(a,b,1)max(a,b,1) אז אם אחד מהספרות היא 111 נקבל 111. אם שתי הספרות הן 111 נקבל 1 ואם 000 הוא שנייהם אז נקבל 000 בדיוק כפעולת שער OROROR.
לכן, התשובה הנכונה היא א.

בורר - MuxMuxMux

ישנן nnn כניסות בקרה ו-2n2^n2n כניסות מידע.
יש יציאה אחת.

מה שהבורר עושה זה שהוא מקבל סיגנל בכניסת בקרה, הוא יקח את הדאטא מהמקום המתאים ויוציא אותו החוצה.
שימוש טוב של MuxMuxMux הוא בניתובים של מסלולים. נניח איזושהי מערכת שעושה חיבור, חיסור וכפל - כמו ALUALUALU.

מימוש פונקציות ע"י בוררים

נתונה הפונקציה f(x,y,z,w)=∑(0,1,5,7,13,14)f(x,y,z,w)=\sum(0,1,5,7,13,14)f(x,y,z,w)=∑(0,1,5,7,13,14). ממשו אותה בעזרת:
א. בורר 16→116\to116→1:
יש לנו מספיק כניסות כדי לתת פשוט את כל ערכי הפונקציה בכניסות. כעת, באמצעות טבלת אמת נראה כיצד אנו מכניסים את המשתנים.

MSBLSBxyzwf000001100011200100300110401000501011601100701111810000910010101010011101101211000131101114111011511110\begin{array}{c|cccc|c} & \text{MSB} & & & \text{LSB} & \\ & x & y & z & w & f \\ \hline \hline 0 & 0 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 & 1 & 1 \\ 2 & 0 & 0 & 1 & 0 & 0 \\ 3 & 0 & 0 & 1 & 1 & 0 \\ 4 & 0 & 1 & 0 & 0 & 0 \\ 5 & 0 & 1 & 0 & 1 & 1 \\ 6 & 0 & 1 & 1 & 0 & 0 \\ 7 & 0 & 1 & 1 & 1 & 1 \\ \hline 8 & 1 & 0 & 0 & 0 & 0 \\ 9 & 1 & 0 & 0 & 1 & 0 \\ 10 & 1 & 0 & 1 & 0 & 0 \\ 11 & 1 & 0 & 1 & 1 & 0 \\ 12 & 1 & 1 & 0 & 0 & 0 \\ 13 & 1 & 1 & 0 & 1 & 1 \\ 14 & 1 & 1 & 1 & 0 & 1 \\ 15 & 1 & 1 & 1 & 1 & 0 \\ \end{array}0123456789101112131415​MSBx0000000011111111​y0000111100001111​z0011001100110011​LSBw0101010101010101​f1100010100000110​​

כעת נוכל לראות לאן מכניסים מה:
​תרגול ספרתיות שבוע 6 - 2.png

ב. בעזרת בורר 8→18\to 18→1:
נקח בטבלה שלנו את העמודה של www ונהפוך אותו ל-datadatadata ואז ננסה לבנות טבלה חדשה:

MSBLSBxyzf00001100102010w3011w41000510106110w1111w‾\begin{array}{c|ccc|c} & MSB & & LSB \\ & x & y & z & f \\ \hline 0 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 & 0 \\ 2 & 0 & 1 & 0 & w \\ 3 & 0 & 1 & 1 & w \\ 4 & 1 & 0 & 0 & 0 \\ 5 & 1 & 0 & 1 & 0 \\ 6 & 1 & 1 & 0 & w \\ 1 & 1 & 1 & 1 & \overline{w} \\ \hline \end{array}01234561​MSBx00001111​y00110011​LSBz01010101​f10ww00ww​​

כעת, נרצה להכניס את www למימוש.
האם www היא הבחירה הכי טובה לזה? לאו דווקא. אנו צריכים שער NOTNOTNOT נוסף הרי.
​תרגול ספרתיות שבוע 6 - 4.png

ג. בעזרת 4 בוררים של 4→14\to 14→1:
נשתמש במבנה הכללי:
​תרגול ספרתיות שבוע 6 - 5.png
ונבנה בעזרתו את היצור שלנו.

מפענח - DecoderDecoderDecoder

מקבל nnn כניסות בקרה וכניסת הפעלה, ENENEN, אחת ומוציא 2n−12^n-12n−1 כניסות.

תרגיל

נתונה הפונקציה הבאה f(A,B,C,D,E)=∑(1,3,5,9,11,13,27,31)f(A,B,C,D,E)=\sum(1,3,5,9,11,13,27,31)f(A,B,C,D,E)=∑(1,3,5,9,11,13,27,31) ממשו אותה בעזרת מפענח 5→325\to 325→32.

​תרגול ספרתיות שבוע 6 - 6.png

תרגיל

בעזרת מפענח 4→164\to 164→16 ושערים לוגיים ממשו את הפונקציה f(A,B,C,D,E)=∑(1,3,5,9,11,13,27,31)f(A,B,C,D,E)=\sum(1,3,5,9,11,13,27,31)f(A,B,C,D,E)=∑(1,3,5,9,11,13,27,31).

f(A,B,C,D,E)=Af1(B,C,D,E)+A′f2(B,C,D,E)f(A,B,C,D,E)=Af_{1}(B,C,D,E)+A'f_{2}(B,C,D,E)f(A,B,C,D,E)=Af1​(B,C,D,E)+A′f2​(B,C,D,E) ABCDEF000011000111001011010011010111011011110111111111  ⟹  f2(B,C,D,E)=∑(1,3,5,9,11,13)f1(B,C,D,E)=∑(11,15)\begin{matrix} \begin{array}{|ccccc|c|} \hline A & B & C & D & E & F \\ \hline 0 & 0 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 0 & 1 & 1 \\ 0 & 1 & 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & 1 & 1 \\ \hline \end{array} \implies \begin{matrix} f_{2}(B,C,D,E)=\sum(1,3,5,9,11,13) \\ f_{1}(B,C,D,E)=\sum(11,15) \end{matrix} \end{matrix}A00000011​B00011111​C00100101​D01001011​E11111111​F11111111​​⟹f2​(B,C,D,E)=∑(1,3,5,9,11,13)f1​(B,C,D,E)=∑(11,15)​​

​תרגול ספרתיות שבוע 6 - 7.png

נשים לב כי זה לא הכי יעיל. אנו צריכים שני מפענחים ושער NOTNOTNOT.
אם נניח נפצל לפי EEE נגלה כי f2=0f_{2}=0f2​=0 ואז: f=Ef1f=Ef_{1}f=Ef1​.

תרגיל (ממבחן)

האם מפענח 2→42\to 42→4 (ללא enableenableenable) מהווה מערכת פעולות שלמה?

  1. כן, ללא שימוש בשערים נוספים.
  2. כן, בתוספת שער NOTNOTNOT.
  3. כן, בתוספת שער ANDANDAND.
  4. לא
ABf0f1f2f3001000010100100010110001\begin{array}{|cc|cccc|} \hline A & B & f_{0} & f_{1} & f_{2} & f_{3} \\ \hline 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 & 1 & 0\\ 1 & 1 & 0 & 0 & 0 & 1 \\ \hline \end{array}A0011​B0101​f0​1000​f1​0100​f2​0010​f3​0001​​

נשים לב כי פה יש לנו:

f0=a‾⋅b‾f1=a‾bf2=ab‾f3=abf_{0}=\overline{a}\cdot \overline{b} \quad f_{1}=\overline{a}b \quad f_{2}=a\overline{b} \quad f_{3}=abf0​=a⋅bf1​=abf2​=abf3​=ab

יש לנו שער ANDANDAND. כעת חסר לנו NOTNOTNOT. נזכר כי aa=aaa=aaa=a ולכן a‾⋅a‾=a‾\overline{a}\cdot \overline{a}=\overline{a}a⋅a=a ולכן אם נבחר את f0f_{0}f0​ כשנכניס את aaa בשני היצורים הללו נקבל ב-f0f_{0}f0​ בדיוק את a‾\overline{a}a.
לכן, התשובה הנכונה היא 1.

תרגיל (אביב 2017 מועד א' שאלה 3)

רוצים לממש את הפונקציה הבאה:

f(A,B,C,D,E)=∑(10,11,19,26,27)f(A,B,C,D,E)=\sum(10,11,19,26,27)f(A,B,C,D,E)=∑(10,11,19,26,27)

באמצעות Decoder  4→16Decoder\; 4\to 16Decoder4→16.
איזה מהסיביות יש להוציא מסיביות הבקרה ולהעביר לסיבית ה-enableenableenable כך שנשתמש במספר מינימלי של מפענחים ובמספר מינימלי של שערים?

  1. סיבית DDD.
  2. סיבית CCC.
  3. סיבית AAA.
  4. קיימות שתי תשובות נכונות מבין התשובות א-ג.
  5. כל המימושים משתמשים באותו מספר של מפענחים.

נבנה טבלת אמת של הפונקציה:

ABCDEF010101010111100111110101110111\begin{array}{|ccccc|c|} \hline A & B & C & D & E & F \\ \hline 0 & 1 & 0 & 1 & 0 & 1 \\ 0 & 1 & 0 & 1 & 1 & 1 \\ 1 & 0 & 0 & 1 & 1 & 1 \\ 1 & 1 & 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 1 & 1 & 1 \\ \hline \end{array}A00111​B11011​C00000​D11111​E01101​F11111​​

ניתן לראות פה כי עבור D=0D=0D=0 הפונקציה מוציאה 000 תמיד. לכן, נוכל לשים אותה בכניסת ה-ENENEN ולא נדרש כלל שערים לוגיים.
לכן, התשובה הנכונה היא 111.

תרגיל (אביב 2017 מועד ב' שאלה 14)

נתונה הפונקציה הבאה:

f(w,x,y,z)=∑(7,15,6)+∑∅(5)f(w,x,y,z)=\sum(7,15,6)+\sum_{\varnothing}(5)f(w,x,y,z)=∑(7,15,6)+∅∑​(5)

ברשותכם מפענחים 2→42\to 42→4 ללא כניסת ENENEN ושערים לוגיים {AND,OR}\left\{ AND,OR \right\}{AND,OR} בלבד.
מהו מספר המפענחים המינימלי הנדרש כדי לממש את fff?
א. 0
ב. 1
ג. 2
ד. 3
ה. 4

נבנה טבלת אמת של הפונקציה:

wxyzf0111111111011010101∅\begin{array}{|cccc|c|} \hline w & x & y & z & f \\ \hline 0 & 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 1 \\ 0 & 1 & 0 & 1 & \varnothing \\ \hline \end{array}w0100​x1111​y1110​z1101​f111∅​​

נשים לב כי הפונקציה שווה ל-000 אם x=0x=0x=0 בהכרח. לכן נוכל למיין אותו כבר בהתחלה באמצעות שער ANDANDAND.
נשים לב בנוסף כי הפונקציה מוציאה 000 או ∅\varnothing∅ אם y=0y=0y=0 ולכן נוכל למיין גם אותו באמצעות שער ANDANDAND.
כעת נותרנו עם w,zw,zw,z המקיימים:

wzf011111001100\begin{array}{|cc|c|} \hline w & z & f \\ \hline 0 & 1 & 1 \\ 1 & 1 & 1 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ \hline \end{array}w0101​z1100​f1110​​ f∗=w‾z+wz+w‾   ⁣z‾f^*=\overline{w}z+wz+\overline{w}\;\!\overline{z}f∗=wz+wz+wz

אך אין לנו שערי NOTNOTNOT ולכן נדרש להשתמש במפענח יחיד :)

הערה (פתרון בתרגול עם מפת קרנו)

yz╲wx000111100001∅1111101\begin{array}{c|c|c|c|c|} _{yz}\diagdown^{wx} & 00 & 01 & 11 & 10 \\ \hline 00 \\ \hline 01 & & \varnothing \\ \hline 11 & & 1 & 1 \\ \hline 10 & & 1 \\ \hline \end{array}yz​╲wx00011110​00​01∅11​111​10​

נשים לב כי ה-∅\varnothing∅ מיותר שכן הוא לא עוזר לנו לכסות את הפונקציה. נקבל:

f(w,x,y,z)=w‾xy+xyz=xy(w‾+z)f(w,x,y,z)=\overline{w}xy+xyz=xy(\overline{w}+z)f(w,x,y,z)=wxy+xyz=xy(w+z)

הבעיה היחידה שלנו היא ה-NOTNOTNOT. אין לנו שער NOTNOTNOT אך מפענח 2→42\to 42→4 הוא מערכת פעולות שלמה ולכן הפתרון ל-NOTNOTNOT בקיום נתוני הבעיה הוא שימוש במפענח יחיד.

תרגיל (מועד ב' חורף 2025 שאלה 5)

נתונה הפונקציה הבאה: f(x,y,z,w)=∑(3,7,11,15)f(x,y,z,w)=\sum(3,7,11,15)f(x,y,z,w)=∑(3,7,11,15) וברצוננו לממש את הפונקציה הנתונה בעזרת מספר מינימלי של רכיבים.
ברשותכם מספר בלתי מוגבל של מפענחים 2→42\to 42→4 עם כניסת ENENEN ומספר בלתי מוגבל של שערי OROROR עם מספר כניסות לבחירתכם. מותר גם להשתמש בקבועים 0,10,10,1 ללא הגבלה.

מהו מספר הרכיבים המינימלי הדרוש בכדי לממש את הפונקציה fff?

  1. מפענח בודד ושער OROROR בודד.
  2. מפענח בודד ללא צורך בשערי OROROR.
  3. שני מפענחים ללא צורך בשערי OROROR.
  4. שני מפענחים ושער OROROR בודד.
  5. שלושה מפענחים ושער OROROR.

נבנה טבלת אמת:

xyzwf00111011111011111111\begin{array}{|cccc|c|} \hline x & y & z & w & f \\ \hline 0 & 0 & 1 & 1 & 1 \\ 0 & 1 & 1 & 1 & 1 \\ 1 & 0 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & 1 \\ \hline \end{array}x0011​y0101​z1111​w1111​f1111​​

נשים לב כי z=w=1z=w=1z=w=1 בכל מקום בו הפונקציה מקבלת 111 ו-x,yx,yx,y לא משנים שכן אנו רואים את כל הערכים שלהם בטבלה הזו.
אנו בתכלס צריכים שער ANDANDAND אחד. לכן, ניתן באמצעות מפענח בודד לממש שער ANDANDAND בודד ולכן התשובה הנכונה היא 222.