diff --git a/3.md b/3.md new file mode 100644 index 0000000..f7af16f --- /dev/null +++ b/3.md @@ -0,0 +1,392 @@ + +## ۳-۲ + +الف) +`F(x,y,z)=Σ(2,3,6,7)=y` + +ب) +`F(A,B,C,D)=Σ(4,6,7,15)=A'BD' + BCD` + +پ) +`F(A,B,C,D)=Σ(3,7,11,13,14,15)=CD + ABC + ABD` + +ت) +`F(w,x,y,z)=Σ(2,3,12,13,14,15)=wx + w'x'y` + +--- + +## ۳-۴ + +الف) +`F(w,x,y,z)=xz' + wxy + w'y'z` + +ب) +`F(A,B,C,D)=A'C' + A'B'D' + A'BD + ACD` + +پ) +`F(w,x,y,z)=wx + x'y` + +ت) +`F(A,B,C,D)=BD + A'D' + B'D'` + +--- + +## ۳-۶ + +الف) +`A'B'C'D' + AC'D' + B'CD' + A'BCD + BC'D` +ساده‌شده: +`F = B'D' + ABC' + A'BD` + +ب) +`x'z + w'xy' + w(x'y + xy')` +ساده‌شده: +`F = xy' + x'z + wx'y` + +--- + +## ۳-۸ + +الف) +`xy + yz + xy'z = Σ(3,5,6,7)` + +ب) +`C'D + ABC' + ABD' + A'B'D = Σ(1,3,5,9,12,13,14)` + +پ) +`wxy + x'z' + w'xz = Σ(0,2,5,7,8,10,14,15)` + +--- + +## ۳-۱۰ + +الف) +موجبات اصلی اساسی: +`x'z' , xz` +یک جواب مینیمم: +`F = x'z' + xz + w'z'` +یا به‌صورت دیگر: +`F = x'z' + xz + w'x` + +ب) +موجبات اصلی اساسی: +`B'D' , A'BD , AC` +جواب مینیمم: +`F = B'D' + A'BD + AC + B'C` + +پ) +موجبات اصلی اساسی: +`BC' , AC` +جواب مینیمم: +`F = BC' + AC + A'B'D` + +--- + +## ۳-۱۲ + +الف) +`F(w,x,y,z)=Σ(0,2,5,6,7,8,10)` +صورت ضرب حاصل‌جمع‌ها: +`F = (x + z')(w' + x')(y + z + x')` + +ب) +`F(A,B,C,D)=Π(1,3,5,7,13,15)` +صورت ساده ضرب حاصل‌جمع‌ها: +`F = (A + D')(B' + D')` + +--- + +## ۳-۱۴ + +تابع: +`F = A'B'D' + AB'CD' + A'BD + ABC'D` + +سه نمایش با ۸ لیترال یا کمتر: + +1. + +`F = B'D'(A' + C) + BD(A' + C')` + +2. + +`F = (B ⊕ D)'(A' + B ⊕ C)` + +3. + +`F = (B ⊕ D)'(A' + C ⊕ D)` + +--- + +## ۳-۱۶ + +الف) +`AB' + ABD + ABD' + A'C'D' + A'BC'` +ساده‌شده: +`F = A + BC' + C'D'` + +پیاده‌سازی NAND دوطبقه: +`F = [A' · (BC')' · (C'D')']'` + +ب) +`BD + BCD' + AB'C'D'` +ساده‌شده: +`F = BC + BD + AB'C'D'` + +پیاده‌سازی NAND دوطبقه: +`F = [(BC)' · (BD)' · (AB'C'D')']'` + +--- + +## ۳-۱۸ + +عبارت: +`F = (AB + A'B')(CD' + C'D)` + +با NAND دوورودی: + +```text +n1 = NAND(A,B) +n2 = NAND(A,n1) +n3 = NAND(B,n1) +xorAB = NAND(n2,n3) +xnorAB = NAND(xorAB,xorAB) + +n4 = NAND(C,D) +n5 = NAND(C,n4) +n6 = NAND(D,n4) +xorCD = NAND(n5,n6) + +n7 = NAND(xnorAB,xorCD) +F = NAND(n7,n7) +``` + +--- + +## ۳-۲۰ + +عبارت: +`F = (AB' + CD')E + BC(A+B)` + +چون: +`BC(A+B)=BC` + +پس: +`F = AB'E + CD'E + BC` + +مدار NAND چندطبقه: + +```text +B' = NAND(B,B) +D' = NAND(D,D) + +p1 = NAND(A,B',E) => (AB'E)' +p2 = NAND(C,D',E) => (CD'E)' +p3 = NAND(B,C) => (BC)' + +F = NAND(p1,p2,p3) +``` + +--- + +## ۳-۲۲ + +این سؤال به «شکل ۴-۴» ارجاع داده، ولی شکل ۴-۴ داخل فایل ارسالی نیست؛ بنابراین مدار دقیق قابل تبدیل نیست. روش کلی تبدیل به NAND این است: + +```text +AND → NAND + معکوس‌کننده +OR → NAND با ورودی‌های معکوس طبق دمورگان +NOT → NAND با دو ورودی مشترک +``` + +اگر تصویر شکل ۴-۴ را بفرستی، همین سؤال را هم دقیق رسم می‌کنم. + +--- + +## ۳-۲۴ + +`F(A,B,C,D)=Σ(0,1,2,3,4,8,9,12)` + +ساده‌شده: +`F = A'B' + B'C' + C'D'` + +همچنین: +`F' = AC + BC + BD` + +الف) NAND-AND: +`F = (AC)'(BC)'(BD)'` + +ب) AND-NOR: +`F = (AC + BC + BD)'` + +پ) OR-NAND: +`F = [(A+B)(B+C)(C+D)]'` + +ت) NOR-OR: +`F = (A+B)' + (B+C)' + (C+D)'` + +--- + +## ۳-۲۶ + +داده‌ها: + +`f = wxy' + y'z + w'yz' + x'yz'` + +`g = (w+x+y'+z')(x'+y'+z)(w'+y+z')` + +حاصل ساده‌ی `F = fg`: + +`F = x'yz' + w'y'z + wxy'z'` + +--- + +## ۳-۲۸ + +برای مولد توازن فرد سه‌بیتی با ورودی‌های `A,B,C`، بیت توازن فرد باید کل تعداد ۱ها را فرد کند: + +`P_odd = (A ⊕ B ⊕ C)'` + +برای چک‌کننده توازن فرد چهار‌بیتی با بیت توازن `P`: + +خروجی خطا: +`Error = (A ⊕ B ⊕ C ⊕ P)'` + +یعنی اگر کل تعداد ۱ها زوج شود، خطا برابر ۱ می‌شود. + +--- + +## ۳-۳۰ + +عبارت: + +`F = AB'CD' + A'BCD' + AB'C'D + A'BC'D` + +گروه‌بندی: + +`F = (A ⊕ B)(C ⊕ D)` + +پس مدار فقط با XOR و AND: + +```text +X1 = A ⊕ B +X2 = C ⊕ D +F = X1 · X2 +``` + +--- + +## ۳-۳۲ + +مدار XOR شکل ۳-۲۲(الف) را به صورت رایج در نظر می‌گیریم: + +`F = xy' + x'y` + +تأخیرها: +NOT = 10ns، AND = 20ns، OR = 30ns +ورودی از `xy=00` به `xy=01` می‌رود؛ یعنی `x=0` ثابت است و `y:0→1`. + +```text +x' همیشه 1 +y' در t=10ns از 1 به 0 می‌رود +xy' همیشه 0 +x'y در t=20ns از 0 به 1 می‌رود +F در t=50ns از 0 به 1 می‌رود +``` + +جدول زمانی: + +| بازه زمانی | x' | y' | xy' | x'y | F | +| ----------- | -: | -: | --: | --: | -: | +| 0 تا 10ns | 1 | 1 | 0 | 0 | 0 | +| 10 تا 20ns | 1 | 0 | 0 | 0 | 0 | +| 20 تا 50ns | 1 | 0 | 0 | 1 | 0 | +| بعد از 50ns | 1 | 0 | 0 | 1 | 1 | + +Verilog با تأخیر: + +```verilog +module xor_delay(input x, y, output F); + wire xn, yn, a, b; + + not #10 (xn, x); + not #10 (yn, y); + + and #20 (a, x, yn); + and #20 (b, xn, y); + + or #30 (F, a, b); +endmodule +``` + +تست‌بنچ ساده: + +```verilog +module tb; + reg x, y; + wire F; + + xor_delay uut(x, y, F); + + initial begin + x = 0; y = 0; + #20 y = 1; + #100 $finish; + end +endmodule +``` + +--- + +## ۳-۳۴ + +توصیف HDL با continuous assignment: + +```verilog +module circuit_334(input A, B, C, D, output x, y, z); + + assign x = A & ((C & D) | B) | (B & ~C); + + assign y = ((A & ~B) | (~A & B)) & (C | ~D); + + assign z = ~((A | B) & (~C | (~D & B))); + +endmodule +``` + +--- + +## ۳-۳۶ + +کد HDL داده‌شده معادل این روابط است: + +```text +a = A' +d = D' +x = B C D' +y = A' C +z = y + A +w = z B +F = x + w +``` + +ساده‌سازی: + +`z = A + A'C = A + C` + +`w = B(A+C)` + +`F = BCD' + B(A+C)` + +چون `BC`، جمله `BCD'` را پوشش می‌دهد: + +`F = AB + BC = B(A+C)` + +پس مدار نهایی ساده‌شده: + +```text +A ----\ + OR ----\ +C ----/ AND ---- F + / +B -----------/ +```