## ۳-۲ الف) `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 -----------/ ```