Đề số 22 Thiết kế mạch chuyển mã từ
GRAY sang BCD 7421
Các bước thực hiện:
Đầu vào Gray gồm 4 bit vào A, B, C, D ; Đầu ra BCD 7421 gồm 4 bit ra
K, L, M, N
-Lập bảng công tác tương ứng cho Gray ( với A, B, C, D) và BCD 7421 ( với K, L, M, N)
-Lập biểu thức logic cho các đầu ra K, L, M, N ( dưới 2 dạng chuẩn tắc tuyển và chuẩn tắc hội)
-Tối giản biểu thức logic của mỗi đầu ra bằng 2 cách: dùng bảng Karnaugh và dùng các định lý logic
-Thiết kế mạch chuyển đổi với tất cả các dạng mạch logic ( gồm OR-AND, AND-OR, NOR-OR-AND, NOR- NOR, NAND-NAND)
-Viết chương trình mô phỏng mạch logic bằng ngôn ngữ C
-In kết quả của chương trình trả về màn hình
1.Bảng công tác:
Số
thập phân
Các tổ
hợp thừa
SVTH: Lê Anh Huỳnh Nhóm 8A Page 1
Trang 22.Biểu thức logic cho các đầu ra K, L, M, N:
+ Biểu thức logic theo dạng chuẩn tắc tuyển ( OR-AND ):
;
;
;
K = +
L = + +
+ Biểu thức logic theo dạng chuẩn tắc hội ( AND-OR ):
K= (A+B+C+D) (A+B+C+ ) (A+B+ +D) (A+B+ + ) (A+ +C+D);
L= (A+B+C+D) (A+B+C+ ) (A+B+ +D) (A+B+ + ) (A+ +C+ );
M= (A+B+C+D) (A+B+C+ ) (A+ +C+D) (A+ + +D) ( +B+C+D);
N= (A+B+C+D) (A+B+ +D) (A+ +C+D) ( +B+C+ ) ( +B+C+ );
K = (A+B+C+D)(A+B+C+ ) (A+B+ + ) (A+B+ +D) (A+ + +D) (A+ + + ) (A+ +C+ )
SVTH: Lê Anh Huỳnh Nhóm 8A Page 2
Trang 3L = (A+B+C+D)(A+B+C+ ) (A+B+ + ) (A+B+ +D) (A+ +C+D)( + +C+D) ( + +C+ )
M = (A+B+C+D)(A+B+C+ )(A+ + +D) (A+ + + ) (A+ +C+D)( + +C+D)
N = (A+B+C+D)(A+B+ + )(A+ + +D)(A+ +C+ ) (A+ +C+D) ( + +C+ )
3.Tối giản biểu thức logic đầu ra:
a)Phương pháp dùng định lý logic:
+ Đầu ra K:
và điều kiện ràng buộc
)
=
=
=
=
=
=
=
=
=
=
=>kết quả tối giản: K=
SVTH: Lê Anh Huỳnh Nhóm 8A Page 3
Trang 4+Đầu ra L:
và điều kiện ràng buộc
+(
= B
= B
= B
= B
= B
=>Kết quả tối giản: L= A + B
+Đầu ra M:
và điều kiện ràng buộc
+
=
=
=
=
=
=
=>Kết quả tối giản: M=
+Đầu ra N:
và điều kiện ràng buộc
SVTH: Lê Anh Huỳnh Nhóm 8A Page 4
Trang 5= D +
=>Kết quả tối giản: N= D +
b)Phương pháp dùng bảng Karnaugh:
* Dạng OR-AND
+Đầu ra K:
Từ bảng K, ta có biểu thức tối giản: K=A + B
+Đầu ra L:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 5
C D
10 00
C D AB
00
Ss A
Trang 6Từ bảng K, ta có biểu thức tối giản: L= BC + BD
+Đầu ra M:
giản: M= +
+Đầu ra N:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 6
C D AB
11
10
C D AB
BC
Trang 7Từ bảng K, ta có biểu thức tối giản: N= A + + + BCD
4.Thiết kế mạch chuyển đổi Gray sang BCD 7421 a)Dạng OR-AND:
+Thiết kế với các biểu thức đầu ra dạng OR-AND:
K=A + B L= BC + BD M= + N= A + + + BCD
+Mạch:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 7
A
BCD
Trang 8b)Dạng AND-OR:
+Xét bảng K đầu ra K:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 8
CD AB
00
00
A
B C
D
A B C D
Trang 9Đóng vòng toàn 0, ta có biểu thức tối giản đảo hàm: = + Phủ định đảo hàm:
+Xét bảng K đầu ra L:
Đóng vòng toàn 0, ta có biểu thức đảo hàm: = Phủ định đảo hàm:
L= = = (A+B)(A+C+ )
SVTH: Lê Anh Huỳnh Nhóm 8A Page 9
C D AB
00
01
00
Trang 10+Xét bảng K đầu ra M:
BC
Đóng vòng toàn 0, ta có biểu thức của đảo hàm: = Phủ định đảo hàm:
M= = = (
SVTH: Lê Anh Huỳnh Nhóm 8A Page 10
C D AB
00
C D AB
10
Trang 11AD Đóng vòng 0, ta có biểu thức của đảo hàm: =
Phủ định đảo hàm:
+Thiết kế mạch với các biểu thức dạng AND-OR:
K = (A+B)(A+C+D)
L = (A+B)(A+C+ )
M= ( N= ( (A + D)
SVTH: Lê Anh Huỳnh Nhóm 8A Page 11
K L M N
Trang 12+Mạch:
c)Dạng NOR-AND:
+Phủ định một lần biểu thức tối giản của đảo hàm (không triển khai):
K= = L= = M= = N= =
SVTH: Lê Anh Huỳnh Nhóm 8A Page 12
A B C D
A B C D
Trang 13+Mạch:
d)Dạng NOR-NOR:
+ Phủ định 2 lần biểu thức dạng AND-OR của các đầu ra ta có dạng NOR-NOR:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 13
A
B C D
A B C D
Trang 14K=(A+B).(A+C+D) = =
+Mạch:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 14
K L M N
A B C D
B C D
Trang 15e)Dạng NAND-NAND:
K=
L=A + B M= AD + BD + C N= D+ A
+Phủ định 2 lần biểu thức dạng OR-AND các đầu ra ta có biểu thức
dạng NAND-NAND:
L= = = M= AD + BD + C= = N= D+ A = =
+Mạch:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 15
K L M N
Trang 16C: Mô phỏng mạch logic bằng chương trình C:
a)Dạng OR-AND:
#include <conio.h>
#include <stdio.h>
main() { int a,b,c,d,k,i=0;
printf( "BANG CHUYEN MA BCD 7421 => BCD 2421" );
printf( "\n\n\n" );
printf( " - \n" );
printf( "| STP | BCD7421 | ==> | BCD2421 | \n" );
printf( " - \n" );
for (a=0;a<=1;a++)
for (b=0;b<=1;b++) for (c=0;c<=1;c++) for (d=0;d<=1;d++) { k=8*a+4*b+2*c+d;
if ((k>=11)||(k==7)) continue ; printf( "| %2d |%2d%2d%2d%2d | ==> |%2d%2d%2d%2d | \n" ,i,a,b,c,d, (b&&d||b&&c||a),(a||b&&!d),(a&&d||b&&d||!b&&c),(!a&&d||a&&!d));
i++;
} printf( " - \n" );
getch();
}
b) Dạng AND-OR :
#include <conio.h>
#include <stdio.h>
main() { int a,b,c,d,k,i=0;
printf( "BANG CHUYEN MA BCD 7421 => BCD 2421" );
printf( "\n\n\n" );
printf( " - \n" );
printf( "| STP | BCD7421 | ==> | BCD2421 | \n" );
printf( " - \n" );
SVTH: Lê Anh Huỳnh Nhóm 8A Page 16
B C
D
B C D
Trang 17for (b=0;b<=1;b++) for (c=0;c<=1;c++) for (d=0;d<=1;d++) { k=8*a+4*b+2*c+d;
if ((k>=11)||(k==7)) continue ; printf( "| %2d |%2d%2d%2d%2d | ==> |%2d%2d%2d%2d | \n" ,i,a,b,c,d,
!(!((a||b)&&(a||c||d))),!(!((a||b)&&(a||c||!d))),!(!((!b||!
c)&&(c||d)&&(a||b||c))),!(!((!a||!d)&&(a||d))));
i++;
} printf( " - \n" );
getch();
}
c) Dạng NOR-AND:
#include <conio.h>
#include <stdio.h>
main() { int a,b,c,d,k,i=0;
printf( "BANG CHUYEN MA BCD 7421 => BCD 2421" );
printf( "\n\n\n" );
printf( " - \n" );
printf( "| STP | BCD7421 | ==> | BCD2421 | \n" );
printf( " - \n" );
for (a=0;a<=1;a++)
for (b=0;b<=1;b++) for (c=0;c<=1;c++) for (d=0;d<=1;d++) { k=8*a+4*b+2*c+d;
if ((k>=11)||(k==7)) continue ; printf( "| %2d |%2d%2d%2d%2d | ==> |%2d%2d%2d%2d | \n" ,i,a,b,c,d,
!((!a&&!b)||(!a&&!c&&!d)),!((!a&&!b)||(!a&&!c&&d)),!((b&&c)||(! c&&!d)||(!a&&!b&&!c)),!((a&&d)||(!a&&!d)));
i++;
} printf( " - \n" );
getch();
}
d) Dạng toàn NOR:
#include <conio.h>
#include <stdio.h>
main() { int a,b,c,d,k,i=0;
printf( "BANG CHUYEN MA BCD 7421 => BCD 2421" );
printf( "\n\n\n" );
printf( " - \n" );
printf( "| STP | BCD7421 | ==> | BCD2421 | \n" );
printf( " - \n" );
for (a=0;a<=1;a++)
for (b=0;b<=1;b++) for (c=0;c<=1;c++)
SVTH: Lê Anh Huỳnh Nhóm 8A Page 17
Trang 18for (d=0;d<=1;d++) { k=8*a+4*b+2*c+d;
if ((k>=11)||(k==7)) continue ; printf( "| %2d |%2d%2d%2d%2d | ==> |%2d%2d%2d%2d | \n" ,i,a,b,c,d,
!(!((a||b)&&(a||c||d))),!(!((a||b)&&(a||c||!d))),!(!((!b||!
c)&&(c||d)&&(a||b||c))),!(!((!a||!d)&&(a||d))));
i++;
} printf( " - \n" );
getch();
}
e) Dạng toàn NAND:
#include <conio.h>
#include <stdio.h>
main() { int a,b,c,d,k,i=0;
printf( "BANG CHUYEN MA BCD 7421 => BCD 2421" );
printf( "\n\n\n" );
printf( " - \n" );
printf( "| STP | BCD7421 | ==> | BCD2421 | \n" );
printf( " - \n" );
for (a=0;a<=1;a++)
for (b=0;b<=1;b++) for (c=0;c<=1;c++) for (d=0;d<=1;d++) { k=8*a+4*b+2*c+d;
if ((k>=11)||(k==7)) continue ; printf( "| %2d |%2d%2d%2d%2d | ==> |%2d%2d%2d%2d | \n" ,i,a,b,c,d, !(!(b&&d)&&!(b&&c)&&!a),!(!a&&!(b&&!d)),!(!(a&&d)&&!(b&&d)&&!(!b&&c)),!(! (!a&&d)&&!(a&&!d)));
i++;
} printf( " - \n" );
getch();
}
Kết quả xuất ra màn hình của các chương trình mô phỏng trên:
SVTH: Lê Anh Huỳnh Nhóm 8A Page 18
Trang 19SVTH: Lê Anh Huỳnh Nhóm 8A Page 19