Skip to content

Latest commit

 

History

History
373 lines (302 loc) · 13.1 KB

diglab_03_03_sol.md

File metadata and controls

373 lines (302 loc) · 13.1 KB

Binary Encoder (diglab_​03_​03)

อ่านโจทย์ได้ที่นี่ Click Here!


Step 1: พิจารณาโจทย์ และเขียน Truth Table

Truth Table ของการแปลง Binary เป็นการเข้ารหัสแบบต่างๆ

  • ตัวแปร A3, A2, A1, A0 เก็บข้อมูลที่ได้จากการเข้ารหัสแบบ Excess-3
  • ตัวแปร B3, B2, B1, B0 เก็บข้อมูลที่ได้จากการเข้ารหัสแบบ Cyclic
  • ตัวแปร C3, C2, C1, C0 เก็บข้อมูลที่ได้จากการเข้ารหัสแบบ 2 4 2 1 Code
  • ตัวแปร D3, D2, D1, D0 เก็บข้อมูลที่ได้จากการเข้ารหัสแบบ 6 4 2 -3 Code

Truth Table ของ Multiplexer 4-to-1

จากโจทย์บอกให้วงจรทำการเข้ารหัสด้วยโดยอ้างอิงตาม Selector

  • ถ้า Selector เท่ากับ 00 ให้เข้ารหัสแบบ Excess-3
  • ถ้า Selector เท่ากับ 01 ให้เข้ารหัสแบบ Cyclic
  • ถ้า Selector เท่ากับ 10 ให้เข้ารหัสแบบ 2 4 2 1 Code
  • ถ้า Selector เท่ากับ 11 ให้เข้ารหัสแบบ 6 4 2 -3 Code

ซึ่งการใช้ Multiplexer 4-to-1 กับ Input ที่มี 4 bits สามารถทำได้โดยการใช้วงจร Multiplexer 4-to-1 จำนวน 4 ตัว โดยที่

  • Multiplexer 4-to-1 ตัวที่ 1 ใช้งานกับ Input ตัวแปร A0, B0, C0, D0
  • Multiplexer 4-to-1 ตัวที่ 2 ใช้งานกับ Input ตัวแปร A1, B1, C1, D1
  • Multiplexer 4-to-1 ตัวที่ 3 ใช้งานกับ Input ตัวแปร A2, B2, C2, D2
  • Multiplexer 4-to-1 ตัวที่ 4 ใช้งานกับ Input ตัวแปร A3, B3, C3, D3

จาก Truth Table ของ Multiplexer 4-to-1 ทั้ง 4 ตัว จะสามารถหาสมการ Boolean ของ Multiplexer แต่ละตัวได้ดังนี้

$Z_{0} = S_{1}'S_{0}'A_{0} + S_{1}'S_{0}B_{0} + S_{1}S_{0}'C_{0} + S_{1}S_{0}D_{0}$

$Z_{1} = S_{1}'S_{0}'A_{1} + S_{1}'S_{0}B_{1} + S_{1}S_{0}'C_{1} + S_{1}S_{0}D_{1}$

$Z_{2} = S_{1}'S_{0}'A_{2} + S_{1}'S_{0}B_{2} + S_{1}S_{0}'C_{2} + S_{1}S_{0}D_{2}$

$Z_{3} = S_{1}'S_{0}'A_{3} + S_{1}'S_{0}B_{3} + S_{1}S_{0}'C_{3} + S_{1}S_{0}D_{3}$


Step 2: ใช้งานโปรแกรม ESPRESSO logic minimizer ในการหาสมการ Boolean

การใช้งานโปรแกรม

การใช้งานโปรแกรม ESPRESSO logic minimizer จะต้องสร้างไฟล์สำหรับ Input และ Output ไว้ก่อน

  • ไฟล์ Input จะเป็นไฟล์ที่บรรจุชุดคำสั่งเข้าไป (ไฟล์ .pla)
  • ไฟล์ Output จะเป็นไฟล์ที่ ESPRESSO logic minimizer จัดเก็บสมการ Boolean หลังจากที่ประมวลผล Input เสร็จสิ้น (ไฟล์ .pla)
  • แนะนำให้ใช้งาน ESPRESSO logic minimizer แบบ Compile Mode ผ่าน Command Prompt
  • สามารถอ่านขั้นตอนการใช้งานโปรแกรม ESPRESSO logic minimizer แบบละเอียด ได้ที่นี่

หาสมการ Boolean ของการเข้ารหัสแบบ Excess-3

Excess-3 Encoder Input

.i 4
.o 4
.ilb X3 X2 X1 X0
.ob A3 A2 A1 A0
.p 16
0000 0011
0001 0100
0010 0101
0011 0110
0100 0111
0101 1000
0110 1001
0111 1010
1000 1011
1001 1100
1010 ----
1011 ----
1100 ----
1101 ----
1110 ----
1111 ----
.e

หมายเหตุ: ส่วนที่เป็น Don't care ให้ใช้เครื่องหมาย - แทนเลข 0 กับ 1 ได้เลย

Excess-3 Encoder Output

  • เครื่องหมาย & หมายถึง AND
  • เครื่องหมาย | หมายถึง OR
  • เครื่องหมาย ! หมายถึง NOT
A3 = (X2&X1&!X0) | (X2&X0) | (X3);
A2 = (X2&!X1&!X0) | (!X2&X1&!X0) | (!X2&X0);
A1 = (X1&X0) | (!X1&!X0);
A0 = (!X2&X1&!X0) | (X2&X1&!X0) | (!X1&!X0);

หาสมการ Boolean ของการเข้ารหัสแบบ Cyclic

Cyclic Encoder Input

.i 4
.o 4
.ilb X3 X2 X1 X0
.ob B3 B2 B1 B0
.p 16
0000 0000
0001 0001
0010 0011
0011 0010
0100 0110
0101 0111
0110 0101
0111 0100
1000 1100
1001 1101
1010 ----
1011 ----
1100 ----
1101 ----
1110 ----
1111 ----
.e

หมายเหตุ: ส่วนที่เป็น Don't care ให้ใช้เครื่องหมาย - แทนเลข 0 กับ 1 ได้เลย

Cyclic Encoder Output

  • เครื่องหมาย & หมายถึง AND
  • เครื่องหมาย | หมายถึง OR
  • เครื่องหมาย ! หมายถึง NOT
B3 = (X3);
B2 = (X2) | (X3);
B1 = (!X2&X1) | (X2&!X1);
B0 = (X1&!X0) | (!X1&X0);

หาสมการ Boolean ของการเข้ารหัสแบบ 2 4 2 1 Code

2 4 2 1 Code Encoder Input

.i 4
.o 4
.ilb X3 X2 X1 X0
.ob C3 C2 C1 C0
.p 16
0000 0000
0001 0001
0010 0010
0011 0011
0100 0100
0101 1011
0110 1100
0111 1101
1000 1110
1001 1111
1010 ----
1011 ----
1100 ----
1101 ----
1110 ----
1111 ----
.e

หมายเหตุ: ส่วนที่เป็น Don't care ให้ใช้เครื่องหมาย - แทนเลข 0 กับ 1 ได้เลย

2 4 2 1 Code Encoder Output

  • เครื่องหมาย & หมายถึง AND
  • เครื่องหมาย | หมายถึง OR
  • เครื่องหมาย ! หมายถึง NOT
C3 = (X2&!X1&X0) | (X2&X1) | (X3);
C2 = (X2&!X0) | (X2&X1) | (X3);
C1 = (!X2&X1) | (X2&!X1&X0) | (X3);
C0 = (X0);

หาสมการ Boolean ของการเข้ารหัสแบบ 6 4 2 -3 Code

6 4 2 -3 Code Encoder Input

.i 4
.o 4
.ilb X3 X2 X1 X0
.ob D3 D2 D1 D0
.p 16
0000 0000
0001 0101
0010 0010
0011 1001
0100 0100
0101 1011
0110 0110
0111 1101
1000 1010
1001 1111
1010 ----
1011 ----
1100 ----
1101 ----
1110 ----
1111 ----
.e

หมายเหตุ: ส่วนที่เป็น Don't care ให้ใช้เครื่องหมาย - แทนเลข 0 กับ 1 ได้เลย

6 4 2 -3 Code Encoder Output

  • เครื่องหมาย & หมายถึง AND
  • เครื่องหมาย | หมายถึง OR
  • เครื่องหมาย ! หมายถึง NOT
D3 = (X2&!X1&X0) | (X1&X0) | (X3);
D2 = (X2&X1) | (!X2&!X1&X0) | (X2&!X0);
D1 = (X1&!X0) | (X2&!X1&X0) | (X3);
D0 = (!X2&!X1&X0) | (X2&!X1&X0) | (X1&X0);

Step 3: ลดรูปสมการ Boolean ต่อจาก ESPRESSO logic minimizer

เนื่องจากว่า ESPRESSO logic minimizer อาจจะไม่ได้ลดรูปให้อยู่ในรูปอย่างง่ายที่สุด ดังนั้นเราจะมาลดรูปสมการกันต่อ

Simplification Theorems

  • $X + 1 = 1$
  • $X \cdot 1 = X$
  • $X + X' = 1$
  • $XY + XY' = X$
  • $X + X'Y = X + Y$

Excess-3 Encoder

พิจารณาสมการ Boolean ของ A3

A3 = (X2&X1&!X0) | (X2&X0) | (X3);

$A_{3} = X_{2}X_{0} + X_{2}X_{1}X_{0}' + X_{3}$

$A_{3} = X_{2}(X_{0} + X_{1}X_{0}') + X_{3}$

$A_{3} = X_{2}(X_{0} + X_{1}) + X_{3}$

$A_{3} = X_{2}X_{1} + X_{2}X_{0} + X_{3}$

พิจารณาสมการ Boolean ของ A2

A2 = (X2&!X1&!X0) | (!X2&X1&!X0) | (!X2&X0);

$A_{2} = X_{2}X_{1}'X_{0}' + X_{2}'X_{1}X_{0}' + X_{2}'X_{0}$

$A_{2} = X_{2}X_{1}'X_{0}' + X_{2}'(X_{1}X_{0}' + X_{0})$

$A_{2} = X_{2}X_{1}'X_{0}' + X_{2}'(X_{1} + X_{0})$

$A_{2} = X_{2}X_{1}'X_{0}' + X_{2}'X_{1} + X_{2}'X_{0}$

พิจารณาสมการ Boolean ของ A1

A1 = (X1&X0) | (!X1&!X0);

สมการนี้เป็นสมการที่อยู่ในรูปอย่างง่ายอยู่แล้ว

$A_{1} = X_{1}X_{0} + X_{1}'X_{0}'$

พิจารณาสมการ Boolean ของ A0

A0 = (!X2&X1&!X0) | (X2&X1&!X0) | (!X1&!X0);

$A_{0} = X_{2}'X_{1}X_{0}' + X_{2}X_{1}X_{0}' + X_{1}'X_{0}'$

$A_{0} = X_{1}X_{0}' + X_{1}'X_{0}'$

$A_{0} = X_{0}'$

Cyclic Encoder

B3 = (X3);
B2 = (X2) | (X3);
B1 = (!X2&X1) | (X2&!X1);
B0 = (X1&!X0) | (!X1&X0);

พิจารณาสมการ Boolean ของ B3, B2, B1, B0

ทุกสมการเป็นสมการอย่างง่ายอยู่แล้ว

$B_{3} = X_{3}$

$B_{2} = X_{3} + X_{2}$

$B_{1} = X_{2}X_{1}' + X_{2}'X_{1}$

$B_{0} = X_{1}X_{0}' + X_{1}'X_{0}$

2 4 2 1 Code Encoder

C3 = (X2&!X1&X0) | (X2&X1) | (X3);
C2 = (X2&!X0) | (X2&X1) | (X3);
C1 = (!X2&X1) | (X2&!X1&X0) | (X3);
C0 = (X0);

พิจารณาสมการ Boolean ของ C3

$C_{3} = X_{2}X_{1}'X_{0} + X_{2}X_{1} + X_{3}$

$C_{3} = X_{2}(X_{1}'X_{0} + X_{1}) + X_{3}$

$C_{3} = X_{2}(X_{1} + X_{0}) + X_{3}$

$C_{3} = X_{2}X_{1} + X_{2}X_{0} + X_{3}$

พิจารณาสมการ Boolean ของ C2, C1, C0

ทุกสมการเป็นสมการอย่างง่ายอยู่แล้ว

$C_{2} = X_{2}X_{1} + X_{2}X_{0}' + X_{3}$

$C_{1} = X_{2}X_{1}'X_{0} + X_{2}'X_{1} + X_{3}$

$C_{0} = X_{0}$

6 4 2 -3 Code Encoder

พิจารณาสมการ Boolean ของ D3

D3 = (X2&!X1&X0) | (X1&X0) | (X3);

$D_{3} = X_{2}'X_{1}X_{0} + X_{2}X_{0}' + X_{3}$

พิจารณาสมการ Boolean ของ D2, D1

D2 = (X2&X1) | (!X2&!X1&X0) | (X2&!X0);
D1 = (X1&!X0) | (X2&!X1&X0) | (X3);

ทุกสมการเป็นสมการอย่างง่ายอยู่แล้ว

$D_{2} = X_{2}'X_{1}X_{0} + X_{2}X_{0}' + X_{3}$

$D_{1} = X_{2}'X_{1}'X_{0} + X_{2}X_{0}' + X_{3}X_{0}$

พิจารณาสมการ Boolean ของ D0

D0 = (!X2&!X1&X0) | (X2&!X1&X0) | (X1&X0);

$D_{0} = X_{2}'X_{1}'X_{0} + X_{2}X_{1}'X_{0} + X_{1}X_{0}$

$D_{0} = X_{1}'X_{0} + X_{1}X_{0}$

$D_{0} = X_{0}$


Step 4: นำสมการ Boolean ไปต่อเป็นวงจร

หลังจากที่ได้สมการ Boolean มาแล้ว ให้นำสมการที่ได้มาต่อเป็นวงจร Digital ก็จะได้ดังภาพเลย

การต่อวงจรของ Excess-3 Encoder

$A_{3} = X_{2}X_{1} + X_{2}X_{0} + X_{3}$

$A_{2} = X_{2}X_{1}'X_{0}' + X_{2}'X_{1} + X_{2}'X_{0}$

$A_{1} = X_{1}X_{0} + X_{1}'X_{0}'$

$A_{0} = X_{0}'$

การต่อวงจรของ Cyclic Encoder

$B_{3} = X_{3}$

$B_{2} = X_{3} + X_{2}$

$B_{1} = X_{2}X_{1}' + X_{2}'X_{1}$

$B_{0} = X_{1}X_{0}' + X_{1}'X_{0}$

การต่อวงจรของ 2 4 2 1 Code Encoder

$C_{3} = X_{2}X_{1} + X_{2}X_{0} + X_{3}$

$C_{2} = X_{2}X_{1} + X_{2}X_{0}' + X_{3}$

$C_{1} = X_{2}X_{1}'X_{0} + X_{2}'X_{1} + X_{3}$

$C_{0} = X_{0}$

การต่อวงจรของ 6 4 2 -3 Code Encoder

$D_{3} = X_{2}'X_{1}X_{0} + X_{2}X_{0}' + X_{3}$

$D_{2} = X_{2}'X_{1}X_{0} + X_{2}X_{0}' + X_{3}$

$D_{1} = X_{2}'X_{1}'X_{0} + X_{2}X_{0}' + X_{3}X_{0}$

$D_{0} = X_{0}$

การต่อวงจรของ Multiplexer 4-to-1

$Z_{0} = S_{1}'S_{0}'A_{0} + S_{1}'S_{0}B_{0} + S_{1}S_{0}'C_{0} + S_{1}S_{0}D_{0}$

$Z_{1} = S_{1}'S_{0}'A_{1} + S_{1}'S_{0}B_{1} + S_{1}S_{0}'C_{1} + S_{1}S_{0}D_{1}$

$Z_{2} = S_{1}'S_{0}'A_{2} + S_{1}'S_{0}B_{2} + S_{1}S_{0}'C_{2} + S_{1}S_{0}D_{2}$

$Z_{3} = S_{1}'S_{0}'A_{3} + S_{1}'S_{0}B_{3} + S_{1}S_{0}'C_{3} + S_{1}S_{0}D_{3}$