Tải bản đầy đủ (.pdf) (21 trang)

Bài tập Kỹ thuật số ứng dụng Thiết kế mạch chuyển mã từ BCD 7421 sang dư 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (904.22 KB, 21 trang )

ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN
____***____

BÀI TẬP

KỸ THUẬT SỐ ỨNG DỤNG
ĐỀ TÀI 16:
THIẾT KẾ MẠCH CHUYỂN MÃ
TỪ BCD 7421 SANG DƯ 3



Giảng viên
Sinh viên
MSSV
Lớp

:
:
:
:

TS.Đặng Bá Lư
Hồ Tá Quý
102130036
13T1

Đà Nẵng, ngày 11 tháng 11 năm 2015



Bài tập kĩ thuật số ứng dụng

I.

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Mạch chuyển mã BCD 7421 sang Dư 3

II. Lập bảng công tác:

BCD 7421
ABCD

DƯ 3
XYZW

0
1
2
3
4
5
6

0000
0001
0010
0011
0100
0101

0110

0011
0100
0101
0110
0111
1000
1001

7
8
9

1000
1001
1010

1010
1011
1100

10
11
12
13
14
15

0111

1011
1100
1101
1110
1111

xxxx
xxxx
xxxx
xxxx
xxxx
xxxx

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 2


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

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 nguyên hàm

Dựa vào bảng K ta có 𝑥(𝑎, 𝑏, 𝑐, 𝑑) = 𝑎 + 𝑏𝑑 + 𝑏𝑐


Ta có 𝑦(𝑥, 𝑏, 𝑐, 𝑑) = 𝑏𝑐̅𝑑̅ + 𝑎̅𝑏̅𝑑 + 𝑏̅𝑐

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 3


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Ta có: 𝑧(𝑎, 𝑏, 𝑐, 𝑑) = 𝑐̅𝑑̅ + 𝑐𝑑 + 𝑎𝑑

Ta có: 𝑤(𝑎, 𝑏, 𝑐, 𝑑) = 𝑎̅𝑑̅ + 𝑎𝑑
2. Tối giản bằng định lí logic.
a) x=∑(5,6,8,9,10) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
((𝑎𝑏̅𝑐̅𝑑̅ + 𝑎𝑏𝑐̅𝑑̅)+(𝑎𝑏̅𝑐̅𝑑+𝑎𝑏𝑐̅𝑑)+(𝑎𝑏̅𝑐𝑑 + 𝑎𝑏𝑐𝑑)+(𝑎𝑏̅𝑐𝑑̅ + 𝑎𝑏𝑐𝑑̅))
+(((𝑎𝑏𝑐̅𝑑+𝑎̅𝑏𝑐̅𝑑) + (𝑎̅𝑏𝑐𝑑 + 𝑎𝑏𝑐𝑑))+((𝑎̅𝑏𝑐𝑑 + 𝑎𝑏𝑐𝑑) + (𝑎̅𝑏𝑐𝑑̅ +
𝑎𝑏𝑐𝑑̅ )))
=( 𝑎𝑐̅𝑑̅ + 𝑎𝑐̅𝑑 + 𝑎𝑐𝑑 + 𝑎𝑐𝑑̅ ) + (𝑏𝑐̅𝑑 + 𝑏𝑐𝑑) + (𝑏𝑐𝑑 + 𝑏𝑐𝑑̅ )
= a+bd+bc

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 4


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3


b) y=∑(1,2,3,4,10) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑 + 𝑎̅𝑏̅𝑐𝑑) + (𝑎̅𝑏̅𝑐𝑑̅+𝑎̅𝑏̅𝑐𝑑 + 𝑎𝑏̅𝑐𝑑̅ + 𝑎𝑏̅𝑐𝑑)+(𝑎̅𝑏𝑐̅𝑑̅+𝑎𝑏𝑐̅𝑑̅)
=(𝑎̅𝑏̅𝑑 + 𝑏̅𝑐 + 𝑏𝑐̅𝑑̅)
c) z=∑(0,3,4,8,9) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑̅ + 𝑎̅𝑏𝑐̅𝑑̅ + 𝑎𝑏̅𝑐̅𝑑̅ +a𝑏𝑐̅𝑑̅)+( 𝑎̅𝑏̅𝑐𝑑 +
𝑎̅𝑏𝑐𝑑+𝑎𝑏̅𝑐𝑑+ 𝑎𝑏𝑐𝑑)+(𝑎𝑏̅𝑐̅𝑑 + 𝑎𝑏̅𝑐𝑑 + 𝑎𝑏𝑐̅𝑑+ 𝑎𝑏𝑐𝑑)
=𝑐̅𝑑̅ + 𝑐𝑑 + 𝑎𝑑
d) w=∑ 0,2,4,6,9 và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
((𝑎̅𝑏̅𝑐̅𝑑̅ + 𝑎̅𝑏𝑐̅𝑑̅ ) + (𝑎̅𝑏̅𝑐𝑑̅ + 𝑎̅𝑏𝑐𝑑̅ )) + ((𝑎𝑏̅𝑐̅𝑑 + 𝑎𝑏̅𝑐𝑑) + (𝑎𝑏𝑐̅𝑑 +
𝑎𝑏𝑐𝑑))
= (𝑎̅𝑐̅𝑑̅ + 𝑎̅𝑐𝑑̅ ) + (𝑎𝑏̅𝑑 + 𝑎𝑏𝑑)
= 𝑎̅𝑑̅+ad
3. Thiết kế mạch.
a. Mạch OR_AND
𝑥(𝑎, 𝑏, 𝑐, 𝑑) = 𝑎 + 𝑏𝑑 + 𝑏𝑐
𝑦(𝑥, 𝑏, 𝑐, 𝑑) = 𝑏𝑐̅𝑑̅ + 𝑎̅𝑏̅𝑑 + 𝑏̅𝑐
𝑧(𝑎, 𝑏, 𝑐, 𝑑) = 𝑐̅𝑑̅ + 𝑐𝑑 + 𝑎𝑑
𝑤(𝑎, 𝑏, 𝑐, 𝑑) = 𝑎̅𝑑̅ + 𝑎𝑑
Vẽ mạch:

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 5


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3


Chương trình C mô phỏng mạch OR_AND:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
/****************************************/
/******** MO PHONG MACH CHUYEN MA *******/
/*********** BCD 7421->MA DU 3 **********/
/************* MACH OR_AND ***********/
/****************************************/
void abcd(char i,char *x, char *a, char *b, char *c,char *d);
main()
{
char a,b,c,d,i,MA8421[4]={8,4,2,1},MA7421[4]={7,4,2,1};
printf("\nMACH CHUYEN MA BCD 7421 -> MA DU 3\t");
printf("\n\t MACH OR_AND\t");
printf("\n_________MA7421_____MADu3__");
printf("\n| SoTP |a|b|c|d| |x|y|z|w|\n");
for(i=0;i<=9;i++)
{
if(i<=3)
abcd(i,MA8421,&a,&b,&c,&d);
else
abcd(i,MA7421,&a,&b,&c,&d);
printf("|\%5d |%d|%d|%d|%d|
|%c|%c|%c|%c|\n",i,a,b,c,d,(a||(b&&d)||(b&&c))|0x30,(((b
&&!c&&!d)||(!a&&!b&&d)|(!b&&c)))|0x30,((!c&&!d)||(
c&&d)|(a&&d))|0x30,(!a&&!d||(a&&d))|0x30);
SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 6



Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

}
}
void abcd(char i,char *x, char *a, char *b, char *c,char *d)
{
char j=i;
*a=j>=*x?1:0; if(*a) j-=*x;
*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);
}
Kết quả:

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 7


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

b) Mạch 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


𝑥̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
𝑎 + 𝑏𝑑 + 𝑏𝑐 = ̅̅̅̅̅̅̅̅̅̅
𝑎̅ ̅̅̅
𝑏𝑑̅ ̅̅̅
𝑏𝑐
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑦̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
𝑏𝑐̅𝑑̅ + 𝑎̅𝑏̅𝑑 + 𝑏̅𝑐 = ̅̅̅̅̅
𝑏𝑐̅𝑑̅ ̅̅̅̅̅
𝑎̅𝑏̅𝑑 ̅̅̅
𝑏̅𝑐
̅̅̅̅̅̅̅̅̅̅̅
𝑧̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
𝑐 ̅𝑑̅ + 𝑐𝑑 + 𝑎𝑑 = 𝑐̅̅̅̅
𝑑̅ ̅̅̅
𝑐𝑑 ̅̅̅̅
𝑎𝑑
̅̅̅̅̅̅̅̅
̅̅̅̅
𝑤
̿ = ̿̿̿̿̿̿̿̿̿̿̿
𝑎̅𝑑̅ + 𝑎𝑑 = 𝑎
̅𝑑̅ ̅̅̅̅
𝑎𝑑
Vẽ mạch:

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 8



Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Chương trình C:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
/****************************************/
/******** MO PHONG MACH CHUYEN MA *******/
/*********** BCD 7421->MA DU 3 **********/
/************* MACH NAND_NAND ***********/
/****************************************/
void abcd(char i,char *x, char *a, char *b, char *c,char *d);
main()
{
char a,b,c,d,i,MA8421[4]={8,4,2,1},MA7421[4]={7,4,2,1};
printf("\n MACH CHUYEN MA BCD 7421 -> MA DU 3\t");
printf("\n\t MACH NAND_NAND\t");
printf("\n_________MA7421_____MADu3__");
printf("\n| SoTP |a|b|c|d| |x|y|z|w|\n");
for(i=0;i<=9;i++)
{
if(i<=3)
abcd(i,MA8421,&a,&b,&c,&d);
else
abcd(i,MA7421,&a,&b,&c,&d);
printf("|\%5d |%d|%d|%d|%d|

|%c|%c|%c|%c|\n",i,a,b,c,d,(!(!a&&!(b&&d)&&!(b&&c)))|0x
30,(!(!(b&&!c&&!d)&&!(!a&&!b&&d)&&!(!b&&c)))|0x30,
(!(!(!c&&!d)&&!(c&&d)&&!(a&&d)))|0x30,(!(!(!a&&!d)&
&!(a&&d)))|0x30);
}
}
void abcd(char i,char *x, char *a, char *b, char *c,char *d)
{
char j=i;
*a=j>=*x?1:0; if(*a) j-=*x;
*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);
}

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 9


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Kết quả:

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 10



Bài tập kĩ thuật số ứng dụng

IV.

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Thiết kế mạch dạng AND_OR, NOR_NOR, NOR_AND
1. Tối giản bằng bảng K.
-

Đánh dấu các ô toàn 0 ta có biểu thức tối giản của đảo hàm.

𝑥̅ = 𝑎̅𝑏̅ + 𝑎̅𝑐̅𝑑̅

𝑦̅ = 𝑏𝑐 + 𝑏𝑑 + 𝑎𝑑 + 𝑏̅𝑐̅𝑑̅

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 11


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

𝑧̅ = 𝑐𝑑̅ + 𝑎̅𝑐̅𝑑

𝑤
̅ = 𝑎̅𝑑 + 𝑎𝑑̅


SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 12


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

2. Tối giản bằng định lý.
a) 𝑥̅ =∑(0,1,2,3,4) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑̅ + 𝑎̅𝑏𝑐̅𝑑̅)+( 𝑎̅𝑏̅𝑐̅𝑑̅ + 𝑎̅𝑏̅𝑐̅𝑑 + 𝑎̅𝑏̅𝑐𝑑̅ + 𝑎̅𝑏̅𝑐𝑑)
= 𝑎̅𝑐̅𝑑̅ + 𝑎̅𝑏̅
b) 𝑦̅=∑(0,5,6,8,9) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑̅ + 𝑎𝑏̅𝑐̅𝑑̅)+(𝑎̅𝑏𝑐̅𝑑 + 𝑎̅𝑏𝑐𝑑 + 𝑎𝑏𝑐̅𝑑 + 𝑎𝑏𝑐𝑑)+(𝑎̅𝑏𝑐𝑑̅ + 𝑎̅𝑏𝑐𝑑 +
𝑎𝑏𝑐𝑑̅ + 𝑎𝑏𝑐𝑑)+(𝑎𝑏̅𝑐̅𝑑 + 𝑎𝑏̅𝑐𝑑 + 𝑎𝑏𝑐̅𝑑 + 𝑎𝑏𝑐𝑑)
= 𝑏̅𝑐̅𝑑̅ + 𝑏𝑑 + 𝑏𝑐 + 𝑎𝑑
c) 𝑧̅=∑(1,2,6,10,14) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑 + 𝑎̅𝑏𝑐̅𝑑)+(𝑎̅𝑏̅𝑐𝑑̅ + 𝑎̅𝑏𝑐𝑑̅ + 𝑎𝑏̅𝑐𝑑̅ + 𝑎𝑏𝑐𝑑̅)
= 𝑐𝑑̅ + 𝑎̅𝑐̅𝑑
d) 𝑧̅=∑(1,2,6,10,14) và điều kiện ràng buộc ∑(7,11,12,13,14,15) = 0
(𝑎̅𝑏̅𝑐̅𝑑 + 𝑎̅𝑏̅𝑐𝑑 + 𝑎̅𝑏𝑐̅𝑑 + 𝑎̅𝑏𝑐𝑑)+(𝑎𝑏̅𝑐̅𝑑̅ + 𝑎𝑏̅𝑐𝑑̅ + 𝑎𝑏𝑐̅𝑑̅ + 𝑎𝑏𝑐𝑑̅)
= 𝑎̅𝑑 + 𝑎𝑑̅
3. Thiết kế mạch
a) Thiết kế mạch
a. Mạch 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.
̅̅̅̅̅̅̅̅̅̅̅̅

𝑥̿ = 𝑎
̅𝑏̅ + 𝑎̅𝑐̅𝑑̅ = ̅̅̅
𝑎̅𝑏̅ ̅̅̅̅̅
𝑎̅𝑐̅𝑑̅ = (𝑎 + 𝑏)(𝑎 + 𝑐 + 𝑑)
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑦̿ = 𝑏𝑐
+ 𝑏𝑑 + 𝑎𝑑 + 𝑏̅𝑐̅𝑑̅ = ̅̅̅
𝑏𝑐 ̅̅̅
𝑏𝑑̅ ̅̅̅̅
𝑎𝑑 ̅̅̅̅̅
𝑏̅𝑐̅𝑑̅
= (𝑏̅ + 𝑐̅)(𝑏̅ + 𝑑̅ )(𝑎̅ + 𝑑̅ )(𝑏 + 𝑐 + 𝑑)
̅̅̅̅̅̅̅̅̅̅̅̅
̅ + 𝑎̅𝑐̅𝑑 = ̅̅̅
𝑧̿ = 𝑐𝑑
𝑐𝑑̅ ̅̅̅̅̅
𝑎̅𝑐̅𝑑 = (𝑐̅ + 𝑑)(𝑎 + 𝑐 + 𝑑̅ )
̅̅̅̅̅̅̅̅̅̅̅
̅̅̅̅
𝑤
̿ =𝑎
̅𝑑 + 𝑎𝑑̅ = 𝑎
̅𝑑 ̅̅̅̅
𝑎𝑑̅ = (𝑎 + 𝑑̅ )(𝑎̅ + 𝑑)

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 13



Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Vẽ mạch:

Chương trình C:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
/****************************************/
/******** MO PHONG MACH CHUYEN MA *******/
/*********** BCD 7421->MA DU 3 **********/
/************* MACH AND_OR ***********/
/****************************************/
void abcd(char i,char *x, char *a, char *b, char *c,char *d);
main()
{
char a,b,c,d,i,MA8421[4]={8,4,2,1},MA7421[4]={7,4,2,1};
SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 14


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

printf("\n MACH CHUYEN MA BCD 7421 -> MA DU 3\t");
printf("\n\t MACH AND_OR\t");

printf("\n_________MA7421_____MADu3__");
printf("\n| SoTP |a|b|c|d| |x|y|z|w|\n");
for(i=0;i<=9;i++)
{
if(i<=3)
abcd(i,MA8421,&a,&b,&c,&d);
else
abcd(i,MA7421,&a,&b,&c,&d);
printf("|\%5d |%d|%d|%d|%d|
|%c|%c|%c|%c|\n",i,a,b,c,d,((a||b)&&(a||c||d))|0x30,((!b||!c)&&(!
b||!d)&&(!a||!d)&&(b||c||d))|0x30,((!c||d)&&(a||c||!d))|0x30,((a||!d
)&&(!a||d))|0x30);
}
}
void abcd(char i,char *x, char *a, char *b, char *c,char *d)
{
char j=i;
*a=j>=*x?1:0; if(*a) j-=*x;
*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);
}

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 15


Bài tập kĩ thuật số ứng dụng


Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Kết quả:

b. Mạch 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.
̅̅̅̅̅̅̅̅̅̅̅̅
𝑥̿ = 𝑎
̅𝑏̅ + 𝑎̅𝑐̅𝑑̅
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑦̿ = 𝑏𝑐
+ 𝑏𝑑 + 𝑎𝑑 + 𝑏̅𝑐̅𝑑̅
̅̅̅̅̅̅̅̅̅̅̅̅
̅ + 𝑎̅𝑐̅𝑑
𝑧̿ = 𝑐𝑑
̅̅̅̅̅̅̅̅̅̅̅
𝑤
̿ =𝑎
̅𝑑 + 𝑎𝑑̅

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 16


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3


Vẽ mạch:

Chương trình C:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
/****************************************/
/******** MO PHONG MACH CHUYEN MA *******/
/*********** BCD 7421->MA DU 3 **********/
/************* MACH NOR_AND ***********/
/****************************************/
void abcd(char i,char *x, char *a, char *b, char *c,char *d);
main()
{

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 17


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

char a,b,c,d,i,MA8421[4]={8,4,2,1},MA7421[4]={7,4,2,1};
printf("\n MACH CHUYEN MA BCD 7421 -> MA DU 3\t");
printf("\n\t MACH NOR_AND\t");
printf("\n_________MA7421_____MADu3__");
printf("\n| SoTP |a|b|c|d| |x|y|z|w|\n");
for(i=0;i<=9;i++)

{
if(i<=3)
abcd(i,MA8421,&a,&b,&c,&d);
else
abcd(i,MA7421,&a,&b,&c,&d);
printf("|\%5d |%d|%d|%d|%d|
|%c|%c|%c|%c|\n",i,a,b,c,d,(!((!a&&!b)||(!a&&!c&&!d)))|0x30,(
!((b&&c)||(b&&d)||(a&&d)||(!b&&!c&&!d)))|0x30,(!((c&&!d)||
(!a&&!c&&d)))|0x30,(!((!a&&d)||(a&&!d)))|0x30);
}
}
void abcd(char i,char *x, char *a, char *b, char *c,char *d)
{
char j=i;
*a=j>=*x?1:0; if(*a) j-=*x;
*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);
}

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 18


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Kết quả:


c. Mạch 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.
̅̅̅̅̅̅̅
̅̅̅̅̅̅̅̅̅̅̅̅
𝑥̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
(𝑎 + 𝑏)(𝑎 + 𝑐 + 𝑑) = ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑎+𝑏+𝑎
+𝑐+𝑑
̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
̅ + 𝑐̅)(𝑏̅ + 𝑑̅ )(𝑎̅ + 𝑑̅ )(𝑏 + 𝑐 + 𝑑)
𝑦̿ = (𝑏
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
= ̅̅̅̅̅̅̅
𝑏̅ + 𝑐̅ + ̅̅̅̅̅̅̅
𝑏̅ + 𝑑̅ + ̅̅̅̅̅̅̅
𝑎̅ + 𝑑̅ + ̅̅̅̅̅̅̅̅̅̅̅̅
𝑏+𝑐+𝑑
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑧̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
(𝑐̅ + 𝑑)(𝑎 + 𝑐 + 𝑑̅ ) = ̅̅̅̅̅̅̅
𝑐̅ + 𝑑 + ̅̅̅̅̅̅̅̅̅̅̅̅
𝑎+𝑐+𝑑
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑤
̿ = ̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿
(𝑎 + 𝑑̅ )(𝑎̅ + 𝑑) = ̅̅̅̅̅̅̅
𝑎 + 𝑑̅ + ̅̅̅̅̅̅̅

𝑎̅ + 𝑑

SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 19


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

Vẽ mạch:

Chương trình C:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
/****************************************/
/******** MO PHONG MACH CHUYEN MA *******/
/*********** BCD 7421->MA DU 3 **********/
/************* MACH NOR_NOR ***********/
/****************************************/
void abcd(char i,char *x, char *a, char *b, char *c,char *d);
main()
{
char a,b,c,d,i,MA8421[4]={8,4,2,1},MA7421[4]={7,4,2,1};
printf("\n MACH CHUYEN MA BCD 7421 -> MA DU 3\t");
printf("\n\t MACH NOR_NOR\t");
printf("\n_________MA7421_____MADu3__");
printf("\n| SoTP |a|b|c|d| |x|y|z|w|\n");

for(i=0;i<=9;i++)
{
if(i<=3)
SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 20


Bài tập kĩ thuật số ứng dụng

Thiết kế mạch chuyển mã BCD 7421 sang Dư 3

abcd(i,MA8421,&a,&b,&c,&d);
else
abcd(i,MA7421,&a,&b,&c,&d);
printf("|\%5d |%d|%d|%d|%d|
|%c|%c|%c|%c|\n",i,a,b,c,d,!!(!(!(a||b)||!(a||c||d)))|0x30,!!(!(!(!b||!c)||!(
!b||!d)||!(!a||!d)||!(b||c||d)))|0x30,!!(!(!(!c||d)||!(a||c||!d)))|0x30,!!(!(!(a||
!d)||!(!a||d)))|0x30);
}
}
void abcd(char i,char *x, char *a, char *b, char *c,char *d)
{
char j=i;
*a=j>=*x?1:0; if(*a) j-=*x;
*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);
}
Kết quả:


SVTH: HỒ TÁ QUÝ - LỚP 13T1

TRANG 21



×