I.
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Lập bảng công tác:
KHOA CÔNG NGHỆ THÔNG TIN
____***____
BCD
8421 BCD 5421
abcd
xyzw
0
0000
0000
1
0001
0001
2
0010
0010
3
0011
0011
5
0101
1000
6
0110
1001
BÀI TẬP KỸ
THUẬT
SỐ0100
ỨNG DỤNG
4
0100
7
8
0111
ĐỀ
TÀI 10: 1010
1000
1011
THIẾT KẾ
9 MẠCH
1001 CHUYỂN
1100 ĐỔI MÃ
10
1010
1101
TỪ BCD
8421
SANG BCD
5421
11
1011
1110
12 HỆ1100
XXXXNHỊ PHÂN
DÙNG CHO
ĐẾM THẬP
13
1101
XXXX
14
1110
XXXX
15
Giảng viên
Sinh viên
Mã sinh viên
Lớp
1111
:
:
:
:
XXXX
TS.Đặng Bá Lư
Trần Duy Tân
102120117
12T1
Đà Nẵng, ngày 24 tháng 7 năm 2017
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
II. Thiết kế mạch dạng AND_OR, NOR_NOR, NOR_AND
1) Tối giản bằng bảng K:
Đánh vòng các ô toàn 0 ta có biểu thức tối giản của đảo hàm.
cd
00
01
11
10
00
0
0
0
0
01
0
1
1
1
11
X
X
X
X
10
1
1
1
1
00
01
11
10
00
0
0
0
0
01
1
0
0
0
11
X
X
X
X
10
0
1
1
1
ab
=
cd
ab
=
SV: Trần Duy Tân
Lớp 12T1
Trang 2
Bài tập Kỹ thuật số ứng dụng
cd
GV: Đặng Bá Lư
00
01
11
10
00
0
0
1
1
01
0
0
1
0
11
X
X
X
X
ab
10
1
0
1
0
00
01
11
10
00
0
1
1
0
01
0
0
0
1
11
X
X
X
X
10
1
0
0
1
cd
b
ac
ab
SV: Trần Duy Tân
Lớp 12T1
Trang 3
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
2) Tối giản bằng biểu thức Logic
Đầu ra x:
và điều kiện ràng buộc
)
=
Đầu ra y:
và điều kiện ràng buộc
= ( + ) + ( ) + () + ()
=
=
=
Đầu ra z:
và điều kiện ràng buộc
=
=
=b++
Đầu ra w:
và điều kiện ràng buộc
=
=+
=
=
SV: Trần Duy Tân
Lớp 12T1
Trang 4
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
Thiết kế mạch:
a. Dạng AND_OR
Từ biểu thức tối giản của đảo hàm phủ định 1 lần nữa (triển khai đến các biến)
ta có biểu thức tối giản của nguyên hàm dạng AND_OR.
Chương trình mô phỏng mạch AND_OR:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void abcd(char i, char *x, char *a, char *b, char *c, char *d);
int main()
{
char a, b, c, d, i, MA8421[4] = { 8,4,2,1 };
printf("\n\t\t\t _____________________________________");
printf("\n\t\t\t | Tran Duy Tan. MSSV:102120117
|");
printf("\n\t\t\t | Mo phong Mach chuyen ma
|");
SV: Trần Duy Tân
Lớp 12T1
Trang 5
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
printf("\n\t\t\t | BCD 8421=> BCD 5421
|");
printf("\n\t\t\t | Dung cho he thap nhi phan
|");
printf("\n\t\t\t | Mach AND_OR
|");
printf("\n\t\t\t |______________________________________|");
printf("\n\n\n\n\n");
printf("\t\t\t\t........MA8421.....MA5421.\n");
printf("\t\t\t\t| SoTP |a|b|c|d| |x|y|z|w|\n");
for (i = 0; i <= 11; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |%d|%d|%d|%d|\n", i, a, b,
c, d,
(a || b) && (a || c || d), (a || !c) && (a || !d) && (b || c || d)
&& (!a||!b), (a || c) && (!b || d) && (c || !d) && (!a || !c || d), (!a || !d) && (a
|| b || d) && (!b || c) && (!b || !d));
}
for (i = 12; i <= 15; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |X|X|X|X|\n", i, a, b, c, d);
}
getchar();
}
void abcd(char i, char *x, char *a, char *b, char *c, char *d)
{
char j = i;
*a = j >= x[0] ? 1 : 0; if (*a) j -= x[0];
*b = j >= x[1] ? 1 : 0; if (*b) j -= x[1];
*c = j >= x[2] ? 1 : 0; if (*c) j -= x[2];
*d = j >= x[3] ? 1 : 0; if (*d) j -= x[3];
}
SV: Trần Duy Tân
Lớp 12T1
Trang 6
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
b. Dạng NOR_AND
Từ biểu thức tối giản của đảo hàm phủ định 1 lần nữa ( không triển khai) ta có
biểu thức tối giản của nguyên hàm dạng NOR_AND.
SV: Trần Duy Tân
Lớp 12T1
Trang 7
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
Chương trình mô phỏng mạch NOR_AND:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void abcd(char i, char *x, char *a, char *b, char *c, char *d);
int main()
{
char a, b, c, d, i, MA8421[4] = { 8,4,2,1 };
printf("\n\t\t\t _____________________________________");
printf("\n\t\t\t | Tran Duy Tan. MSSV:102120117
|");
printf("\n\t\t\t | Mo phong Mach chuyen ma
|");
printf("\n\t\t\t | BCD 8421=> BCD 5421
|");
printf("\n\t\t\t | Dung cho he thap nhi phan
|");
printf("\n\t\t\t | Mach NOR_AND
|");
printf("\n\t\t\t |______________________________________|");
printf("\n\n\n\n\n");
printf("\t\t\t\t........MA8421.....MA5421.\n");
printf("\t\t\t\t| SoTP |a|b|c|d| |x|y|z|w|\n");
for (i = 0; i <= 11; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |%d|%d|%d|%d|\n", i, a, b,
c, d,
SV: Trần Duy Tân
Lớp 12T1
Trang 8
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
!((!a&&!b)||(!a&&!c&&!d)), !((!a&&c)||(!a&&d)||(!b&&!
c&&!d)), !((!a&&!c)||(b&&!d)||(!c&&d)||(a&&c&&!d)), !((a&&d)||(!a&&!b&&!
d)||(b&&!c)||(b&&d)));
}
for (i = 12; i <= 15; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |X|X|X|X|\n", i, a, b, c, d);
}
getchar();
}
void abcd(char i, char *x, char *a, char *b, char *c, char *d)
{
char j = i;
*a = j >= x[0] ? 1 : 0; if (*a) j -= x[0];
*b = j >= x[1] ? 1 : 0; if (*b) j -= x[1];
*c = j >= x[2] ? 1 : 0; if (*c) j -= x[2];
*d = j >= x[3] ? 1 : 0; if (*d) j -= x[3];
}
SV: Trần Duy Tân
Lớp 12T1
Trang 9
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
c. Dạng NOR_NOR
Từ biểu thức tối giản của nguyên hàm dạng AND_OR, phủ định 2 lần nữa
( triển khai đến số hạng) ta có biểu thức tối giản của nguyên hàm dạng NOR_NOR.
Chương trình mô phỏng mạch NOR_NOR:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void abcd(char i, char *x, char *a, char *b, char *c, char *d);
int main()
{
char a, b, c, d, i, MA8421[4] = { 8,4,2,1 };
printf("\n\t\t\t _____________________________________");
printf("\n\t\t\t | Tran Duy Tan. MSSV:102120117
|");
SV: Trần Duy Tân
Lớp 12T1
Trang 10
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
printf("\n\t\t\t | Mo phong Mach chuyen ma
|");
printf("\n\t\t\t | BCD 8421=> BCD 5421
|");
printf("\n\t\t\t | Dung cho he thap nhi phan
|");
printf("\n\t\t\t | Mach NOR_NOR
|");
printf("\n\t\t\t |______________________________________|");
printf("\n\n\n\n\n");
printf("\t\t\t\t........MA8421.....MA5421.\n");
printf("\t\t\t\t| SoTP |a|b|c|d| |x|y|z|w|\n");
for (i = 0; i <= 11; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |%d|%d|%d|%d|\n", i, a, b,
c, d,
!(!(a||b)||!(a||c||d)),!(!(a||!c)||!(a||!d)||!(b||c||d)),!(!(a||c)||!
(!b||d)||!(c||!d)||!(!a||!c||d)), !(!(!a||!d)||!(a||b||d))||(!(!b||c)||!(!b||!d)));
}
for (i = 12; i <= 15; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |X|X|X|X|\n", i, a, b, c, d);
}
getchar();
}
void abcd(char i, char *x, char *a, char *b, char *c, char *d)
{
char j = i;
*a = j >= x[0] ? 1 : 0; if (*a) j -= x[0];
*b = j >= x[1] ? 1 : 0; if (*b) j -= x[1];
*c = j >= x[2] ? 1 : 0; if (*c) j -= x[2];
*d = j >= x[3] ? 1 : 0; if (*d) j -= x[3];
}
SV: Trần Duy Tân
Lớp 12T1
Trang 11
Bài tập Kỹ thuật số ứng dụng
SV: Trần Duy Tân
Lớp 12T1
GV: Đặng Bá Lư
Trang 12
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
III. Thiết kế mạch dạng OR_AND, NAND_NAND
1) Tối giản bằng bảng K:
Đánh vòng các ô toàn 1 ta có biểu thức tối giản của hàm.
cd
00
01
11
10
00
0
0
0
0
01
0
1
1
1
11
X
X
X
X
10
1
1
1
1
ab
bd
bc
a
x = a + bc + bd
cd
00
01
11
10
00
0
0
0
0
01
1
0
0
0
11
X
X
X
X
ab
b
ad
ac
10
0
1
1
1
y=
SV: Trần Duy Tân
Lớp 12T1
Trang 13
Bài tập Kỹ thuật số ứng dụng
cd
GV: Đặng Bá Lư
00
01
11
10
00
0
0
1
1
01
0
0
1
0
11
X
X
X
X
ab
a
10
1
0
1
0
00
01
11
10
00
0
1
1
0
01
0
0
0
1
11
X
X
X
X
cd
z=a
cd
ab
bc
a
10
SV: Trần Duy Tân
Lớp 12T1
1
0
0
1
Trang 14
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
Tối giản bằng biểu thức Logic
Đầu ra x:
và điều kiện ràng buộc
= + (ac + abc )
=
= bd + bc + a + ad + ab
=
=
Đầu ra y:
và điều kiện ràng buộc
=
=
Đầu ra z:
và điều kiện ràng buộc
=
Đầu ra w:
và điều kiện ràng buộc
=
SV: Trần Duy Tân
Lớp 12T1
Trang 15
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
Thiết kế mạch:
c. Dạng OR_AND
x=
Chương trình mô phỏng mạch OR_AND:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void abcd(char i, char *x, char *a, char *b, char *c, char *d);
int main()
{
char a, b, c, d, i, MA8421[4] = { 8,4,2,1 };
printf("\n\t\t\t _____________________________________");
printf("\n\t\t\t | Tran Duy Tan. MSSV:102120117
|");
printf("\n\t\t\t | Mo phong Mach chuyen ma
|");
printf("\n\t\t\t | BCD 8421=> BCD 5421
|");
SV: Trần Duy Tân
Lớp 12T1
Trang 16
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
printf("\n\t\t\t | Dung cho he thap nhi phan
|");
printf("\n\t\t\t | Mach OR_AND
|");
printf("\n\t\t\t |______________________________________|");
printf("\n\n\n\n\n");
printf("\t\t\t\t........MA8421.....MA5421.\n");
printf("\t\t\t\t| SoTP |a|b|c|d| |x|y|z|w|\n");
for (i = 0; i <= 11; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |%d|%d|%d|%d|\n", i, a, b,
c, d,
a || (b&&c) || (b&&d), (b && !c && !d) || (a&&d) || (a&&c),
(!a && !b&&c) || (c&&d) || (a && !c && !d), (!a && !b&&d) || (b&&c && !d) ||
(a && !d));
}
for (i = 12; i <= 15; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |X|X|X|X|\n", i, a, b, c, d);
}
getchar();
}
void abcd(char i, char *x, char *a, char *b, char *c, char *d)
{
char j = i;
*a = j >= x[0] ? 1 : 0; if (*a) j -= x[0];
*b = j >= x[1] ? 1 : 0; if (*b) j -= x[1];
*c = j >= x[2] ? 1 : 0; if (*c) j -= x[2];
*d = j >= x[3] ? 1 : 0; if (*d) j -= x[3];
}
SV: Trần Duy Tân
Lớp 12T1
Trang 17
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
d. Dạng NAND_NAND
Từ biểu thức tối giản của nguyên hàm dạng OR_AND, phủ định 2 lần ( triển
khai đến số hạng) ta có biểu thức tối giản của nguyên hàm dạng NAND_NAND.
SV: Trần Duy Tân
Lớp 12T1
Trang 18
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
Chương trình mô phỏng mạch NAND_NAND:
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void abcd(char i, char *x, char *a, char *b, char *c, char *d);
int main()
{
char a, b, c, d, i, MA8421[4] = { 8,4,2,1 };
printf("\n\t\t\t _____________________________________");
printf("\n\t\t\t | Tran Duy Tan. MSSV:102120117
|");
printf("\n\t\t\t | Mo phong Mach chuyen ma
|");
printf("\n\t\t\t | BCD 8421=> BCD 5421
|");
printf("\n\t\t\t | Dung cho he thap nhi phan
|");
printf("\n\t\t\t | Mach NAND_NAND
|");
printf("\n\t\t\t |______________________________________|");
printf("\n\n\n\n\n");
printf("\t\t\t\t........MA8421.....MA5421.\n");
printf("\t\t\t\t| SoTP |a|b|c|d| |x|y|z|w|\n");
for (i = 0; i <= 11; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |%d|%d|%d|%d|\n", i, a, b,
c, d,
SV: Trần Duy Tân
Lớp 12T1
Trang 19
Bài tập Kỹ thuật số ứng dụng
GV: Đặng Bá Lư
!(!a && !(b&&c) && !(b&&d)), !(!(b && !c && !d) && !
(a&&d) && (!a&&c)), !(!(!a && !b&&c) && (!c&&d) && !(a && !c && !d)), !(!
(!a && !b&&d) && !(b&&c && !d) && !(a && !d)));
}
for (i = 12; i <= 15; i++)
{
abcd(i, MA8421, &a, &b, &c, &d);
printf("\t\t\t\t|\%5d |%d|%d|%d|%d| |X|X|X|X|\n", i, a, b, c, d);
}
getchar();
}
void abcd(char i, char *x, char *a, char *b, char *c, char *d)
{
char j = i;
*a = j >= x[0] ? 1 : 0; if (*a) j -= x[0];
*b = j >= x[1] ? 1 : 0; if (*b) j -= x[1];
*c = j >= x[2] ? 1 : 0; if (*c) j -= x[2];
*d = j >= x[3] ? 1 : 0; if (*d) j -= x[3];
}
SV: Trần Duy Tân
Lớp 12T1
Trang 20