This commit is contained in:
RadinPirouz
2026-05-19 00:09:14 +03:30
parent 6e46c2f933
commit 2195efcd28

392
3.md Normal file
View File

@@ -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 -----------/
```