Giao Trinh Ky Thuat So

  • Uploaded by: Tran Van Thien
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Giao Trinh Ky Thuat So as PDF for free.

More details

  • Words: 71,977
  • Pages: 271
BOÄ GIAÙO DUÏC & ÑAØO TAÏO TRÖÔØNG ÑAÏI HOÏC KYÕ THUAÄT COÂNG NGHEÄ THAØNH PHOÁ HOÀ CHÍ MINH

BAØI GIAÛNG

KYÕ THUAÄT SOÁ Ths. NGUYEÃN TROÏNG HAÛI

LÖU HAØNH NOÄI BOÄ 05/2006

MUÏC LUÏC TOÅNG QUAN .................................................................................................... Trang 1 CHÖÔNG 1. HEÄ THOÁNG SOÁ ÑEÁM ........................................................................... 4 1.1. Cô soá – chuyeån ñoåi cô soá..................................................................................4 1.2. Caùc boä maõ hoùa soá heä möôøi thoâng duïng ..........................................................14 CHÖÔNG 2. ÑAÏI SOÁ BOOLEAN VAØ CAÙC COÅNG LOGIC .................................. 24 2.1. Khaùi nieäm veà logic hai traïng thaùi ...................................................................24 2.2. Baûng söï thaät ....................................................................................................24 2.3. Caùc pheùp toaùn cô baûn .....................................................................................25 2.4. Moâ taû caùc maïch logic theo phöông phaùp ñaïi soá .............................................25 2.5. Thöïc hieän caùc maïch logic töø bieåu thöùc Boolean.............................................25 2.6. Coång NOR vaø NAND .....................................................................................26 2.7. Pheùp toaùn XOR vaø pheùp toaùn töông ñöông ....................................................27 2.8. Caùc ñònh lyù cô baûn cuûa ñaïi soá Boolean...........................................................27 2.9. Logic döông vaø aâm .........................................................................................31 2.10. Caùc haøm cô baûn vaø phöông phaùp bieåu dieãn ..................................................23 2.11. Toái thieåu haøm logic baèng bìa K ....................................................................38 CHÖÔNG 3. MAÏCH LOGIC TOÅ HÔÏP ..................................................................... 45 3.1. Giôùi thieäu ........................................................................................................45 3.2. Thieát keá maïch logic toå hôïp .............................................................................45 3.3. Kyõ thuaät cöïc tieåu Quine-Mc Cluskey .............................................................47 3.4. Thieát keá maïch khoâng söû duïng baûng söï thaät ....................................................49 3.5. Maïch giaûi maõ ..................................................................................................53 3.6. Maïch maõ hoùa ..................................................................................................59 3.7. Boä choïn keânh..................................................................................................62 3.8. Boä phaân keânh..................................................................................................65 3.9. Maïch soá hoïc ....................................................................................................67 3.10. Maïch chuyeån maõ .........................................................................................69

CHÖÔNG 4. HEÄ TUAÀN TÖÏ....................................................................................... 74 4.1. Toång quan .......................................................................................................74 4.2. Caùc phaàn töû hai traïng thaùi beàn........................................................................75 4.3. FlipFlop...........................................................................................................76 4.4. FlipFlop duøng xung clock................................................................................79 4.5. Caùc öùng duïng cuûa FlipFlop.............................................................................83 4.6. Maùy traïng thaùi ..............................................................................................104 4.7. Löu ñoà maùy traïng thaùi ..................................................................................105 4.8. Boä nhôù baùn daãn .............................................................................................116 4.9. ROM – thieát keá heä thoáng soá duøng ROM ......................................................118 4.10. PLD toå hôïp ..................................................................................................127 4.11. PLD tuaàn töï.................................................................................................132 4.12. Caùc PLD tuaàn töï khaùc .................................................................................135 CHÖÔNG 5. CAÙC HOÏ VI MAÏCH SOÁ..................................................................... 146 5.1. Toång quan .....................................................................................................146 5.2. Caùc ñaëc tröng cuûa vi maïch soá .......................................................................146 5.3. Hoï RTL .........................................................................................................148 5.4. Hoï DTL.........................................................................................................148 5.5. Hoï TTL .........................................................................................................148 5.6. Caùc ñaëc ñieåm cuûa hoï TTL chuaån..................................................................149 5.7. Hoï TTL caûi tieán ............................................................................................150 5.8. Hoï TTL vôùi ngoõ ra cöïc thu hôû ......................................................................150 5.9. Hoï TTL ba traïng thaùi ....................................................................................151 5.10. Maïch logic MOS .........................................................................................151 5.11. Hoï CMOS ...................................................................................................151 5.12. Moät soá vi maïch thoâng duïng ........................................................................152 CHÖÔNG 6. GIAO TIEÁP TÖÔNG TÖÏ - SOÁ ........................................................... 153 6.1. Bieán ñoåi ADC ...............................................................................................153 6.2. Bieán ñoåi DAC ...............................................................................................160 PHUÏ LUÏC A. TRA CÖÙU CAÙC IC THOÂNG DUÏNG..............................................167 PHUÏ LUÏC B. COÂNG CUÏ CAD TRONG THIEÁT KEÁ SOÁ .....................................251

Bài Giảng Kỹ Thuật Số

Tổng quan

TOÅNG QUAN Caùc heä thoáng soá thöôøng söû duïng roäng raõi trong tính toaùn vaø xöû lyù data nhö trong caùc heä thoáng ñieàu khieån, trong thoâng tin, vaø trong ño löôøng vì caùc heä thoáng soá coù khaû naêng chính xaùc cao hôn caùc heä thoáng töông töï. Trong moät heä thoáng soá, caùc tín hieäu vaät lyù coù theå xem nhö caùc giaù trò rôøi raïc, trong khi ôû heä thoáng töông töï caùc ñaïi löôïng naøy thay ñoåi lieân tuïc. Ví dụ, ñieän aùp ngoõ ra cuûa moät heä thoáng soá coù theå ñöôïc bieán ñoåi sao cho ngoõ ra chæ

coù 2 giaù trò 0 vaø 1, trong khi ñieän aùp ngoõ ra töø heä thoáng töông töï coù giaù trò thay ñoåi trong khoaûng töø Vmin ñeán Vmax Do caùc heä thoáng soá laøm vieäc vôùi caùc ñaïi löôïng rôøi raïc, trong nhieàu tröôøng hôïp coù theå ñöôïc thieát keá vôùi keát quaû ngoõ vaøo vaø ngoõ ra moät caùch chính xaùc. Ví dụ, neáu nhaân 2 soá goàm 5 chöõ soá söû duïng boä nhaân digital thì keát quaû laø moät soá coù

10 chöõ soá chính xaùc caû 10. Noùi caùch khaùc, ngoõ ra cuûa boä nhaân analog coù theå coù moät khoaûng sai soá (%) tuøy thuoäc vaøo ñoä chính xaùc cuûa caùc thaønh phaàn thieát laäp neân boä nhaân. Thieát keá cuûa caùc heä thoáng soá coù theå chia ra 3 phaàn: Thiết kế hệ thống •

Thiết kế Logic

Thiết kế Mạch

Thiết kế hệ thống (system design) bao goàm vieäc chia nhoû moät heä thoáng lôùn thaønh caùc heä thoáng con vaø chæ roõ caùc ñaëc tính cuûa moãi heä thoáng con. Ví dụ, thieát

keá heä thoáng cuûa moät maùy tính soá bao goàm vieäc chæ ra soá vaø daïng cuûa caùc ñôn vò nhôù, ñôn vò toaùn hoïc, caùc thieát bò vaøo ra cuõng nhö vieäc keát noái vaø ñieàu khieån cuûa caùc heä thoáng con naøy v.v... •

Thiết kế logic (logic design) bao goàm vieäc xaùc ñònh laøm theá naøo ñeå keát noái caùc

khoái logic cô baûn ñeå hình thaønh haøm ñaëc bieät. •

Thiết kế mạch bao goàm vieäc chæ ra caùc keát noái beân trong cuûa caùc thaønh phaàn

nhö ñieän trôû, diode, transistor ñeå hình thaønh moät coång, flipflop hoaëc caùc khoái logic khaùc. Haàu heát caùc thieát keá maïch hieän taïi ñöôïc thöïc hieän döôùi daïng maïch tích hôïp duøng coâng cuï thieát keá vôùi söï trôï giuùp cuûa maùy tính ñeå taïo caùc keát noái trong giöõa caùc thaønh phaàn treân moät chip silicon. Nhieàu heä thoáng con coù daïng chuyeån maïch nhö sau: Inputs

X1 X2

Switching Network

Xm

Z1 Z2 Zn

Trang 1

Outputs

Bài Giảng Kỹ Thuật Số

Tổng quan

Moät maïng chuyeån maïch coù moät hay nhieàu ngoõ vaøo vaø moät hay nhieàu ngoõ ra, 2 loaïi switching network thoâng thöôøng laø: •

Mạch tổ hợp, trong ñoù caùc tín hieäu ngoõ ra chæ leä thuoäc vaøo traïng thaùi ngoõ

vaøo hieän taïi (khoâng leä thuoäc vaøo giaù trò ngoõ vaøo tröôùc ñoù). •

Mạch tuần tự, caùc ngoõ ra seõ tuøy thuoäc caû giaù trò tröôùc ñoù vaø giaù trò hieän taïi

cuûa ngoõ vaøo. Noùi caùch khaùc, ñeå xaùc ñònh ngoõ ra cuûa maïch tuaàn töï, moät chuoãi caùc ngoõ vaøo phaûi ñöôïc xaùc ñònh. Maïch tuaàn töï ñöôïc goïi laø maïch coù nhôù vì noù phaûi nhôù moät soá traïng thaùi tröôùc ñoù cuûa ngoõ vaøo, trong khi maïch toå hôïp thì khoâng coù nhôù. Toång quaùt, maïch tuaàn töï laø keát hôïp cuûa moät maïch toå hôïp vôùi caùc phaàn töû nhôù. Caùc khoái cô baûn söû duïng trong caùc maïch toå hôïp laø caùc cổng logic. Khi thieát keá logic, phaûi xaùc ñònh laøm theá naøo keát noái caùc coång naøy ñeå bieán ñoåi caùc tín hieäu ngoõ vaøo thaønh caùc tín hieäu ngoõ ra mong muoán. Moái quan heä giöõa caùc tín hieäu ngoõ vaøo vaø ngoõ ra phaûi ñöôïc moâ taû toaùn hoïc, trong thieát keá soá goïi laø đại số Boolean. Các bước thiết kế một mạch tổ hợp



Thieát laäp moät baûng moâ taû moái quan heä giöõa ngoõ ra vaø toå hôïp ngoõ vaøo



Thieát laäp bieåu thöùc logic toaùn hoïc moâ taû caùc ngoõ ra nhö moät haøm cuûa caùc ngoõ vaøo.



Ruùt goïn bieåu thöùc logic moâ taû ngoõ ra duøng moät soá phöông phaùp thoâng duïng nhö bìa Karnaugh, Quine-McCluskey v.v...



Thöïc hieän maïch

Caùc phaàn töû nhôù cô baûn trong thieát keá maïch tuaàn töï laø caùc FlipFlop. Caùc flipflop coù theå ñöôïc keát noái vôùi caùc coång ñeå hình thaønh moät maïch tuaàn töï. Các bước thiết kế một mạch tuần tự



Thieát laäp moät baûng moâ taû moái quan heä giöõa ngoõ ra hieän taïi vaø ngoõ ra keá tieáp.



Thieát laäp bieåu thöùc logic toaùn hoïc moâ taû caùc ngoõ vaøo cuûa flipflop nhö moät haøm cuûa caùc ngoõ ra.



Ruùt goïn bieåu thöùc logic moâ taû ngoõ vaøo duøng moät soá phöông phaùp thoâng duïng nhö bìa Karnaugh, Quine-McCluskey v.v...



Thöïc hieän maïch

Phaân tích moät caùch toång quaùt veà caùc maïch tuaàn töï thöôøng duøng caùc giản đồ thời gian, máy trạng thái và graph. Phần tử chuyển mạch duøng trong caùc heä thoáng soá thöôøng laø caùc phaàn töû 2 traïng thaùi, ngoõ ra chæ coù 2 giaù trò rôøi raïc khaùc nhau. Ví dụ relay, diode, transistor... Hai

traïng thaùi cuûa relay laø ñoùng vaø môû tuøy thuoäc vaøo nguoàn cung caáp cho cuoän daây. Trang 2

Bài Giảng Kỹ Thuật Số

Tổng quan

Hai traïng thaùi cuûa diode laø traïng thaùi daãn vaø khoâng daãn. Hai traïng thaùi cuûa transistor laø baõo hoøa vaø taét, vì vaäy thöôøng duøng caùc soá nhò phaân trong caùc heä thoáng soá. Baát cöù caùc thieát keá logic soá naøo cuõng coù theå ñöôïc thöïc hieän nhôø PLD (Programmable Logic Design). PLD laø teân goïi toång quaùt cuûa moät IC soá maø coù theå laäp trình ñöôïc ñeå thöïc hieän caùc haøm logic khaùc nhau vaø laø moät chip chöùa caùc caáu truùc maïch coù qui luaät cho pheùp ngöôøi thieát keá taïo caùc öùng duïng cuï theå Quá trình thiết kế PLD như sau

Ý tưởng

Trình soạn thảo mạch

Trình soạn thảo văn bản

Trình biên dịch và mô phỏng

Kit nạp IC

Moät soá coâng cuï phaàn meàm hoã trôï trong thieát keá soá: MAX+PLUS II, ABEL, SYNARYO... Moät soá ngoân ngöõ moâ taû phaàn cöùng: ABEL, VHDL, AHDL,...

Trang 3

Bài Giảng Kỹ Thuật Số

Chương 1

CHƯƠNG 1. HỆ THỐNG SỐ ĐẾM 1.1.

CƠ SỐ - CHUYỂN ĐỔI CƠ SỐ

1.1.1. Khái niệm Baát cöù moät soá nguyeân döông R (R>1) ñeàu coù theå ñöôïc choïn laøm cô soá cho moät heä thoáng soá. Neáu heä thoáng coù cô soá R thì caùc soá töø 0 ñeán (R-1) ñöôïc söû duïng. Ví duï: neáu R=8 thì caùc chöõ soá caàn thieát laø 0,1,2,3,4,5,6,7. Caùc heä thoáng cô soá thoâng duïng trong kyõ thuaät soá: •

Thaäp phaân (cô soá 10).



Nhò phaân (cô soá 2).



Baùt phaân (cô soá 8).



Thaäp luïc phaân (cô soá 16).

Một hệ thống với cơ số R được biểu diễn dưới dạng (…a3a2a1a0 a-1a-2a-3…)R Phần nguyên

Phần thập phân

Khai trieån theo haøm muõ cuûa R. N =(a3a2a1a0a-1a-2a-3)R = a3.R3 + a2.R2 + a1.R1 + a0.R0 + a-1.R-1 + a-2.R-2 + a-3.R-3 Vôùi caùc cô soá lôùn hôn 10 thì caàn phaûi theâm caùc kyù hieäu ñeå bieåu hieän caùc soá lôùn hôn 10. Ví duï heä thaäp luïc phaân (hex) coù cô soá 16 thì A bieåu thò 10, B bieåu thò 11,…, F bieåu thò 15. Đổi giữa các cơ số Phần nguyên và phần thập phân được đổi một cách riêng biệt Phần nguyên được đổi bằng cách sử dụng phép chia lặp cho cơ số mới và sử dụng chuỗi các số dư phát sinh để tạo ra số mới. Phép tính số học được thực hiện trên các số hạng của cơ số cũ Phần thập phân được đổi bằng cách nhân lặp lại cho cơ số mới, sử dụng các số nguyên được tạo ra để biểu thị phân số được chuyển đổi, phép tính số học được thực hiện trên các cơ số cũ

GV: Nguyễn Trọng Hải

Trang 4

Bài Giảng Kỹ Thuật Số

Chương 1

Ví dụ: Biến đổi phần nguyên trong hệ cơ số 10 sang hệ cơ số R N = (anan-1…a2a1a0)R = an.Rn + an-1.Rn-1 + … + a2.R2 + a1.R1 + a0 Neáu chia N cho R, nhaän ñöôïc soá dö laø a0 a N = an.Rn-1 + an-1.Rn-2 + … + a2.R1 + a1 + 0 = Q1 + soá dö a0 R R

Chia Q1 cho R Q1 a = an.Rn-2 + an-1.Rn-3 + … + a3.R1 + a2 + 1 = Q2 + soá dö a1 R R

Quaù trình treân ñöôïc thöïc hieän tieáp tuïc cho ñeán khi tìm ñöôïc taát caû caùc heä soá an Ví dụ: Biến đổi phần thập phân của hệ cơ số 10 sang hệ cơ số R F = (a-1a-2a-3…a-m)R = a-1.R-1 + a-2.R-2 + a-3.R-3 +… + a-m.R-m Nhaân F vôùi R FR = a-1 + a-2.R-1 + a-3.R-2 +… + a-m.R-m+1 = a-1 + F1 Vôùi a-1 laø phaàn nguyeân, F1 laø phaàn leû cuûa pheùp nhaân Tieáp tuïc nhaân R vôùi F1 F1.R = a-2 + a-3.R-1 + a-4.R-2 + … + a-m.R-m+2 = a-2 + F2 Tieáp tuïc quaù trình cho ñeán khi xaùc ñònh heát caùc heä soá a-m Biến đổi giữa 2 cơ số không phải là cơ số 10 có thể thực hiện dễ dàng bằng cách đầu tiên biến đổi sang cơ số 10 rồi biến đổi tiếp từ cơ số 10 sang cơ số mới. 1.1.2. Hệ thập phân (hệ cơ số 10) Heä thaäp phaân ñöôïc keát hôïp bôûi 10 chöõ soá: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Moät chöõ soá trong heä thaäp phaân ñöôïc bieåu dieãn theo caùc soá muõ cuûa 10. Troïng soá

103 102 101 100

5 MSD

3

4

6

10-1 10-2

,

Ñieåm thaäp phaân

7 2 LSD

Soá mang troïng soá lôùn nhaát goïi laø MSD (most significant digit) Soá mang troïng soá nhoû nhaát goïi laø LSD (least significant digit) Ví dụ: Soá 5346,72 bieåu dieãn nhö sau: 5346,72 = 5.103 + 3.102 + 4.10 + 6 + 7.10-1 + 2.10-2

GV: Nguyễn Trọng Hải

Trang 5

Bài Giảng Kỹ Thuật Số •

Chương 1

Ñeám trong heä thaäp phaân: 0 1 2 3 4 5 6 7 8 9

10 11 12 13 14

100 101 102 103 104 105 106 107 108 109

99

Toång quaùt vôùi N chöõ soá coù theå ñeám ñöôïc 10N soá khaùc nhau, bao goàm caû soá 0. Soá thaäp phaân lôùn nhaát laø 10N – 1. 1.1.3. Hệ nhị phân (hệ cơ số 2) Heä nhò phaân duøng hai chöõ soá 0, 1. Moät soá trong heä nhò phaân ñöôïc bieåu dieãn theo soá muõ cuûa 2. Troïng soá

23

22 21 20 2-1 2-2 2-3

1 0 MSB

1 1 1 0 1 Ñieåm nhò phaân

LSB

Moät chöõ soá nhò phaân goïi laø bit. Chuoãi 4 bit nhò phaân goïi laø nibble. Chuoãi 8 bit goïi laø byte. Chuoãi 16 bit goïi laø word. Chuoãi 32 bit goïi laø double word. Chöõ soá nhò phaân beân phaûi nhaát cuûa chuoãi bit goïi laø bit coù yù nghóa nhoû nhaát (least significant bit – LSB) Chöõ soá nhò phaân beân traùi nhaát cuûa chuoãi bit goïi laø bit coù yù nghóa lôùn nhaát (most significant bit – MSB). Thöôøng duøng chöõ B cuoái chuoãi bit ñeå xaùc ñònh ñoù laø soá nhò phaân. Ví dụ: Soá 1011,101B bieåu dieãn giaù trò soá: 1011,101B = 1.23 + 0.22 + 1.21 +1.20 + 1.2-1 + 0.2-2 + 1.2-3

GV: Nguyễn Trọng Hải

Trang 6

Bài Giảng Kỹ Thuật Số •

Chương 1

Ñeám trong heä nhò phaân Xeùt boä ñeám 4 bit, baét ñaàu vôùi taát caû caùc bit = 0 Troïng soá

23 = 8

22 = 4

21 = 2

20 = 1

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Cuõng nhö trong heä thaäp phaân, neáu duøng N bit seõ ñeám ñöôïc 2N laàn. •

Chuyeån soá nhò phaân thaønh soá thaäp phaân: Phương pháp: Coäng troïng soá caùc bit 1 Ví dụ: 1011,11B = 1.23 + 0.22 + 1.21 + 1 + 1.2-1 + 1.2-2 = 11,75



Chuyeån soá thaäp phaân thaønh soá nhò phaân: Phương pháp: Phaàn nguyeân: Chia 2, nhôù laïi soá dö Phaàn thaäp phaân: Nhaân 2, nhôù laïi phaàn nguyeân Ví dụ: Chuyeån (25)10 ra soá nhò phaân

25 = 12 2 12 =6 2 6 =3 2 3 =1 2 1 =0 2

+ soá dö 1 + soá dö 0 + soá dö 0 + soá dö 1 + soá dö 1 MSB 25 =

GV: Nguyễn Trọng Hải

LSB 1

Trang 7

1

0

0

1

Bài Giảng Kỹ Thuật Số

Chương 1

Ví dụ: Chuyeån (0,625)10 thaønh soá nhò phaân 0,625 × 2 = 1,25 0,25

× 2 = 0,5

0,5

× 2 = 1,0

0,625 = 0,101B 1.1.4. Các phép toán số học trên số nhị phân Caùc pheùp toaøn soá hoïc treân soá nhò phaân chuû yeáu vaãn gioáng caùc pheùp toaùn treân soá thaäp phaân, ngoaïi tröø pheùp coäng vaø pheùp nhaân thì ñôn giaûn hôn. Baûng pheùp coäng cho soá nhò phaân 0+0=0 0+1=1 1+0=1 1+1=0

nhôù 1 cho soá haïng keá tieáp

Ví dụ: coäng 1310 vôùi 1110 döôùi daïng nhò phaân 1111 ← caùc soá nhôù 1310 = 1101 1110 = 1011 11000 =2410 Baûng pheùp tröø cho soá nhò phaân 0-0=0 0-1=1

möôïn 1 töø soá haïng keá tieáp

1-0=1 1-1=0 Möôïn1 töø 1 coät töông ñöông vôùi vieäc tröø 1 taïi coät ñoù Ví dụ: (a)

1 ← (möôïn 1 töø coät thöù 3) 11101 - 10011 1010

Baûng pheùp nhaân cho soá nhò phaân 0x0=0 0x1=0 1x0=0 GV: Nguyễn Trọng Hải

Trang 8

(b)

1111 ← (möôïn) 10000 11 1101

Bài Giảng Kỹ Thuật Số

Chương 1

1x1=1 Ví dụ: Nhaân 1310 vôùi 1110 ôû daïng nhò phaân 1101 1011 1101 1101 0000 1101 10001111 =14310 Ñoái vôùi maùy tính, pheùp nhaân ñöôïc thöïc hieän baèng phöông phaùp coäng vaø dòch traùi:

-

Thaønh phaàn ñaàu tieân cuûa toång seõ chính laø soá bò nhaân neáu nhö LSB cuûa soá nhaân laø 1. Ngöôïc laïi, LSB cuûa soá nhaân baèng 0 thì thaønh phaàn naøy baèng 0.

-

Moãi thaønh phaàn thöù i keá tieáp seõ ñöôïc tính töông töï vôùi ñieàu kieän laø phaûi dòch traùi soá bò nhaân i bit.

-

Keát quaû caàn tìm chính laø toång caùc thaønh phaàn noùi treân.

Pheùp chia cho soá nhò phaân Pheùp chia caùc soá nhò phaân cuõng töông töï nhö ñoái vôùi caùc soá thaäp phaân. Ví dụ: 30/6

11110 110 011 000 110 110 0

110 101

Töông töï nhö ñoái vôùi pheùp nhaân, ta coù theå duøng pheùp tröø vaø pheùp dòch phaûi cho ñeán khi khoâng theå thöïc hieän pheùp tröø ñöôïc nöõa. 1.1.5. Số có dấu - không dấu Heä thoáng soá ñöôïc chia laøm 2 loaïi: khoâng daáu vaø coù daáu. Trong heä thoáng coù daáu: ñeå bieåu thò soá nhò phaân coù daáu thöôøng söû duïng bit MSB ñeå chæ daáu: bit 0 chæ soá döông, bit 1 chæ soá aâm, caùc bit coøn laïi ñeå chæ ñoä lôùn Nhö vaäy, neáu ta duøng 8 bit ñeå bieåu dieãn thì seõ thu ñöôïc 256 toå hôïp öùng vôùi caùc giaù trò 0..255 (soá khoâng daáu) hay –127.. –0 +0 … +127 (soá coù daáu). Tuy nhieân, khoâng ñôn giaûn laø cöù thay ñoåi bit MSB baèng 1 ñeå bieåu dieãn giaù trò aâm, ví duï nhö 01000001 (+65) thaønh 11000001 (-65), caùc pheùp tính soá hoïc seõ khoâng coøn ñuùng. Giaù trò aâm ñöôïc moâ taû döôùi daïng soá buø 2. GV: Nguyễn Trọng Hải

Trang 9

Bài Giảng Kỹ Thuật Số

Chương 1

Soá buø 2 (2’s component) Soá buø 2 cuûa moät soá nhò phaân xaùc ñònh baèng caùch laáy ñaûo caùc bit roài coäng theâm 1. Ví dụ: Trong heä thoáng coù daáu 8bit Soá +65 bieåu dieãn laø: 0100 0001 Soá buø 2 cuûa +65 laø: 1011 1110 + 1 = 1011 1111. (– 65) Nhöng neáu ñoåi ngöôïc 1011 1111 sang thaäp phaân seõ khoâng nhaän ñöôïc -65. Ñeå xaùc ñònh giaù trò tuyeät ñoái cuûa moät soá nhò phaân aâm, thöïc hieän laïi caùc böôùc treân -65 10111111 ñaûo bit 01000000 coäng 1 1 +65 01000001 Thöû laïi baèng caùch laáy toång cuûa +65 vaø –65, keát quaû phaûi baèng 0 +65 -65 00

01000001 +10111111 (1)00000000

Trong pheùp coäng vôùi soá buø 2, ta boû qua bit nhôù cuoái cuøng bôûi vì coù moät bit gaùn cho bit daáu neân keát quaû vaãn ñuùng Khi bieåu dieãn theo soá buø 2, neáu söû duïng 8 bit ta seõ coù caùc giaù trò soá thay ñoåi töø -128 ..127. Pheùp tröø thoâng qua soá buø 2 Ngoaøi caùch tröø nhö treân, ta cuõng coù theå thöïc hieän pheùp tröø thoâng qua soá buø 2 cuûa soá tröø: A-B=A+(-B) VD:

0110 1101 - 0011 0001 Soá buø 1

→ 1 Nhôù

0110 1101 + 1100 1111 0011 1100

1100 1110 + 1 = 1100 1111 (Soá buø 2) Keát quaû 0011 1100, Bit MSB = 0 cho bieát keát quaû laø soá döông. Xeùt khoaûng thay ñoåi sau +3 00000011 +2 00000010 +1 00000001 0 00000000 -1 11111111 -2 11111110 -3 11111101 GV: Nguyễn Trọng Hải

Trang 10

Bài Giảng Kỹ Thuật Số

Chương 1

Thaáy raèng caùc bit 0 ôû soá nhò phaân aâm bieåu thò giaù trò thaäp phaân cuûa noù: tính giaù trò cuûa caùc bit 0 theo vò trí gioáng nhö vôùi bit 1, coäng caùc giaù trò laïi vaø coäng 1. 1.1.6. Hệ bát phân (hệ cơ số 8) Heä baùt phaân ñöôïc keát hôïp bôûi 8 chöõ soá: 0, 1, 2, 3, 4, 5, 6, 7. Vò trí cuûa moãi chöõ soá coù troïng soá nhö sau: 84

83

82

81

80

8-1

8-2

8-3

8-4

8-5

Ñieåm baùt phaân

¾ Ñeám trong heä baùt phaân 0 10 1 11 2 12 3 4 5 6 66 7 67

70 71 72

277 300

Vôùi N chöõ soá baùt phaân, ta coù theå ñeám töø 0 ñeán 8N-1, 8N laàn ñeám khaùc nhau. ¾ Chuyeån soá baùt phaân sang soá thaäp phaân: Ví dụ: (24.6)8 = 2.81 + 4.80 + 6.8-1 =(20.75)10 ¾ Chuyeån soá thaäp phaân sang baùt phaân: Ví dụ: ñoåi (266)10 sang heä baùt phaân

266 = 33 8

+ soá dö 2

33 = 4 + soá dö 1 8 4 = 0 + soá dö 4 8 26610 =

4128

Ví dụ: Chuyeån 0,3125 thaønh soá baùt phaân 0,3125 × 8 = 2.5 0,5

× 8 = 4.0

( 0,3125 = 0,248 )

GV: Nguyễn Trọng Hải

Trang 11

Bài Giảng Kỹ Thuật Số

Chương 1

¾ Chuyeån soá baùt phaân sang soá nhò phaân: Phương pháp: Bieán ñoåi moãi chöõ soá baùt phaân sang 3 bit nhò phaân töông öùng Soá Octal Soá nhò phaân töông ñöông

0 000

1 001

2 010

3 011

4 100

5 101

6 110

7 111

Ví dụ: Bieán ñoåi (472)8 sang soá nhò phaân nhö sau: 4 ↓ 100

7 ↓ 111

2 ↓ 010

Vaäy (472)8 chuyeån sang nhò phaân laø 100111010B. ¾ Chuyeån soá nhò phaân sang soá baùt phaân. Phương pháp: nhoùm töøng 3 bit baét ñaàu taïi LSB, sau ñoù chuyeån moãi nhoùm naøy sang soá baùt phaân töông öùng (theo baûng chuyeån ñoåi ôû treân). Ví dụ: chuyeån 100111010B sang soá baùt phaân 100111010

↓ (4

↓ 7

↓ 2)8

Tröôøng hôïp caùc soá nhò phaân khoâng ñuû thaønh 1 nhoùm 3 bits, ta theâm 1 hoaëc 2 soá 0 veà beân traùi cuûa MSB. Ví dụ: chuyeån 11010110 sang soá baùt phaân 011010110

↓ (3

↓ 2

↓ 6)8

¾ Lôïi ích cuûa heä baùt phaân Vieäc deã daøng chuyeån töø heä baùt phaân sang nhò phaân vaø ngöôïc laïi laøm cho heä baùt phaân raát coù lôïi trong vieäc ruùt ngaén caùc soá nhò phaân lôùn. Trong maùy tính, caùc soá nhò phaân naøy khoâng phaûi luoân luoân bieåu hieän moät con soá maø thöôøng bieåu thò döôùi daïng maõ mang thoâng tin, ví duï: • döõ lieäu baèng soá thöïc • caùc soá töông öùng vôùi caùc vò trí (ñòa chæ) trong boä nhôù • maõ leänh • maõ bieåu thò soá hoïc vaø caùc ñaëc ñieåm khaùc • moät noùm caùc bit bieåu hieän traïng thaùi cuûa caùc thieát bò trong vaø ngoaøi maøy tính Khi giaûi quyeát moät löôïng lôùn caùc soá nhò phaân vôùi nhieàu bit, thöôøng duøng caùc soá döôùi daïng baùt phaân hôn laø nhò phaân ñeå taêng ñoä tieän lôïi, maëc duø caùc maïch soá vaø caùc heä thoáng soá laøm vieäc hoaøn toaøn treân soá nhò phaân. GV: Nguyễn Trọng Hải

Trang 12

Bài Giảng Kỹ Thuật Số

Chương 1

Ví dụ: Chuyeån soá 11710 sang heä baùt phaân roài chuyeån sang heä nhò phaân Giaûi

177 = 22 8

+ soá dö 1

22 =2 8

+ soá dö 6

2 =0 8

+ soá dö 2

Vaäy (177)10 =(261)8 = (10110001)2 Phöông phaùp chuyeån soá thaäp phaân thaønh soá nhò phaân naøy thöôøng nhanh hôn vieäc chuyeån thaúng töø thaäp phaân sang nhò phaân, ñaëc bieät ñoái vôùi caùc soá lôùn. Cuõng nhö vaäy ñoái vôùi vieäc chuyeån ngöôïc laïi töø nhò phaân sang thaäp phaân baèng caùch chuyeån sang soá baùt phaân 1.1.7. Hệ thập lục phân (hệ cơ số 16) Trong heä thoáng naøy, ta duøng caùc soá 0..9 vaø caùc kí töï A..F ñeå bieåu dieãn cho moät giaù trò soá (töông öùng vôùi 10 ñeán 15 trong heä 10). Thoâng thöôøng, ta duøng chöõ H ôû cuoái ñeå xaùc ñònh ñoù laø soá thaäp luïc phaân. Heä thaäp luïc phaân 0 1 2 3 4 5 6 7 8 9 A B C D E F

Heä thaäp phaân 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Heä nhò phaân 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

¾ Ñeám trong heä thaäp luïc phaân (hex) Khi ñeám trong heä thaäp luïc phaân moãi chöõ soá taêng töø 0 ñeán F sau ñoù veà 0 vaø chöõ soá coù troïng soá lôùn hôn keá tieáp seõ taêng leân 1.

GV: Nguyễn Trọng Hải

Trang 13

Bài Giảng Kỹ Thuật Số

Chương 1

0

10

20

9 A B C D E F

19 1A

FF 100

1E 1F

6FF 700

¾ Chuyeån soá hex sang thaäp phaân Ví dụ:

35616 = 3.162 + 5.161 + 6.160 = 85410

¾ Chuyeån soá hex sang nhò phaân Phương pháp: moãi chöõ soá hex ñöôïc bieán ñoåi thaønh soá nhò phaân 4 bit töông öùng. Ví dụ:

9F216 =

9 F 2 ↓ ↓ ↓ 1001 1111 0010

¾ Chuyeån ñoåi soá nhò phaân sang soá hex Phương pháp: caùc bit nhò phaân ñöôïc nhoùm vaøo nhoùm 4 bit töø LSB, moãi nhoùm 4 bit ñöôïc bieán ñoåi sang soá hex töông öùng. Neáu soá bit khoâng ñuû 4, thì coäng theâm bit 0 vaøo MSB. Ví dụ:

11101001102 = 0 0 1 1 1 0 1 0 0 1 1 0 = 3A616 3

A

6

Ví dụ: Chuyeån (378)10 sang soá hex roài chuyeån sang soá nhò phaân, nhaän xeùt Ví dụ: Chuyeån B2F16 sang baùt phaân 1.2.

CÁC BỘ MÃ HÓA SỐ HỆ MƯỜI THÔNG DỤNG Khi caùc soá, maãu töï hoaëc caùc töø words ñöôïc bieåu thò döôùi daïng moät nhoùm caùc kyù hieäu khaùc, ta noùi raèng chuùng ñöôïc maõ hoùa vaø nhoùm kyù töï ñoù ñöôïc goïi laø moät maõ. Moät trong nhöõng maõ thoâng duïng nhaát laø maõ Morse, chuùng bao goàm caùc chaám vaø gaïch ñeå bieåu hieän caùc maãu töï hay caùc chöõ caùi. Baát cöù soá thaäp phaân naøo cuõng coù theå ñöôïc moâ taû baèng soá nhò phaân töông öùng, moät nhoùm caùc soá nhò phaân 0 vaø 1 coù theå ñöôïc xem laø moät maõ cho soá thaäp phaân. Khi moät soá thaäp phaân ñöôïc moâ taû baèng soá nhò phaân töông öùng vôùi noù, ngöôøi ta goïi laø maõ nhò phaân tröïc tieáp (straight binary code)

GV: Nguyễn Trọng Hải

Trang 14

Bài Giảng Kỹ Thuật Số

Chương 1

Taát caû caùc heä thoáng soá duøng moät soá daïng caùc soá nhò phaân cho vieäc thöïc thi beân trong, nhöng caùc töø beân ngoaøi thì thöôøng laø thaäp phaân, nghóa laø coù moät söï bieán ñoåi thöôøng xuyeân töø thaäp phaân sang nhò phaân, söï bieán ñoåi töø thaäp phaân sang nhò phaân coù theå chieám moät khoaûng thôøi gian laâu vaø phöùc taïp ñoái vôùi moät soá lôùn. Vì lyù do ñoù, vieäc maõ hoùa caùc soá thaäp phaân baèng caùch keát hôïp moät vaøi chöùc naêng cuûa caû heä thoáng thaäp phaân vaø nhò phaân ñöôïc söû duïng trong caùc tình huoáng. 1.2.1. Mã BCD (Binary-Coded-Decimal Code) Neáu moãi chöõ soá cuûa soá thaäp phaân ñöôïc moâ taû baèng soá nhò phaân töông öùng vôùi noù, keát quaû ta ñöôïc 1 maõ goïi laø maõ BCD, vì chöõ soá thaäp phaân lôùn nhaát laø 9, caàn 4 bit ñeå maõ hoùa. Caùc soá 8,4,2,1 ñöôïc goïi laø troïng soá cuûa maõ vaø ñöôïc goïi laø maõ BCD 8-4-2-1. Ñoâi khi troïng soá 8-4-2-1 toû ra khoâng thuaän tieän trong tính toaùn, moät soá troïng soá khaùc cuõng ñöôïc söû duïng nhö 2-4-2-1, 5-4-2-1, 7-4-2-1…

Thập phân 0 1 2 3 4 5 6 7 8 9

8 0 0 0 0 0 0 0 0 1 1

Trọng số 4 2 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0

1 0 1 0 1 0 1 0 1 0 1

7 0 0 0 0 0 0 0 1 1 1

MÃ BCD Trọng số Trọng số 4 2 1 2 4 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1

1 0 1 0 1 0 0 0 1 0 1

5 0 0 0 0 0 1 1 1 1 1

Trọng số 1 2 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 1

1 0 1 0 1 0 0 1 0 1 1

Löu yù raèng caùc loaïi maõ 5-1-2-1 vaø 2-4-2-1 laø khoâng duy nhaát trong khi maõ 8-42-1 vaø 7-4-2-1 laïi duy nhaát Ví dụ: Soá thaäp phaân 874 chuyeån sang töông ñöông nhò phaân nhö sau:

hoaëc

8 ↓ 1000 1011 1011

7 ↓ 0111 1010 1101

3 ↓ 0011 0011 0110

(thaäp phaân) (BCD 8-4-2-1) (BCD 5-1-2-1) (BCD 5-1-2-1)

Moät laàn nöõa, moãi chöõ soá thaäp phaân ñöôïc bieán ñoåi tröïc tieáp sang soá nhò phaân töông öùng, löu yù raèng 4 bit luoân ñöôïc duøng cho moãi chöõ soá thaäp phaân

GV: Nguyễn Trọng Hải

Trang 15

Bài Giảng Kỹ Thuật Số

Chương 1

Trong baøi giaûng naøy laáy maõ BCD 8-4-2-1 laøm ví du. Maõ BCD bieåu thò moãi chöõ soá cuûa soá thaäp phaân baèng soá nhò phaân 4 bit, söû duïng caùc soá nhò phaân 4 bit töø 0000 ñeán 1001, khoâng söû duïng caùc soá 1010, 1011, 1100, 1101, 1110 vaø 1111. Ví dụ: Bieán ñoåi 0110100000111001 (BCD 8-4-2-1) sang giaù trò thaäp phaân Giải Chia soá BCD thaønh caùc nhoùm 4 bit vaø bieán ñoåi sang thaäp phaân 0110

1000 0011 1001 = 6839

So saùnh BCD vaø nhò phaân. Moät ñieàu quan troïng laø maõ BCD khoâng gioáng nhö maõ nhò phaân tröïc tieáp. Maõ nhò phaân tröïc tieáp bieán ñoåi soá thaäp phaân sang nhò phaân trong khi maõ BCD bieán ñoåi moãi chöõ soá trong soá thaäp phaân sang nhò phaân. Xeùt ví duï bieán ñoåi 137 sang maõ nhò phaân tröïc tieáp vaø sang BCD 8-4-2-1 nhö sau: 13710 = 100010012

(nhò phaân)

13710 = 0001 0011 0111 (BCD 8-4-2-1) Maõ BCD caàn 12 bit trong khi maõ nhò phaân tröïc tieáp chæ caàn 8 bit ñeå bieåu thò soá 137. Maõ BCD caàn nhieàu bit hôn laø bôûi vì BCD khoâng duøng heát caùc khaû naêng cuûa caùc nhoùm 4 bit vaø vì vaäy coù phaàn naøo ñoù khoâng hieäu quaû. Öu ñieåm chính cuûa BCD laø deã daøng chuyeån sang thaäp phaân. Chæ phaûi nhôù caùc nhoùm maõ 4bit cho caùc soá thaäp phaân töø 0 ñeán 9. Söï deã daøng chuyeån ñoåi naøy ñaëc bieät quan troïng theo quan ñieåm veà phaàn cöùng vì trong moät heä thoáng soá, noù laø caùc maïch logic ñeå taïo neân söï chuyeån ñoåi sang vaø töø thaäp phaân 1.2.2. Các phép toán số học với mã BCD Cộng BCD Coäng hai soá BCD coù ñieåm khaùc so vôùi coäng hai soá nhò phaân. Khi toång cuûa moãi soá haïng BCD ≤ 9 thì toång ñoù laø keát quaû cuoái cuøng Ví dụ, 01010011 (53) 00100101 (25) 01111000 (78) Khi toång hai soá nhò phaân ≥ 9 thì toång phaûi ñöôïc coäng theâm 6 vaø nhôù 1 leân haøng BCD coù nghóa cao hôn Ví dụ, 0001 0111 (17) 0010 0101 (25) 0011 1100 Keát quaû ≥ 9 0110 (6) 0100 0010 (42) GV: Nguyễn Trọng Hải

Trang 16

Bài Giảng Kỹ Thuật Số

Chương 1

Trừ BCD Gioáng quy luaät tröø soá nhò phaân nhieàu bit, neáu soá bò tröø nhoû hôn soá tröø thì phaûi möôïn 1 ôû haøng coù nghóa lôùn hôn (gioáng tröø thaäp phaân) 0101 0101 (55) 0001 1000 (18)

0100 0001 0011



1111 1000 0111

Möôïn 1 (37)

Biểu diễn số BCD âm Gioáng heä nhò phaân, ñeå bieåu dieãn soá aâm trong heä nhò phaân thöôøng duøng soá buø 2, ñeå bieåu dieãn soá BCD aâm thöôøng duøng soá buø 10. Soá buø 10 baèng soá buø 9 coäng 1 Bit taän cuøng beân traùi laø bit daáu: 1 cho soá aâm vaø 0 cho soá döông Ví dụ, + 342 + - 342

0 342

Soá döông

1 657

Soá buø 9 cuûa 342

1 1 658

Soá buø 10 cuûa 342

1.2.3. Mã quá 3 (excess-3code) Maõ quaù 3 ñöôïc hình thaønh baèng caùch coäng theâm 3 ñôn vò vaøo maõ BCD 8421. Ví dụ: bieán ñoåi 48 sang maõ quaù 3 4 +3 7 ↓ 0111

8 +3 11 ↓ 1011

Coäng 3 cho moãi chöõ soá

Chuyeån sang maõ nhò phaân 4 bit

Baûng lieät keâ maõ BCD vaø maõ quaù 3 töông öùng vôùi caùc chöõ soá thaäp phaân. Thaäp phaân 0 1 2 3 4 5 6 7 8 9

GV: Nguyễn Trọng Hải

BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Trang 17

Maõ quaù 3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

Bài Giảng Kỹ Thuật Số

Chương 1

1.2.4. Mã Gray Maõ Gray naèm trong nhoùm maõ thay ñoåi cöïc tieåu minimun-change codes, ôû ñoù chæ 1 bit trong nhoùm maõ thay ñoåi ôû khi ñi töø böôùc naøy qua böôùc khaùc. Maõ Gray laø maõ khoâng coù troïng soá, nghóa laø moïi vò trí cuûa bit trong nhoùm maõ khoâng ñöôïc gaùn troïng soá naøo. Vì vaäy, maõ Gray khoâng phuø hôïp vôùi caùc bieåu thöùc soá hoïc nhöng phuø hôïp vôùi caùc thieát bò öùng duïng vaøo/ra & moät soá daïng bieán ñoåi analog - digital Baûng chuyeån ñoåi maõ Gray töø soá thaäp phaân (0 ñeán 15) vôùi maõ nhò phaân tröïc tieáp Thaäp phaân 0 1 2 3 4 5 6 7

Nhò phaân 0000 0001 0010 0011 0100 0101 0110 0111

Maõ Gray 0000 0001 0011 0010 0110 0111 0101 0100

Thaäp phaân 8 9 10 11 12 13 14 15

Nhò phaân 1000 1001 1010 1011 1100 1101 1110 1111

Maõ Gray 1100 1101 1111 1110 1010 1011 1001 1000

1.2.5. Mã Johnson Maõ naøy söû duïng naêm chöõ soá nhò phaân ñeå bieåu dieãn caùc chöõ soá heä möôøi. Phương pháp: Khi chuyeån sang soá tieáp theo maõ seõ thay chöõ soá 0 baèng chöõ soá 1, baét ñaàu töø phaùi sang traùi, cho ñeán khi ñaït 11111 thì seõ baét ñaàu thay theá daàn chöõ soá 1 baèng chöõ soá 0 vaø cuõng theo chieàu töø phaûi sang traùi

Hệ 10

Mã Johnson J4 J3 J2 J1 J0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 2 1 1 1 0 0 3 1 1 1 1 0 4 1 1 1 1 1 5 0 1 1 1 1 6 0 0 1 1 1 7 0 0 0 1 1 8 0 0 0 0 1 9 Ngoaøi ra coøn duøng caùc loaïi maõ coù chöõ soá lôùn hôn nhö 8 hoaëc 10 chöõ soá, nhöôïc ñieåm cuûa caùc loaïi maõ naøy laø ñoä daøi töø maõ lôùn neân chieám nhieàu thôøi gian trong keânh thoâng tin nhöng öu ñieåm laø coù theå phaùt hieän sai vaø trong nhieàu tröôøng hôïp coøn coù theå söûa sai, vì vaäy thöôøng goïi laø maõ choáng nhieãu (noäi dung naøy naèm trong lyù thuyeát thoâng tin)

GV: Nguyễn Trọng Hải

Trang 18

Bài Giảng Kỹ Thuật Số

Chương 1

1.2.6. Các mã Alphanumeric (mã theo chữ cái và con số) Ngoaøi caùc döõ lieäu soá, moät maùy tính phaûi coù khaû naêng xöû lyù caùc coâng tin khoâng soá. Noùi caùch khaùc, moät maùy tính phaûi nhaän ra caùc maõ bieåu thò caùc kyù töï cuûa chöõ caùi, caùc daáu chaám, vaø caùc kyù töï ñaëc bieät khaùc. Caùc maõ naøy ñöôïc goïi laø maõ alphanumeric. Moät maõ alphanumeric hoaøn taát bao goàm 26 chöõ caùi thöôøng, 26 chöõ caùi hoa, 10 chöõ soá, 7 chaám caâu, vaø töø 20 ñeán 40 kyù töï khaùc, nhö +, /, #, %, *,v.v…. Coù theå noùi raèng maõ alphanumeric bieåu thò taát caû caùc kyù töï khaùc nhau vaø caùc haøm tuøy thuoäc vaøo chuaån baøn phím cuûa maùy tính hay maùy ñaùnh chöõ Maõ ASCII. Maõ alphanumeric duøng roäng raõi hieän nay laø maõ ASCII (American Standard Code for Information Interchange), söû duïng haàu heát trong caùc maùy vi tính, trong caùc theá heä maùy tính lôùn (mainframe). Maõ ASCII laø moät maõ 7 bit vaø vì vaäy noù coù 27 = 128 nhoùm maõ. Ñieàu naøy thì ñuû ñeå bieåu thò taát caû caùc kyù töï baøn phím chuaån cuõng nhö caùc haøm ñieàu khieån nhö (RETURN) vaø (LINEFEED) Kyù töï A B C D E F G H I J K L M N O P Q R S T U V W X

ASCII 100 0001 100 0010 100 0011 100 0100 100 0101 100 0110 100 0111 100 1000 100 1001 100 1010 100 1011 100 1100 100 1101 100 1110 100 1111 101 0000 101 0001 101 0010 101 0011 101 0100 101 0101 101 0110 101 0111 101 1000

Octal 101 102 103 104 105 106 107 110 111 112 113 114 115 116 117 120 121 122 123 124 125 126 127 130

Hex 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58

Kyù töï Y Z 0 1 2 3 4 5 6 7 8 9 Blank . ( + $ * ) / = RETURN LINEFEED

ASCII 101 1001 101 1010 011 0000 011 0001 011 0010 011 0011 011 0100 011 0101 011 0110 011 0111 011 1000 011 1001 010 0000 010 1110 010 1000 010 1011 010 0100 010 1010 010 1001 010 1101 0101111 010 1100 011 1101 000 1101 0001010

Octal 131 132 060 061 062 063 064 065 066 067 070 071 040 056 050 053 044 052 051 055 057 054 075 015 012

Hex 59 5A 30 31 32 33 34 35 36 37 38 39 20 2E 28 2B 24 2A 29 2D 2F 2C 3D 0D 0A

Ví dụ: Thoâng ñieäp ñöôïc maõ hoùa trong ASCII nhö sau 1001000 Giải Keát quaû theo HEX laø 48

1000101

1001100

1010000

45

4C

50

Theo baûng ASCII, bieán ñoåi HEX sang kyù töï laø H E L P GV: Nguyễn Trọng Hải

Trang 19

Bài Giảng Kỹ Thuật Số

Chương 1

Maõ ASCII thöôøng duøng trong caùc boä truyeàn caùc thoâng tin alphanumeric giöõa moät maùy tính vaø caùc thieát bò vaøo ra nhö thieát bò video hay printer. Maùy tính cuõng söû duïng noù ñeå löu tröõ caùc thoâng tin nhö caùc daïng leänh. Ñeå coù theå bieåu dieãn theâm nhieàu kyù töï khaùc (kyù hieäu khoâng phaûi laø chöõ La Ting nhö α, β, χ, δ…) maõ ASCII ñöôïc theâm 1bit nöõa ñeå coù maõ ASCII 8bit dieãn taû ñöôïc 256 kyù töï, ñaây laø maõ ASCII môû roäng (Extended ASCII)

GV: Nguyễn Trọng Hải

Trang 20

Bài Giảng Kỹ Thuật Số

Chương 1

Bài tập chương 1 1.1. Đổi các số nhị phân sau sang số thập phân: a.

10110

b.

10001101

c.

100100001001

d.

1111010111

e.

10111111

1.2. Đổi các giá trị thập phân sau sang nhị phân: a.

37

b.

14

c.

189

d.

205

e.

2313

f.

511

1.3. Giá trị thập phân lớn nhất của số nhị phân 8 bit là bao nhiêu,16 bit là bao nhiêu 1.4. Đổi các số bát phân sang số thập phân tương ứng: a.

743

b.

36

c.

3777

d.

257

e.

1204

1.5. Đổi các số thập phân sau sang số bát phân: a.

59

b.

372

c.

919

d.

65,535

e.

255

1.6. Đổi các số bát phân ở 1.4 thành số nhị phân. 1.7. Đổi các số nhị phân ở 1.1 thành số bát phân. 1.8. Hãy liệt kê các số bát phân liên tục từ 1658 đến 2008. 1.9.Khi các số thập phân lớn, để đổi sang nhị phân, trước tiên ta đổi sang bát phân, sau đó đổi số bát phân thành số nhị phân. Hãy dùng cách này đổi số 231310 thành số nhị phân và so sánh với cách đổi dùng ở bài 1.2. 1.10. Đổi các giá trị hex sau thành số thập phân: a.

92

GV: Nguyễn Trọng Hải

Trang 21

Bài Giảng Kỹ Thuật Số b.

1A6

c.

37FD

e.

2C0

f.

7FF

Chương 1

1.11. Đổi các giá trị thập phân sau sang Hex: a.

75

b.

314

c.

2048

d.

25,619

e.

4095

1.12. Đổi các giá trị nhị phân ở bài 1.1sang thập lục phân. 1.13. Đổi các giá trị Hex ở bài 1.10 sang nhị phân. 1.14.Trong máy vi tính, địa chỉ các vị trí ô nhớ được biểu diễn ở dạng thập lục phân. Địa chỉ này là những số liên tục mà nó nhận dạng mỗi mạch nhớ a. Một máy tính cụ thể có thể chứa 1 số 8 bit trong mỗi vị trí nhớ. Nếu các địa chỉ ô nhớ nằm trong khoảng từ 000016 đến FFFF16, có bao nhiêu vị trí nhớ? b. Một bộ vi xử lý có 4096 vị trí nhớ thì khoảng địa chỉ Hex mà bộ vi xử lý này dùng là gì ?. 1.15. Hãy liệt kê những số hex trình tự từ 280 đến 2A0. 1.16. Hãy mã hóa các số thập phân sau thành số BCD: a.

47

b.

962

c.

187

d.

42,689.627

e.

1204

1.17. Cần bao nhiêu bit để thể hiện các số thập phân trong khoảng từ 0 đến 999 dùng mã nhị phân chuẩn, mã BCD? 1.18. Đổi những số BCD sau thành số thập phân: a.

10010110101010010

b.

000110000100

c.

0111011101110101

d.

010010010010

1.19. Hãy thể hiện phát biểu sau "X = 25/Y" bằng mã ASCII, có kèm theo một bit chẵn lẻ. 1.20. Hãy thêm bit chẵn lẻ vào mã ASCII ở bài 1.19 và đưa kết quả về số Hex. 1.21. Các nhóm mã dưới đây được truyền đi, hãy thêm bit chẵn lẻ cho mỗi nhóm: GV: Nguyễn Trọng Hải

Trang 22

Bài Giảng Kỹ Thuật Số a.

10110110

b.

00101000

c.

11110111

Chương 1

1.22. Hãy đổi số thập phân sau thành mã BCD, sau đó đổi sang số BCD âm: a.

74

b.

38

c.

165

d.

9201

1.23. Trong hệ thống số, số thập phân từ 000 đến 999 được thể hiện ở dạng mã BCD. Một bit chẵn lẻ lẻ cũng được đích kèm ở cuối mỗi nhóm mã. Hãy kiểm tra các nhóm mã bên dưới và giả sử rằng mỗi một mã được truyền từ vị trí này đến vị trí khác. Một vài nhóm có chứa lỗi. Giả sử không quá 2 lỗi trong mỗi nhóm. Hãy xác định nhóm mã nào có 1 lỗi đơn và nhóm mã nào có 1 lỗi kép: a.

100101011000

b.

0100011101100

c.

011110000011

d.

1000011000101

1.24. Thực hiện các sự chuyển đổi dưới đây. Trong số đó, có thể thử 1 cách tốt nhất trong nhiều cách đã khảo sát. a.

(1417)10 = (……………………….……..)2

b.

(-255)10 = (………………………………)2

c.

(1110101000100111)2 =(……………………………)10

e.

(2497)10 = (……………………………..)8

g.

(235)8 = (……………………………)10

i.

(7A9)16 = (…………………………….)10

k.

(1600,123)10 = (………………………………………)16

m.

(865)10 =( …………………………………….)BCD

n.

(100101000111)BCD = (……………………………….)10

1.25. Thể hiện giá trị thập phân 37 theo những cách sau: a.

Biến đổi thẳng nhị phân

b.

BCD

c.

ASCII

d.

Bát phân

e.

Hex

GV: Nguyễn Trọng Hải

Trang 23

Bài Giảng Kỹ Thuật Số

Chương 2

CHƯƠNG 2. ĐẠI SỐ BOOLEAN VÀ CÁC CỔNG LOGIC 2.1.

KHÁI NIỆM VỀ LOGIC HAI TRẠNG THÁI Pheùp toaùn cô baûn trong thieát keá logic caùc heä thoáng soá laø ñaïi soá Boolean. Ñaïi soá Boolean coù nhieàu öùng duïng khaùc nhau bao goàm lyù thuyeát taäp hôïp vaø logic toaùn, vì taát caû caùc phaàn töû chuyeån maïch veà cô baûn ñeàu laø caùc phaàn töû hai traïng thaùi (nhö diode, transistor), cho neân seõ taäp trung khaûo saùt tröôøng hôïp ñaïi soá Boolean vôùi söï thay ñoåi giaû söû chæ ôû 1 trong 2 giaù trò. Ñaïi soá Boolean söû duïng 2 giaù trò naøy xem nhö ñaïi soá veà chuyeån maïch. Phaàn naøy söû duïng caùc bieán Boolean nhö X hoaëc Y… ñeå bieåu dieãn ngoõ vaøo hoaëc ngoõ ra cuûa maïch chuyeån maïch, moãi bieán coù theå laáy 1 trong hai giaù trò. Kyù hieäu “0” vaø “1” ñöôïc duøng ñeå ñaïi dieän cho hai giaù trò khaùc nhau naøy. Vì vaäy, neáu X laø bieán chuyeån maïch hay bieán Boolean thì hoaëc X=0, hoaëc X=1 Maëc duø kyù hieäu “0” vaø “1” gioáng nhö soá nhò phaân, nhöng khoâng phaûi nhö vaäy. Ñaây chæ laø 2 kyù töï ñaïi dieän cho 2 giaù trò cuûa bieán chuyeån maïch vaø ñöôïc xem laø möùc logic, moät soá vò duï veà caùc hieän töôïng maø möùc logic ñaïi dieän nhö sau LOGIC 0 Sai Taét Möùc ñieän aùp thaáp Khoâng Môû maïch

LOGIC 1 Ñuùng Môû Möùc ñieän aùp cao Coù Ñoùng maïch

Vì chæ coù hai giaù trò, neân ñaïi soá Boolean töông ñoái deã daøng hôn so vôùi ñaïi soá thoâng thöôøng. ÔÛ ñaïi soá Boolean, khoâng coù phaân soá, thaäp phaân, caên baäc hai, caên baäc ba, logarit, soá aûo, v.v. Ñaïi soá Boolean chæ coù 3 pheùp toaùn cô baûn: coäng (OR), nhaân (AND) vaø laáy buø (NOT). 2.2.

BẢNG SỰ THẬT Baûng söï thaät (Truth Table) moâ taû caùc ñaùp öùng ngoõ ra cuûa maïch logic öùng vôùi caùc toå hôïp khaùc nhau taïi ngoõ vaøo. Ví dụ

A B

Maïng chuyeån maïch

GV: Nguyễn Trọng Hải

A X

B C

Maïng chuyeån maïch

A B X

C D

Trang 24

Maïng chuyeån maïch

X

Bài Giảng Kỹ Thuật Số

Chương 2

Caùc baûng söï thaät tieâu bieåu öùng vôùi caùc maïng chuyeån maïch treân nhö sau: Ngoõ vaøo Ngoõ ra ↓ ↓ ↓ A 0 0 1 1

B 0 1 0 1

X ? ? ? ?

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

X ? ? ? ? ? ? ? ?

B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

X ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

ÔÛ moãi baûng söï thaät, caùc toå hôïp möùc logic 0 vaø 1 ñoái vôùi ngoõ vaøo (A, B, C, D) ñöôïc theå hieän beân traùi, möùc logic ôû ngoõ ra X ñöôïc theå hieän beân phaûi Löu yù, neáu coù 2 ngoõ vaøo thì coù 4 khaû naêng xaûy ra, töông töï 8 khaû naêng cho 3 ngoõ vaøo vaø 16 khaû naêng cho 4 ngoõ vaøo. Seõ coù 2N khaû naêng xaûy ra ñoái vôùi N ngoõ vaøo. Taát caû caùc toå hôïp ngoõ vaøo ñöôïc theå hieän theo chuoãi ñeám nhò phaân. 2.3.

CÁC PHÉP TOÁN CƠ BẢN

2.3.1. Phép toán OR và cổng OR Goïi A vaø B laø 2 bieán logic ñoäc laäp. Khi A vaø B keát hôïp qua pheùp toaùn OR, keát quaû x ñöôïc moâ taû nhö sau: X=A+B Trong bieåu thöùc naøy, daáu “+” khoâng coù nghóa laø pheùp coäng thuaàn tuùy. Noù laø pheùp toaùn OR, keát quaû cuûa pheùp toaùn OR ñöôïc cho trong baûng söï thaät sau: A 0 0 1 1

B 0 1 0 1

X=A+B 0 1 1 1

A

Y=A+B

B Coång OR

Keát luaän •

Pheùp toaùn OR seõ coù keát quaû baèng 1 neáu moät hay nhieàu bieán ngoõ vaøo baèng 1



Coång OR chæ coù moät ngoõ ra vaø coù theå coù nhieàu hôn hai ngoõ vaøo

GV: Nguyễn Trọng Hải

Trang 25

Bài Giảng Kỹ Thuật Số

Chương 2 A 0 0 0 0 1 1 1 1

Kyù hieäu vaø baûng söï thaät cho coång OR 3 ngoõ vaøo A B C

X=A+B+C

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

X=A+B+C 0 1 1 1 1 1 1 1

Ví dụ Xaùc ñònh daïng soùng ngoõ ra coång OR khi ngoõ vaøo A, B thay ñoåi theo giaûn ñoà sau: 1

A 0

A

Out

B B 2.3.2. Phép toán AND và cổng AND

Neáu hai bieán logic A vaø B ñöôïc keát hôïp qua pheùp AND, keát quaû laø: X= A.B Baûng söï thaät cuûa pheùp nhaân 2 bieán A vaø B nhö sau: A 0 0 1 1

B 0 1 0 1

X=A.B 0 0 0 1

A B

X = AB

Coång AND

Keát luaän •

Pheùp toaùn AND seõ coù keát quaû baèng 0 neáu moät hay nhieàu bieán ngoõ vaøo baèng 0



Coång AND chæ coù moät ngoõ ra vaø coù theå coù nhieàu hôn hai ngoõ vaøo

Ví duï AND 3 ngoõ vaøo coù baûng söï thaät nhö sau

A B C

X = ABC

Coång AND

Trang 23

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

X = ABC 0 0 0 0 0 0 0 1

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ Xaùc ñònh daïng soùng ngoõ ra cuûa coång AND öùng vôùi caùc ngoõ vaøo nhö sau `

A

A

B

B

X = AB

Trong ví duï naøy thaáy raèng, ngoõ ra x seõ baèng vôùi ngoõ vaøo A khi B ôû möùc logic 1. Vì vaäy ta coù theå xem ngoõ vaøo B nhö ngoõ vaøo ñieàu khieån, noù cho pheùp daïng soùng ôû ngoõ vaøo A xuaát hieän ôû ngoõ ra hay khoâng. Trong tröôøng hôïp naøy coång AND ñöôïc duøng nhö moät maïch cho pheùp, vaø ñaây laø öùng duïng raát quan troïng cuûa coång AND vaø seõ ñöôïc khaûo saùt sau. 2.3.3. Phép toán NOT và cổng NOT Neáu bieán A ñöôïc ñöa qua pheùp toaùn NOT, keát quaû x seõ laø: X= A Ta coù 1 = 0 vaø 0 = 1 , baûng söï thaät cho pheùp toaùn NOT nhö sau: A 0 1

A

X= A 1 0

X=A Coång NOT

Coång NOT chæ coù moät ngoõ vaøo vaø moät ngoõ ra 2.4.

MÔ TẢ CÁC MẠCH LOGIC THEO PHƯƠNG PHÁP ĐẠI SỐ Baát cöù moät maïch logic naøo cuõng coù theå ñöôïc moâ taû baèng caùch söû duïng caùc pheùp toaùn Boolean ñaõ ñeà caäp ôû treân (coång OR, AND vaø NOT laø nhöõng khoái cô baûn trong moät heä thoáng soá). Ví dụ, xeùt maïch sau A B

A.B C

X = A.B + C

Maïch coù 3 ngoõ vaøo A, B vaø C vaø moät ngoõ ra x. Söû duïng caùc bieåu thöùc Boolean cho moãi coång ta xaùc ñònh ñöôïc bieåu thöùc ngoõ ra x = AB + C. Ví dụ A B

A+B C

Trang 24

X = (A+B).C

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ xaùc ñònh haøm ngoõ ra cuûa maïch sau

A B (a) A B C D (b) 2.5.

THỰC HIỆN CÁC MẠCH LOGIC TỪ BIỂU THỨC BOOLEAN Ví dụ thöïc hieän bieåu thöùc sau: y = AC+BC+ABC AC

A C B

B

BC

y=AC+BC+ABC

C A

ABC

B C

Ví dụ veõ sô ñoà maïch thöïc hieän bieåu thöùc sau: x= AB+BC

(

)

Ví dụ veõ sô ñoà maïch thöïc hieän bieåu thöùc x = ABC A+D söû duïng caùc coång coù soá ngoõ vaøo nhoû hôn 3 2.6.

CỔNG NOR VÀ CỔNG NAND Coång NAND vaø coång NOR ñöôïc duøng raát roäng raõi trong caùc maïch soá. Thöïc söï caùc coång naøy ñeàu ñöôïc keát hôïp töø caùc pheùp toùan cô baûn AND, OR vaø NOT.

2.6.1. Cổng NOR Coång NOR hoïat ñoäng gioáng nhö hai coång OR vaø NOT maéc noái tieáp nhö hình veõ vaø bieåu thöùc ngoõ ra laø x= A+B , baûng söï thaät nhö sau: OR NOR X= A+B A A 0 0 1 1

B 0 1 0 1

A+B 0 1 1 1

A+B

1 0 0 0

B

Kyù hieäu ñaûo A B

Ngoõ ra coång NOR laø ñaûo vôùi ngoõ ra coång OR Trang 25

X= A+B

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ, xaùc ñònh daïng soùng ngoõ ra cuûa coång NOR öùng vôùi ngoõ vaøo nhö sau 1

A 0

A B

B

2.6.2. Cổng NAND Coång NAND töông ñöông vôùi AND coäng vôùi NOT, ngoõ ra cuûa NAND seõ laø x= AB , baûng söï thaät cho nhö sau: A 0 0 1 1

B 0 1 0 1

AND

NAND

AB 0 0 0 1

AB

X= A+B

A B

1 1 1 0

Kyù hieäu ñaûo X= A+B

A B

Ngoõ ra coång NAND laø ñaûo vôùi ngoõ ra coång AND Ví dụ, xaùc ñònh daïng soùng ngoõ ra cuûa coång NAND öùng vôùi ngoõ vaøo nhö sau

A

A

X

B B

Ví duï, thöïc hieän maïch logic coù bieåu thöùc nhö sau: x = AB(C + D) chæ duøng coång NOR vaø NAND Ví dụ xaùc ñònh möùc logic ngoõ ra cuûa ví duï treân vôùi A=B=C=1 vaø D=0 2.7.

PHÉP TOÁN XOR (Exclusive-OR) và phép toán tương đương

2.7.1. Phép toán XOR và cổng XOR Pheùp toaùn XOR (kyù hieäu ⊕) coù baûng söï thaät nhö sau: X 0 0 1 1

Y 0 1 0 1

X⊕Y 0 1 1 0

X

X⊕Y

Y Cổng XOR

Töø baûng söï thaät thaáy raèng X ⊕ Y =1 khi X≠ Y vaø X ⊕ Y =0 khi X= Y Bieåu thöùc toaùn cuûa pheùp toaùn XOR: X ⊕ Y = XY+YX

Trang 26

Bài Giảng Kỹ Thuật Số

Chương 2

2.7.2. Phép toán tương đương và cổng XNOR Pheùp toùan töông ñöông (kyù hieäu ≡) coù baûng söï thaät nhö sau: X 0 0 1 1

Y 0 1 0 1

X≡Y 1 0 0 1

X

X⊕Y

Y Cổng XNOR

Töø baûng söï thaät thaáy raèng X ≡ Y = 0 khi X≠ Y vaø X ≡ Y = 1 khi X= Y Bieåu thöùc toaùn: X ≡ Y = X ⊕ Y = XY + X.Y 2.8.

CÁC ĐỊNH LÝ CƠ BẢN CỦA ĐẠI SỐ BOOLEAN (1) X . 0 = 0

(5) X + 0 = X

(2) X . 1 = X

(6) X + 1 =1

(3) X . X = X

(7) X + X = X (8) X + X = 1

(4) X . X = 0 2.8.1. Phép giao hoán, kết hợp và phân phối (9)

X+Y=Y+X

(10)

X.Y=Y.X

(11)

X + (Y + Z) = (X + Y) + Z = X + Y + Z

(12)

X(YZ) = (XY)Z = XYZ

(13)

X(Y + Z) = XY + XZ

(14)

(W + X)(Y + Z) = WY + XY + WZ + XZ

(15)

X + XY = X

(vì X(1+Y) = X)

(16)

X + XY = X + Y

(vì X + X Y = (X + Y)(X + X ))

(17)

(X + Y)(X + Y ) = X

2.8.2. Định lý DeMorgan (18)

X + Y = X.Y

(19)

( X.Y) = X + Y

2.8.3. Định lý Consensus (20)

XY + XZ + YZ = XY + XZ

(21)

( X + Y)( X + Z)(Y + Z) = ( X + Y)( X + Z)

2.8.4. Các định lý cho phép tóan XOR (22)

X⊕0=X

Trang 27

Bài Giảng Kỹ Thuật Số

Chương 2

(23)

X⊕1= X

(24)

X⊕X=0

(25)

X⊕ X =1

(26)

X ⊕ Y = Y ⊕ X (Giao hoaùn)

(27)

(X ⊕ Y) ⊕ Z = X ⊕ (Y ⊕ Z) = X ⊕ Y ⊕ Z (Keát hôïp)

(28)

X(Y ⊕ Z) = XY ⊕ XZ (Phaân phoái)

(29)

( X ⊕ Y) = X ⊕ Y = X ⊕ Y = XY + X.Y

Ví dụ, ruùt goïn bieåu thöùc y = A BD + A B.D Giải. y = A B(D + D) , söû duïng ñònh lyù (8): D + D = 1

y = A B.1 = A B Ví dụ, Ruùt goïn bieåu thöùc x = ACD + ABCD Ví dụ Ruùt goïn bieåu thöùc z = (A + C).(B + D) Ví dụ Thöïc hieän maïch logic vôùi bieåu thöùc ngoõ ra z = A + B + C chæ duøng coång NAND vaø coång ñaûo Ví dụ Ruùt goïn bieåu thöùc a.b+ac+bc+bc+ab Ví dụ Ruùt goïn bieåu thöùc (a+b+c)(a+b+d)(b+c+d) 2.8.5. Các phép biến đổi trên cổng NAND và NOR Taát caû caùc bieåu thöùc Boolean ñeàu coù theå ñöôïc thöïc hieän thoâng qua caùc coång OR, AND vaø NOT. Tuy nhieân, ñeå thöïc hieän caùc bieåu thöùc logic maø chæ duøng 1 loaïi coång NAND (hay coång NOR), ta seõ bieán ñoåi coång NAND (hay coång NOR) ñeå thöïc hieän caùc pheùp toaùn AND, OR, NOT nhö sau Thực hiện các phép toán bằng cổng NAND A

x = A.A = A

x=AB

A B A

x = A.B = A + B

B

Trang 28

Bài Giảng Kỹ Thuật Số

Chương 2

Thực hiện các phép toán bằng cổng NOR A

x =A+A=A

A

x=A+B

B A

x = A + B = A.B

B

Ví dụ. Thieát keá maïch thöïc hieän bieåu thöùc x=AB+CD, sao cho duøng ít IC nhaát. Giaû söû coù caùc IC sau 14

13

12

11

10

9

8

Vcc 14

13

12

11

10

9

8

7408

7400

1

2

3

4

5

6

1

7

Vcc 14

2

3

4

5

6

7

GND

13

12

11

10

9

8

7432

1

2

3

4

5

6

7

GND

2.8.6. Biểu diễn qua lại giữa các cổng ÔÛ treân ñaõ khaûo saùt 5 loaïi coång logic (AND, OR, NOT, NAND, NOR) vaø caùc kyù hieäu chuaån ñeå bieåu dieãn chuùng treân moät maïch logic. Maëc duø vaäy moät soá maïch cuõng söû duïng theâm moät soá caùch bieåu dieãn khaùc nhö sau:

Trang 29

Bài Giảng Kỹ Thuật Số

Chương 2

AB

A

AND

B A B

A+B

A B

AB

A B

A+B

A

A

OR

NAND

A B

A + B = AB

A B

A.B = A + B

A + B = AB

A B

NOR A

A.B = A + B

B

NOT

A

A

Khái nhiệm về mức logic tích cực.

A A tích cực mức 1 Ví dụ,

A B

A

A

A tích cực mức 0

A tích cực cạnh lên

AB

A A tích cực cạnh xuống A + B = AB

A B

(b)

(a)

ÔÛ coång NAND (a) coù theå dieãn giaûi: Ngoõ ra tích cöïc ôû möùc thaáp chæ khi A vaø B ôû möùc cao ÔÛ coång NAND (b): Ngoõ ra tích cöïc ôû möùc cao khi A hoaëc B ôû möùc thaáp Ví duï, dieãn giaûi yù nghóa ngoõ ra Z theo caùc ngoõ vaøo ABCD sau `

A B Z C D

(a)

Trang 30

Bài Giảng Kỹ Thuật Số

Chương 2

A B Z

C D

(b) A B Z

C D

(c)

¾ Löu yù: khi hoaùn chuyeån caùc coång, moät nguyeân lyù chung laø: Keát noái ngoõ ra ñaûo cuûa coång naøy vaøo ngoõ vaøo ñaûo cuûa coång kia (hình b), vaø ngoû ra khoâng ñaûo cuûa coång naøy naøo ngoõ ra khoâng ñaûo cuûa coång kia (hình c) 2.9.

LOGIC DƯƠNG VÀ LOGIC ÂM ÖÙng vôùi ñieàu kieän hoïat ñoäng bình thöôøng, ñieän aùp cung caáp cho caùc ngoõ vaøo cuûa coång logic ñöôïc haïn cheá ñeå coù ñöôïc moät trong hai giaù trò 0 vaø 1. Khi möùc ñieän aùp ngoõ vaøo ñuùng cung caáp cho moät coång logic thì ñieän aùp ngoû ra seõ nhaän moät trong hai giaù trò. Logic döông: Möùc ñieän aùp cao trong hai möùc ñieän aùp bieåu thò möùc logic 1 vaø möùc ñieän aùp thaáp trong hai möùc ñieän aùp bieåu thò möùc logic 0 Logic aâm: Möùc ñieän aùp thaáp trong hai möùc ñieän aùp bieåu thò möùc logic 1 vaø möùc ñieän aùp cao trong hai möùc ñieän aùp bieåu thò möùc logic 0 Ví duï cho coång logic vaø quan heä giöõa ngoõ vaøo vaø ngoõ ra nhö sau: E1

Coång Logic

E2 E3 E1 0 0 0 0 +V +V +V +V

E2 0 0 +V +V 0 0 +V +V

Trang 31

E3 0 +V 0 +V 0 +V 0 +V

E0

E0 0 0 0 0 0 0 0 +V

Bài Giảng Kỹ Thuật Số

Chương 2

Baûng traïng thaùi logic döông ñöôïc moâ taû nhö sau E1 0 0 0 0 1 1 1 1

E2 0 0 1 1 0 0 1 1

E3 0 1 0 1 0 1 0 1

E0 0 0 0 0 0 0 0 1

Thaáy raèng E0 = 1 neáu E1, E2 vaø E3 = 1, nghóa laø: E0 = E1E2E3 Töø ñoù thaáy raèng, coång treân töông ñöông vôùi coång AND cho maïch logic döông Neáu chuyeån baûng traïng thaùi sang logic aâm, ñöôïc nhö sau E1 1 1 1 1 0 0 0 0

E2 1 1 0 0 1 1 0 0

E3 1 0 1 0 1 0 1 0

E0 1 1 1 1 1 1 1 0

E0 = 1 neáu E1 hoaëc E2 hoaëc E3 = 1, nghóa laø: E0 = E1+E2+E3 Töø ñoù thaáy raèng, coång treân töông ñöông vôùi coång OR cho maïch logic aâm Neáu coù moät haøm ñoái vôùi maïch logic döông, deã daøng xaùc ñònh haøm cho maïch ñoù nhöng öùng vôùi logic aâm baèng caùch aùp duïng ñònh lyù logic aâm Định lý logic âm Neáu moät maïch toå hôïp coù haøm F quan heä giöõa ngoõ ra vaø ngoõ vaøo theo logic döông, thì maïch toå hôïp ñoù seõ coù haøm ñoái ngaãu vôùi haøm F khi ngoõ vaøo vaø ngoõ ra ñöôïc ñònh nghóa theo logic aâm baèng caùch bieán ñoåi AND thaønh OR vaø ngöôïc laïi Ví dụ. Xeùt maïch toå hôïp sau: A G

B C

Giaû söû haøm G ñöôïc ñònh nghóa theo logic döông laø G= ABC + A.BC

Trang 32

Bài Giảng Kỹ Thuật Số

Chương 2

thì haøm G ñònh nghóa theo logic aâm seõ laø G = ( ABC + A.BC )D = ( A + B + C)(A + B + C) Ví dụ. ÖÙng duïng ñònh lyù logic aâm, tìm ñoái ngaãu cuûa haøm XOR 2.10. CÁC HÀM CƠ BẢN CỦA ĐẠI SỐ BOOLEAN VÀ CÁC PHƯƠNG PHÁP BIỂU DIỄN 2.10.1.

Hàm logic cơ bản

Moät haøm y=f(x1, x2, …, xn) vôùi caùc bieán x1, x2, …, xn chæ nhaän hai giaù trò 0 hoaëc 1 vaø haøm y cuõng chæ nhaän hai giaù trò 0 hoaëc 1 ñöôïc goïi laø haøm logic (1) Hàm logic một biến: y=f(x) Vì bieán x seõ nhaän moät trong hai giaù trò: 0 hoaëc 1, neân haøm y coù 4 khaû naêng hay thöôøng goïi laø 4 haøm y0, y1, y2, y3, vaø baûng chaân lyù nhö sau:

Haøm khoâng Haøm ñaûo

Baûng chaân lyù x 0 1 y0 0 0 y1 1 0

Haøm laëp Haøm ñôn vò

y2 y3

Teân haøm

0 1

Thuaät toùan logic y0 = 0

Haøm luoân baèng 0

y1 = x y2 = x y3 = 1 y3= x + x

1 1

Ghi chuù

Haøm luoân baèng 1

(2) Haøm logic hai bieán y=f(x1, x2) Vôùi hai bieán logic x1, x2, moãi bieán nhaän hai giaù trò laø 0, 1, nhö vaäy coù 16 toå hôïp logic taïo thaønh 16 haøm. Baûng toùm taét 16 haøm töø y0 – y15 Teân haøm

Baûng chaân trò 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1

Thuaät toaùn logic

Haøm khoâng Haøm Piec

x1 x2 y0 y1

Haøm caám x1

y2

0 0

1

0

Y 2= x 1 x 2

Haøm ñaûo x1

y3

0 0

1

1

Y3 = x 1

Haøm caám x2

y4

0 1

0

0

Y 4= x 2 x 1

Haøm ñaûo x2

y5

0 1

0

1

Y5 = x 2

Haøm XOR

y6

0 1

1

0

Y6= x 1 x 2 + x 1 .x 2

Haøm Cheffer

y7

0 1

1

1

Y 7= x 1 + x 2 = x 1 x 2

Haøm AND Haøm XNOR

y8 y9

1 0 1 0

0 0

0 1

Y8 = x1x2 Y9 = x1x2 + x 1 .x 2

Haøm laëp theo x2 Haøm keùo theo x2

y10 1 0 y11 1 0

1 1

0 1

y10 = x2 Y11= x 1 +x2

Trang 33

Y0 = 0 Y1= x 1 .x 2 = x 1 + x 2

Ghi Chuù

Bài Giảng Kỹ Thuật Số

Chương 2

Haøm laëp theo x1 Haøm keùo theo x1

y12 1 1 y13 1 1

0 0

0 1

y12= x1 y13= x1+ x 2

Haøm OR Haøm ñôn vò

y14 1 1 y15 1 1

1 1

0 1

y14 = x1 + x2 y15=1

(3) Hàm logic n biến y=f(x1, x2,…, xn) Vôùi haøm logic n bieán, moãi bieán nhaän moät trong hai giaù trò 0 hoaëc 1 neân ta coù 2n toå hôïp bieán, moãi toå hôïp bieán laïi nhaän hai giaù trò 0 hoaëc 1, do vaäy soá haøm logic n taát caû laø 2 2 . Vôùi 1 bieán coù 4 khaû naêng taïo haøm, vôùi 2 bieán coù 16 khaû naêng taïo haøm, vôùi 3 bieán coù 256 khaû naêng taïo haøm, nhö vaäy khi soá bieán taêng thì soá haøm coù khaû naêng taïo thaønh raát lôùn. Tuy nhieân taát caû khaû naêng naøy ñeàu ñöôïc bieåu hieän qua caùc khaû naêng toång logic, tích logic vaø nghòch ñaûo logic cuûa caùc bieán. Trong taát caû caùc haøm ñöôïc taïo thaønh, ñaëc bieät chuù yù ñeán haøm toång chuaån vaø haøm tích chuaån. Haøm toång chuaån laø haøm chöùa toång caùc tích maø moãi tích coù ñuû taát caû caùc bieán cuûa haøm. Haøm tích chuaån laø haøm chöùa tích caùc toång maø moåi toång ñeàu coù ñuû taát caû caùc bieán cuûa haøm 2.10.2.

Các phương pháp biểu diễn hàm logic

(1) Phương pháp biểu diễn thành bảng ÔÛ ñaây caùc giaù trò cuûa haøm phuï thuoäc vaøo caùc bieán ñöôïc trình baøy trong moät baûng goïi laø baûng söï thaät. Ví dụ. moät haøm 2 bieán vôùi giaù trò haøm ñaõ cho ñöôïc bieåu dieãn thaønh baûng nhö sau: Giá trị thập phân X1 của tổ hợp biến X2 Y 0 0 0 1 1 0 1 X 2 1 0 0 3 1 1 1 Ghi chuù: daáu X laø giaù trò haøm khoâng xaùc ñònh (coù theå 0 hay 1) Öu ñieåm cuûa caùch bieåu dieãn haøm baèng baûng laø deã nhìn, ít nhaàm laãn. Nhöôïc ñieåm cuûa phöông phaùp naøy laø coàng keành, ñaëc bieät khi soá bieán lôùn (2) Phương pháp hình học ÔÛ ñaây mieàn xaùc ñònh cuûa haøm ñöôïc bieåu dieãn trong khoâng gian n chieàu. Moãi toå hôïp bieán ñöôïc bieåu dieãn thaønh 1 ñieåm ôû trong khoâng gian ñoù, öùng vôùi moãi ñieåm seõ ghi 1 giaù trò cuûa haøm. Hai ñieåm naèm treân cuøng moät truïc chæ khaùc nhau bôûi söï thay ñoåi giaù trò cuûa moät bieán.

Trang 34

Bài Giảng Kỹ Thuật Số

Chương 2

Sau ñaây minh hoïa caùch bieåu dieãn haøm logic 1 bieán, 2, 3 bieán döôùi daïng hình hoïc 0

1

x1

x

(a)

001

x2 100

000

11 x2

00

111

011

x1 10

110

010

101

x3

(c)

01 (b)

(3) Phương pháp biểu thức đại số Moät haøm logic n bieán baát kyø bao giôø cuõng coù theå bieåu dieãn thaønh haøm toång chuaån ñaày ñuû vaø tích chuaån ñaày ñuû Cách viết hàm dưới dạng tổng chuẩn đầy đủ



Chæ quan taâm ñeán toå hôïp bieán maø haøm coù giaù trò baèng 1. Soá laàn haøm baèng 1 seõ chính laø soá tích (minterm) cuûa caùc toå hôïp bieán



Trong moãi tích, caùc bieán coù giaù trò baèng 1 ñöôïc giöõ nguyeân, coøn caùc bieán coù giaù trò baèng 0 thì ñöôïc laáy giaù trò ñaûo



Haøm toång chuaån ñaày ñuû seõ laø toång caùc tích ñoù

Ví dụ, Thöù töï toå hôïp bieán 0 1 2 3 4 5 6 7

A

B

C

F

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

0 0 1 1 0 0 0 1

Minterm

→ →

ABC ABC



ABC

Vaäy F =ΣABC (2,3,7) = ABC + ABC + ABC Cách viết hàm dưới dạng tích chuẩn đầy đủ



Chæ quan taâm ñeán toå hôïp bieán maø haøm coù giaù trò baèng 0. Soá laàn haøm baèng 0 seõ chính laø soá toång (maxterm) cuûa caùc toå hôïp bieán



Trong moãi toång caùc bieán coù giaù trò 0 ñöôïc giöõ nguyeân, coøn caùc bieán coù giaù trò 1 ñöôïc laáy ñaûo.



Haøm tích chuaån ñaày ñuû seõ laø tích caùc toång ñoù

Trang 35

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ, Thöù töï toå hôïp bieán 0 1 2 3 Vaäy

A

B

f

0 0 1 1

0 1 0 1

0 1 0 0

Maxterm A+B A+B A+B

f= ΠAB(0,2,3) = (A+B) ( A+B )( A+B )

(4) Phương pháp biểu diễn bằng bìa Karnaugh



Ñeå bieåu dieãn haøm logic n bieán, caàn thaønh laäp moät baûng coù 2n oâ, moãi oâ töông öùng vôùi moät toå hôïp bieán. Ñaùnh soá thöù töï cuûa caùc oâ trong baûng töông öùng vôùi giaù trò cuûa toå hôïp bieán



Caùc oâ caïnh nhau hoaëc ñoái xöùng nhau chæ cho pheùp khaùc nhau veà giaù trò cuûa moät bieán



Trong caùc oâ ghi giaù trò cuûa haøm töông öùng vôùi giaù trò cuûa toå hôïp bieán ñoù

Mô tả hàm f hai biến bằng bìa Karnaugh

f B A=0, B=0 A=0, B=1

A

0

1

0

A=1, B=0

1

A=1, B=1

Moãi moät oâ vuoâng bieåu dieãn moät minterm cuûa haøm f neáu noù coù giaù trò 1, vaø bieåu dieãn moät maxterm neáu coù giaù trò 0. Ñoïc giaù trò minterm, maxterm naøy gioáng nhö ñoái vôùi baûng söï thaät Ví dụ, Haøm f ñöôïc bieåu dieãn baèng baûng söï thaät vaø baèng bìa Karnaugh nhö sau

A 0 0 1 1

B 0 1 0 1

f 1 1 0 0

f B

A

f 0

1

0

1

0

1

1

0

B A.B AB

Töø bìa Karnaugh ta cuõng coù theå vieát laïi haøm f = A.B + AB

Trang 36

A

0

1

0

1

0

1

1

0

Bài Giảng Kỹ Thuật Số

Chương 2

Mô tả hàm f ba biến bằng bìa Karnaugh A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

f 0 0 1 1 1 0 1 0

f

A

0

1

00

0

1

01

0

0

11

1

0

10

1

1

BC

ABC=110 thì f=1

Lưu ý: caùc oâ caïnh nhau hoaëc ñoái xöùng nhau chæ cho pheùp khaùc nhau veà giaù trò cuûa moät bieán Mô tả hàm f 4 biến bằng bìa Karnaugh Ví dụ, Moâ taû haøm f(a,b,c,d) = acd + ab + d

f

ab 00

01

11

10

00

1

1

1

1

01

1

1

1

1

11

0

1

1

1

10

0

1

0

0

cd

Mô tả hàm f 5 biến bằng bìa Karnaugh Moät bìa 5 bieán coù theå ñöôïc xaây döïng treân khoâng gian 3 chieàu baèng caùch ñaët moät bìa 4 bieán treân moät bìa thöù hai. Soá haïng lôùp döôùi ñöôïc ñaùnh soá töø 0 ñeán 15, soá haïng ôû lôùp treân ñöôïc ñaùnh soá töø 16 ñeán 31. Vì vaäy soá haïng nhoùm döôùi chöùa A vaø soá haïng nhoùm treân chöùa A

f

A 1/0

BC 00 DE 00 01 11

A.B.CDE

10

01

16

1

28

1

1

0

17

4 21

19

23

1

3 22

1

Trang 37

2

1 12

1

5

1

113

18 19

27

1

11 26

30 6

1

15

7

1

1

25

31

1

10 24

29

1

18

11

20

14

10

A.BCDE

Bài Giảng Kỹ Thuật Số

Chương 2

Ngoaøi ra ta coù theå moâ taû haøm 5 bieán nhö sau:

A=0

f

BC 00 DE

A=1

01

11

11

10

11

01

00

00

0

2

6

4

5

7

3

1

01

8

10

14

12

13

15

11

9

11

24

26

30

28

29

21

27

25

10

16

18

22

20

21

23

19

17

Mô tả hàm f 6 biến bằng bìa Karnaugh

f

ABC 000

001

011

010

110

111

101

100

000

0

1

3

2

6

7

5

4

001

8

9

11

10

14

15

13

12

011

24

25

27

26

30

21

29

28

010

16

17

19

18

22

33

21

20

110

48

49

51

50

54

55

53

52

111

56

57

59

58

62

63

61

60

101

40

41

43

42

46

47

45

44

100

32

33

35

34

38

39

37

36

DEF

2.11. TỐI THIỂU HÓA HÀM LOGIC BẰNG BÌA KARNAUGH Các bước thực hiện Bước 1. Bieåu dieãn haøm ñaõ cho thaønh baûng Karnaugh Bước 2. Xaùc ñònh nhoùm caùc tích cöïc tieåu hoaëc caùc toång cöïc tieåu (nhoùm 2k oâ keá caän hoaëc ñoái xöùng vôùi ñieàu kieän trong moãi nhoùm phaûi coù ít nhaát 1 oâ chöa ñöôïc nhoùm bôûi caùc nhoùm khaùc) Bước 3. Trong moãi nhoùm, caùc bieán coù giaù trò gioáng nhau thì giöõ laïi, caùc bieán coù giaù trò khaùc nhau thì ñôn giaûn, sau ñoù vieát haøm keát quaû theo toång hoaëc theo tích

Trang 38

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ, tích cực tiểu 2 ô kế cận

x

C

C

0 1 AB 1 0 AB (a)

0 0 0 0

A.B A.B

x A.B A.B

x=ABC+ABC = BC

AB AB

C

C 0 1 0 0 (b)

0 X 0 0

C.D

CD

0 0 0 1

0 0 X 0 (d)

x=ABC+ABC = AB

Ví dụ, ruùt goïn bìa K sau

x

C

C

1 0 AB 0 1 AB (c)

X X 0 0

A.B A.B

x A.B A.B

AB AB

CD CD 1 1 0 0 0 0 0 X

Ví dụ, tích cực tiểu 4 ô kế cận

x

C

C

0 0 AB X 0 AB (a)

1 X 1 1

A.B A.B

x

C.D

CD

0 0 1 0

0 0 1 0 (b)

A.B A.B

x=C

AB AB

CD CD X 0 0 0 x=AB X 1 0 0

Ví dụ, ruùt goïn bìa K sau

x A.B A.B

AB AB

C.D

1 0 0 X

x

CD CD 0 0 0 1 1 0 X 1 0 0 0 0 (c) x

CD

A.B A.B

AB AB

A.B A.B

AB AB

C.D

CD

1 0 0 1

0 1 0 X (e)

CD CD 0 1 0 0 0 0 X X

Trang 39

C.D

CD

0 0 X 1

0 0 0 0 (d)

CD CD X 1 0 0 0 1 X 1

Bài Giảng Kỹ Thuật Số

Chương 2

Ví dụ, tích cực tiểu 8 ô kế cận

x

x A.B A.B

AB AB

C.D

CD

0 1 1 0

0 1 1 0 (a)

CD CD X 0 1 1 x=B X 1 X 0

Ví dụ, ruùt goïn bìa K sau

x A.B A.B

AB AB

C.D

CD

1 X 0 1

1 0 0 1 (c)

A.B A.B AB AB

C.D

CD

1 X 1 1

1 X 1 1 (b)

C.D

CD

1 1 1 1

0 0 0 0 (d)

CD CD 0 0 x= C 0 X 0 0 0 0

x

CD CD 1 0 0 1

A.B A.B

1 X 0 1

AB AB

Trang 40

CD CD 0 1 0 1 0 1 0 1

Bài Giảng Kỹ Thuật Số

Chương 2

Bài tập chương 2

2.1. Vẽ dạng sóng ngõ ra cho mạch hình sau (A)

(A) (B) (C)

(B)

X

(C)

2.2. Giả sử ngõ vào A (bài 2.1) = 0, vẽ dạng sóng ngõ ra. 2.3. Giả sử ngõ vào A (bài 2.1) = 1, vẽ dạng sóng ngõ ra. 2.4. Có bao nhiêu tổ hợp ngõ vào của cổng OR 5 ngõ vào làm cho ngõ ra ở mức cao? 2.5. Thay đổi cổng OR ở bài 2.1 thành cổng AND a. Vẽ sóng ngõ ra b. Vẽ sóng ngõ ra nếu ngõ vào A nối mass c. Vẽ sóng ngõ ra nếu ngõ vào A nối +5V 2.6. Thêm cổng đảo ở ngõ ra của cổng OR (bài 2.1). Vẽ dạng sóng tại ngõ ra của cổng đảo. 2.7. Viết biểu thức Boolean cho ngõ ra X. Xác định gia trị của X ứng với các điều kiện ngõ vào có thể và liệt kê các giá trị vào bảng sự thật. A B X

C 2.8. Làm lại với các yêu cầu tương tự bài 2.7 A B C

X

D

Trang 41

Bài Giảng Kỹ Thuật Số

Chương 2

2.9. Xác định bảng sự thật đầy đủ cho mạch ở bài 2.8 bằng cách tìm mức logic hiện điện tại ngõ ra ứng với mỗi sự kết hợp của ngõ vào. 2.10. Thay cổng OR thành cổng AND, cổng AND thành cổng OR ở bài 2.8, viết biểu thức ngõ ra. 2.11. Ứng với mỗi biểu thức bên dưới, xây dựng mạch logic tương ứng, dùng cổng AND, OR, cổng đảo a. x = AB(C + D ) b. z = ( A + B + CD E ) + BC D c. y = ( M + N ) + PQ d. x = W + PQ e. z = MN ( P + N ) 2.12. Vẽ dạng sóng ngõ ra (A)

(A) (B) (C)

(B)

X

(C) 2.13. Làm lại bài 2.12 với cổng NAND 2.14. Viết biểu thức ngõ ra cho mạch sau và xác định bảng sự thật A B

X

C 2.15. Thay đổi mạch điện được xây dựng trong bài 2.15 chỉ dùng cổng NAND 2.16. Hoàn tất các biểu thức sau a. A + 1 = b. A . A = c. B . B = d. C + C = e. X . 0 = f. D . 1 = g. D + 0 = h. C + C = i. G + GF = j. y + wy = Trang 42

Bài Giảng Kỹ Thuật Số

Chương 2

2.17. Đơn giản biểu thức sau a. x = ABC + AC b. y = (Q + R ) Q + R

(

)

c. w = ABC + ABC + A d. q = RST R + S + T

(

)

e. x = ABC + ABC + ABC + ABC + ABC f.

(

)(

)

z = B +C B +C A+ B +C

g. x=(M+N)(M+P)(N+P) h. z=ABC+ABC+BCD i. y = C + D + AC D + ABC + ABCD + AC D

(

)

2.18. Hãy chứng minh định lý DeMorgan bằng tất cả các cách có thể. 2.19. Đơn giản biểu thức bên dưới dùng định lý DeMorgan: a. ABC b. A+BC c. ABCD d. A(B+C)D e. (M+N)(M+N) f.

ABCD

2.20. Trình bày cách tạo cổng NAND 2 ngõ vào từ cổng NOT 2 ngõ vào. 2.21. Trình bày cách tạo cổng NOR 2 ngõ vào từ cổng NAND 2 ngõ vào. 2.22. Hoàn tất bảng sự thật cho mạch sau A B

X

C D E

2.23. Chỉ ra cách thực hiện x = A BC bằng 1 cổng NOR 2 ngõ vào và 1 cổng NAND 2 ngõ vào. 2.24. Thực hiện biểu thức Y = ABCD sử dụng các cổng NAND 2 ngõ vào.

Trang 43

Bài Giảng Kỹ Thuật Số

Chương 2

2.25 Rút gọn bìa Karnaugh sau

A.B A.B AB AB

A.B A.B AB AB

C.D

CD

0 X 0 0

0 1 1 0 (a)

C.D

CD

X 0 1 0

1 1 X 0 (c)

CD CD 0 1 X 1

1 0 0 0

A.B A.B AB AB

CD CD 0 X 1 1

0 1 0 0

2.26 Rút gọn hàm bài 2.17 dùng bìa Karnaugh

Trang 44

C.D

CD

0 1 1 0

0 1 1 0 (b)

CD CD 1 1 0 0

0 1 0 0

Bài Giảng Kỹ Thuật Số

Chương 3

CHƯƠNG 3. MẠCH LOGIC TỔ HỢP 3.1. GIỚI THIỆU Chöông 2 ñaõ khaûo saùt caùc pheùp toaùn cuûa taát caû caùc coång logic vaø vieäc söû duïng ñaïi soá Boolean ñeå moâ taû vaø phaân tích caùc maïch keát hôïp töø caùc coång logic. Caùc maïch naøy ñöôïc goïi laø maïch logic toå hôïp, vì möùc logic ngoõ ra chæ phuï thuoäc vaøo toå hôïp logic ngoõ vaøo hieän taïi. Moät maïch toå hôïp thì khoâng coù ñaëc tính nhôù Caùc phöông phaùp toái thieåu hoùa thöôøng ñöôïc söû duïng trong thieát keá soá laø: •

Söû duïng caùc ñònh lyù cuûa ñaïi soá Boolean



Caùc kyõ thuaät duøng bìa (Karnaugh, Quine Mc. Cluskey)

Mô hình mạch tổ hợp với n đầu vào và m đầu ra X1 X2

MẠCH TỔ HỢP

Xn

Y1 Y2

Ym

3.2. THIẾT KẾ MẠCH LOGIC TỔ HỢP 3.2.1. Các bước thiết kế mạch logic tổ hợp •

ÖÙng vôùi moãi toå hôïp ngoõ vaøo, ñaët caùc möùc logic ngoõ ra theo yeâu caàu thieát keá, taát caû caùc khaû naêng ngoõ ra cuûa moät maïch logic coù theå ñöôïc bieåu dieãn thoâng qua baûng söï thaät.



Töø baûng söï thaät suy ra bieåu thöùc Boolean cho maïch caàn thieát keá



Ruùt goïn bieåu thöùc Boolean



Chuyeån bieåu thöùc Boolean thaønh maïch toå hôïp

Ví dụ, Thieát keá moät maïch logic 3 ngoõ vaøo, A, B, C vôùi yeâu caàu: ngoõ ra seõ ôû möùc cao khi coù ít nhaát 2 ngoõ vaøo ôû möùc cao Giải. Bước 1. Thieát laäp moät baûng söï thaät, coù taát caû 8 khaû naêng ñoái vôùi ngoõ vaøo. Döïa vaøo yeâu caàu baøi toaùn, ngoõ ra seõ ôû möùc 1 khi coù 2 hay 3 ngoõ vaøo ôû möùc 1, caùc tröôøng hôïp coøn laïi ngoõ ra ôû möùc 0. GV: Nguyễn Trọng Hải

Trang 45

Bài Giảng Kỹ Thuật Số A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

Chương 3

C 0 1 0 1 0 1 0 1

X 0 0 0 1 0 1 1 1

Minterm

A.BC A BC ABC ABC

Bước 2. Vieát bieåu thöùc ngoõ ra döôùi daïng minterm (cho moãi tröôøng hôïp X=1) X = A.BC + ABC + ABC + ABC Bước 3. Coù theå vieát laïi X=ABC+ABC+ABC+ABC+ABC+ABC

Nhoùm caùc soá haïng laïi vôùi nhau X=BC(A+A)+AC(B+B)+AB(C+C)=BC+AC+AB

Bước 4. Bieåu thöùc ngoõ ra ñöôïc thöïc hieän nhö sau: 74LS08

B C

A B

A

X

X 1

C 74LS08

74LS08

Hình (a)

Hình (b)

Ngöôøi ta cuõng co theå bieán ñoåi bieåu thöùc treân thaønh x=C(B + A) + AB, vaø maïch logic ñöôïc thöïc hieän nhö hình (b) Maïch (b) coù phaàn ñôn giaûn hôn vì chæ söû duïng caùc coång 2 ngoõ vaøo thay vì phaûi söû duïng coång OR 3 ngoõ vaøo nhö maïch (a). Treân thöïc teá ngöôøi thieát keá vaãn choïn maïch (a) bôûi vì nhieàu lyù do, moät trong nhöõng lyù do laø tín hieäu ngoõ vaøo A, B ôû maïch (b) phaûi qua 3 coång logic tröôùc khi ñöôïc ñöa ra ngoõ ra. Ñieàu naøy coù theå aûnh höôûng raát lôùn trong moät heä thoáng soá toác ñoä cao. Ví dụ, Thieát keá moät maïch logic 4 ngoõ vaøo, A, B, C, D (trong ñoù A öùng vôùi MSB, vaø D öùng vôùi LSB) vôùi yeâu caàu ngoõ ra seõ ôû möùc cao khi giaù trò thaäp phaân cuûa caùc ngoõ vaøo ABCD > 610

GV: Nguyễn Trọng Hải

Trang 46

Bài Giảng Kỹ Thuật Số

Chương 3

3.2.2. Một số điểm quan trọng khi thực hiện thiết kế cuối cùng Trong caùc ví duï veà thieát keá treân, caùc maïch ñöôïc thöïc hieän thoâng qua caùc coång AND vaø OR, trong ñoù moät hay nhieàu coång AND laùi moät coång OR do vieäc bieåu dieãn haøm döôùi daïng minterm. Khi bieåu dieãn haøm döôùi daïng minterm ta coù theå deã daøng chuyeån ñoåi caùc coång logic thaønh moät coång NAND duy nhaát (löu yù xem laïi phaàn chuyeån ñoåi ñaõ khaûo saùt ôû chöông 2), bôûi vì coång NAND laø coång logic coù ñaùp öùng nhanh nhaát trong hoï logic TTL, ñaây laø moät ñaëc tính quan troïng caàn phaûi löu yù. Ví dụ, bieán ñoåi maïch cuûa 2 ví duï treân duøng coång NAND B C

B C

A

X

A

74LS08

3.3. KỸ THUẬT CỰC TIỂU QUINE-Mc CLUSKEY Caùc heä thoáng soá hieän ñaïi ñöôïc thieát keá baèng caùch söû duïng caùc thieát bò logic phöùc taïp, do ñoù ñoøi hoûi moät kyõ thuaät toái hieåu hoùa haøm logic vôùi söï hoã trôï cuûa maùy tính thay vì laøm baèng tay vôùi caùc yeâu caàu: •

Coù khaû naêng xöû lyù moät soá lôùn caùc bieán



Khoâng phuï thuoäc vaøo khaû naêng cuûa ngöôøi duøng trong vieäc nhaän bieát caùc phaàn töû nguyeân toá



Ñaûm baûo bieåu thöùc ñöôïc cöïc tieåu hoùa



Phuø hôïp cho giaûi phaùp baèng maùy tính

Phương pháp: Bước 1. Chuyển hàm về dạng minterm Bước 2. Sắp xếp các số hạng minterm của hàm theo từng nhóm có chung số bit 1 Bước 3. Áp dụng định lý A+A =1 cho 2 minterm chỉ sai khác nhau 1 bit 1. Lặp lại cho đến khi nhóm xong các minterm Bước 4. Quan sát bảng các nguyên tố cơ bản được rút gọn, xác định cột chỉ chứa một minterm Bước 5. Viết hàm dưới dạng tổng chuẩn rút gọn của các minterm đó Ví dụ. Ruùt goïn haøm Boolean sau duøng phöông phaùp Quin McCluskey Y=∑ ABCD (0,1,2,3,5,7,8,9,11,14) GV: Nguyễn Trọng Hải

Trang 47

X

Bài Giảng Kỹ Thuật Số

Chương 3

Bước 2. Nhoùm (soá bit 1) 1

Minterm 1 2 8 3 5 9 7 11 14

2

3

A 0 0 1 0 0 1 0 1 1

Caùc bieán B C 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 1 1

D 1 0 0 1 1 1 1 1 0

A 0 0 0 0 0 1 0 0 1 1

Caùc bieán B C 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1

D 0 0 1 1 1 1 1 1 1 0

Bước 3. Nhoùm caùc minterm chæ sai khaùc 1 bit Nhoùm 1

2

3

4

Minterm 0,1 0,2 0,8 1,3 1,5 1,9 2,3 8,9 3,7 3,11 5,7 9,11 14

Laëp laïi böôùc 3, tieáp tuïc nhoùm caùc minterm chæ sai khaùc 1 bit Nhoùm 1 2 3

Nguyeân toá cô baûn AB

0,1,2,3 0,1,8,9

A 0 -

Caùc bieán B C 0 0 0

D -

1,3,5,7 1,3,9,11

0 -

0

-

1 1

AD

14

1

1

1

0

ABCD

Minterm

BC

BD

Bước 4. Quan saùt caùc nguyeân toá vaø tìm caùc coät chæ chöùa moät gaïch cheùo (kyù hieäu ⊗) GV: Nguyễn Trọng Hải

Trang 48

Bài Giảng Kỹ Thuật Số

Caùc nguyeân toá

Chương 3

Caùc soá thaäp phaân

Caùc minterm 0

1

2

3

5

7

8

9

11

14



ABCD

14

AB

0,1,2,3

X

X

BC

0,1,8,9

X

X

AD

1,3,5,7

X

X

BD

1,3,9,11

X

X



X

⊗ ⊗

X

⊗ X



Thaáy raèng, taát caû caùc nguyeân toá ñeàu coù ⊗, ñaây laø caùc minterm ñaõ cöïc tieåu hoùa, vaäy haøm cuoái cuøng laø Y= ABCD + A B + B C + A D + B D Ví dụ. Ruùt goïn haøm Boolean sau duøng phöông phaùp Quin McCluskey

Y=∏ ABCD (2,4,5,6,10,12,13,14) 3.4. THIẾT KẾ MẠCH KHÔNG SỬ DỤNG BẢNG SỰ THẬT Moät soá baøi toaùn thieát keá ñoâi khi coù theå giaûi quyeát tröïc tieáp maø khoâng qua caùc böôùc thieát keá treân, ñoái vôùi nhöõng baøi toaùn naøy ñoøi hoûi phaûi hieåu roõ nhöõng pheùp toaùn logic, caùc coång logic vaø caùc tính chaát cuûa coång logic. Xeùt moät vaøi ví duï sau ñaây 3.4.1. Mạch so sánh số nhị phân 2 bit Bài toán

x1 x0

Mạch

y1 y0

sánh

so

z

Thieát keá maïch sao cho ngoõ ra seõ ôû möùc cao khi x1x0 = y1y0 Giaûi. Coù theå giaûi baøi toaùn baèng caùch laäp baûng söï thaät roài ruùt goïn haøm Tuy nhieân, neáu ta xeùt ñeán ñaëc ñieåm cuûa pheùp toaùn töông ñöông hay coång XNOR (ngoõ ra seõ ôû möùc cao neáu 2 ngoõ vaøo baèng nhau) ta seõ thaáy vaán ñeà caàn giaûi quyeát seõ ñôn giaûn hôn nhieàu.

GV: Nguyễn Trọng Hải

Trang 49

x1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

x0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

y1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

y0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

z 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

Bài Giảng Kỹ Thuật Số

Chương 3

Coát loõi cuûa baøi toaùn laø so saùnh x0 vôùi y0 vaø x1 vôùi y1, ta seõ coù maïch nhö sau: X1 X0

Z

Y1

74LS08

Y0

3.4.2. Mạch tạo và kiểm tra chẵn lẻ Khi truyeàn döõ lieäu töø maùy phaùt sang maùy thu, coù nhieàu caùch ñeå kieåm tra loãi trong khi truyeàn, moät trong nhöõng caùch ñôn giaûn nhaát laø theâm 1 bit vaøo döõ lieäu ñöôïc truyeàn ñi, bit ñoù goïi laø bit chaün leû (parity bit). Parity bit coù hai giaù trò 0 hay 1 tuøy thuoäc vaøo soá bit 1 coù trong nhoùm maõ. coù hai phöông phaùp taïo bit parity. Phương pháp parity chẵn Giaù trò cuûa bit parity ñöôïc choïn sao cho toång caùc chöõ soá 1 trong nhoùm maõ laø soá chaün. Neáu soá bit 1 trong nhoùm maõ laø leû thì bit parity theâm vaøo laø 1 Neáu soá bit 1 trong nhoùm maõ laø chaün thì bit parity theâm vaøo laø 0 Ví duï maõ ASCII cuûa chöõ C laø 1000011, nhoùm maõ naøy coù 3 bit 1 vì vaäy seõ ñaët theâm parity bit laø 1 ñeå sao cho nhoùm maõ taïo ra coù soá bit 1 laø chaün (4 bit 1) 11000011 Bit parity theâm vaøo maõ ASCII cuûa chöõ A laø 1000001, bit parity theâm vaøo seõ laø bit 0 (01000001) Maïch taïo Parity chaün döïa treân phöông phaùp so saùnh soá bit 1 D3 D2 D1 D0

Parity (P)

To Receiver

Ngoõ ra coång XOR ôû möùc cao khi soá bit 1 ôû ngoõ vaøo laø leû Ta coù theå thieát keá maïch duøng baûng söï thaät vaø keát quaû cuõng gioáng nhö treân

GV: Nguyễn Trọng Hải

Trang 50

Bài Giảng Kỹ Thuật Số

Chương 3

Phương pháp Parity lẻ Giaù trò cuûa bit parity ñöôïc choïn sao cho toång caùc chöõ soá 1 trong nhoùm maõ laø soá leû. Neáu soá bit 1 trong nhoùm maõ laø leû thì bit parity theâm vaøo laø 0 Neáu soá bit 1 trong nhoùm maõ laø chaün thì bit parity theâm vaøo laø 1 Ví duï maõ ASCII cuûa chöõ C laø 1000011, nhoùm maõ naøy coù 3 bit 1 vì vaäy seõ ñaët theâm parity bit laø 0 ñeå sao cho nhoùm maõ taïo ra coù soá bit 1 laø leû 01000011 Bit parity theâm vaøo maõ ASCII cuûa chöõ A laø 1000001, bit parity theâm vaøo seõ laø bit 1 (11000001) Mạch kiểm tra chẵn lẻ Maïch kieåm tra chaün töông töï nhö maïch phaùt parity chaün, cuõng döïa treân nguyeân lyù cuûa coång XOR, ngoõ ra seõ ôû möùc cao neáu caùc ngoõ vaøo coù soá bit 1 laø chaün. Nghóa laø khi ngoõ ra ôû möùc 1: khoâng coù loãi, khi ngoõ ra ôû möùc 0: coù loãi trong khi truyeàn. Maïch nhö hình sau P D3 D2 D1 D0

Error (E) 0=no error 1=error

Maïch chæ kieåm tra caùc bit goác coù bò loãi hay khoâng chöù khoâng bieát ñöôïc bit naøo loãi trong tröôøng hôïp phaùt hieän ñöôïc loãi 3.4.3. Mạch cho phép/cấm Moãi coång logic cô baûn coù theå ñöôïc söû duïng ñeå ñieàu khieån cho pheùp hoaëc khoâng cho pheùp caùc tín hieäu ñi qua coång ñoù. ÔÛ ñaây ta söû duïng moät ngoõ vaøo laøm chaân ñieàu khieån cho pheùp hoaëc caám, ngoõ coøn laïi caáp tín hieäu

Control

Control Cổng logic

Không thay đổi trạng thái

Traïng thaùi caám (ñoùng coång)

GV: Nguyễn Trọng Hải

Trang 51

Cổng logic

Traïng thaùi cho pheùp (môû coång)

Bài Giảng Kỹ Thuật Số

Chương 3

Ví dụ, Thieát keá maïch logic cho pheùp tín hieäu ñi qua chæ khi hai ngoõ ñieàu khieån B vaø C ñeàu ôû möùc cao, caùc tröôøng hôïp coøn laïi ngoõ ra ôû möùc thaáp Giải. A B C

X 74LS11

Ví dụ Thieát keá maïch logic cho pheùp tín hieäu ñi qua chæ khi 2 ngoõ vaøo ñieàu khieån coù möùc logic khaùc nhau. Ví dụ, Thieát keá maïch logic vôùi tín hieäu ngoõ vaøo taïi A, ñieàu khieån taïi B, ngoõ ra X vaø Y nhö sau: Khi B=1 ngoõ ra X = A, Y = 0 Khi B=0 ngoõ ra X = 0, Y= A

GV: Nguyễn Trọng Hải

Trang 52

Bài Giảng Kỹ Thuật Số 3.5.

Chương 3

MẠCH GIẢI MÃ (Decoder)

Laø maïch logic giaûi maõ N-bit nhò phaân ngoõ vaøo thaønh M ñöôøng ngoõ ra, chæ duy nhaát moät ñöôøng ngoõ ra ôû möùc tích cöïc öùng vôùi moät toå hôïp N-bit ngoõ vaøo. Goïi boä giaûi maõ laø boä phaùt hieän maõ O0 O1 O2

A0

N input

A1 A2

Decoder

M output

OM-1

AN-1

Moät soá maïch giaûi maõ khoâng söû duïng heát taát caû caùc khaû naêng cuûa ngoõ vaøo, vì vaäy öùng vôùi toå hôïp ngoõ vaøo khoâng söû duïng thì khi thieát keá khoâng coù ngoõ ra naøo tích cöïc 3.5.1. Mạch giải mã 3 sang 8 Maïch coù 3 ngoõ vaøo vaø 8 ngoõ ra, coøn ñöôïc goïi laø maïch giaûi maõ nhò phaân sang octal (binary to octal decoder), vôùi ngoõ ra tích cöïc möùc 1, coù baûng söï thaät nhö sau Bảng sự thật C 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

A 0 1 0 1 0 1 0 1

Q0 1 0 0 0 0 0 0 0

Q1 0 1 0 0 0 0 0 0

Q2 0 0 1 0 0 0 0 0

Q3 0 0 0 1 0 0 0 0

Q0 = C.B.A A (LSB)

Q3 = C.BA Q4 = CB.A

Q7 = CBA

Q6 0 0 0 0 0 0 1 0

Q7 0 0 0 0 0 0 0 1

Q1 = C.B.A Q2 = C.BA

B

Q3 = C.BA

Q5 = CB.A Q6 = CB.A

Q5 0 0 0 0 0 1 0 0

Q0 = C.B.A

Q1 = C.B.A Q2 = C.BA

Q4 0 0 0 0 1 0 0 0

C (MSB)

Q4 = CB.A Q5 = CB.A

Tröôøng hôïp ngoõ ra tích cöïc möùc 0 laøm töông töï

Q6 = CB.A Q7 = CBA Trang 53

Bài Giảng Kỹ Thuật Số

Chương 3

3.5.2. Ngõ vào cho phép Ña soá caùc boä giaûi maõ ñeàu coù moät hoaëc nhieàu ngoõ vaøo cho pheùp ñeå ñieàu khieån hoaït ñoäng cuûa boä giaûi maõ. Ví dụ, xeùt boä giaûi maõ ôû treân, keát noái moãi coång AND ngoõ ra vôùi chaân ñieàu khieån cho pheùp chung ENABLE. Khi ENABLE=1, cho pheùp coång AND hoaït ñoäng bình thöôøng ôû cheá ñoä giaûi maõ, khi ENABLE ôû möùc thaáp ngoõ ra cuûa caùc coång AND ñöôïc ñaët ôû möùc 0, nghóa laø maïch cho pheùp giaûi maõ öùng vôùi ngoõ ENABLE=1 vaø khoâng cho pheùp öùng vôùi ENABLE=0 3.5.3. Giải mã 3 sang 8 dùng IC74LS138 G2A

G2B

G1

Output

0

0

1

Ngoõ ra tích cöïc theo maõ cuûa A2A1A0

1

x

x

Khoâng giaûi maõ, ngoõ ra ôû möùc cao

x

1

x

Khoâng giaûi maõ, ngoõ ra ôû möùc cao

x

x

0

Khoâng giaûi maõ, ngoõ ra ôû möùc cao

(MSB) A2

A1

A B C

G1 G2A G2B 74LS138

G2A G2B G1

A0 (LSB)

74LS11

Y7

Y6

Y5

Y4

Y3

Y2

Y1

Ví dụ Xaùc ñònh ngoõ ra naøo cuûa 74LS138 tích cöïc öùng vôùi caùc ngoõ vaøo nhö sau: G2A = 0; G2B = G1=1 ; A2 = A1 = 1 ; A0 = 0 G2A = G2B = 0 ; G1=1 ; A2 = 0 ; A1 = A0 = 1

Trang 54

Y0

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

Bài Giảng Kỹ Thuật Số

Chương 3

3.5.4. Ghép các bộ giải mã liên tầng Coù theå gheùp caùc boä giaûi maõ lieân taàng ñeå coù theå giaûi maõ ñöôïc töø maõ lôùn hôn. Ví dụ, keát hôïp 2 boä giaûi maõ 3 sang 8 ñeå taïo thaønh 1 boä giaûi maõ 4 sang 16 A0 A1 A2

A B C HI

G1 G2A G2B

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC0 DEC1 DEC2 DEC3 DEC4 DEC5 DEC6 DEC7

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC8 DEC9 DEC10 DEC11 DEC12 DEC13 DEC14 DEC15

74LS138

A B C

A3 EN

G1 G2A G2B 74LS138

EN=0 cho pheùp maïch giaûi hoaït ñoäng Ñoái vôùi caùc boä giaûi maõ lôùn hôn, coù theå theâm vaøo 1 boä giaûi maõ nhö sau A0 A1 A2

A B C G1 G2A G2B

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC0 DEC1 DEC2 DEC3 DEC4 DEC5 DEC6 DEC7

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC8 DEC9 DEC10 DEC11 DEC12 DEC13 DEC14 DEC15

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC16 DEC17 DEC18 DEC19 DEC20 DEC21 DEC22 DEC23

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

DEC24 DEC25 DEC26 DEC27 DEC28 DEC29 DEC30 DEC31

74LS138 A B C G1 G2A G2B

EN3 A3 A4

G A B

Y0 Y1 Y2 Y3

A B C G1 G2A G2B

74LS139A

A B C

EN1 EN2

G1 G2A G2B

Ví dụ Söû duïng 4 IC 74LS138 vaø moät coång ñaûo, thieát keá maïch giaûi maõ 5 sang 32

Trang 55

Bài Giảng Kỹ Thuật Số

Chương 3

3.5.5. Sử dụng bộ giải mã tạo các minterm Caùc ngoõ ra cuûa boä giaûi maõ (ôû cheá ñoä cho pheùp) töông öùng vôùi caùc minterm cuûa caùc ngoõ vaøo. Ví dụ caùc minterm cuûa caùc ngoõ ra 74LS138 nhö sau Y 0 = C.B.A , Y1 = C.BA , v.v. Neáu moät haøm logic coù caùc minterm nhö ngoõ ra cuûa boä giaûi maõ thì ta coù theå söû duïng boä giaûi maõ ñoù ñeå xaây döïng haøm treân Ví dụ Xeùt haøm F =



X ,Y , Z

(0,2,3,5) = X .Y .Z + X Y Z + X YZ + X Y Z

Coù theå thieát laäp haøm nhö sau: Z Y X

A B C

HI

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

G1 G2A G2B

F

74LS20

74LS138

Quaù trình thieát keá coù theå choïn caùch thieát keá naøy hoaëc caùch thieát keá khaùc tuøy thuoäc vaøo toác ñoä, giaù thaønh ... Giaûi phaùp söû duïng boä giaûi maõ raát thuaän tieän vì coù theå deã daøng thay ñoåi caùc minterm. Ngoaøi ra coù theå thieát keá nhieàu haøm logic ngoõ ra, ví duï söû duïng boä giaûi maõ vaø coång NAND thöïc hieän caùc haøm sau F=



X ,Y , Z

(2,4,5) , G =



X ,Y , Z

(0,1,3) , H =



X ,Y , Z

(3,6,7)

74LS138

Z Y X

F

A B C HI

Y0 Y1 Y2 Y3 Y4 G1 Y5 G2B Y6 G2A Y7

74LS10

G

H 3.5.6. Giải mã 7 đoạn Boä giaûi maõ 7 ñoaïn coù 4 ngoõ vaøo theo maõ BCD vaø 7 ngoõ ra öùng vôùi maõ 7 ñoaïn Boä hieån thò 7 ñoaïn coù theå laø LED 7 ñoaïn hoaëc baèng tinh theå loûng (LCD liquid– crystal display) ñöôïc söû duïng trong caùc maùy tính tay hieån thò giaù trò thaäp phaân. LED 7 ñoaïn coù 2 loaïi: loaïi anode chung vaø loaïi cathode chung

Trang 56

a f

b

g

e

c d

Bài Giảng Kỹ Thuật Số

Chương 3 +Vcc

a

a

b

b

c

c

d

d

e

e

f

f

g

g

LED 7 ñoaïn Cathode chung

LED 7 ñoaïn Anode chung

Ví dụ 74LS49 coù ngoõ ra tích cöïc möùc cao, LED töông öùng laø cathode chung nhö hình beân Bảng sự thật của 74LS49 (tra phần phụ lục)

BI OA OB OC A OD B OE C OF D OG

74LS49

Ví dụ: 74LS47 vôùi ngoõ ra tích cöïc möùc thaáp, söû duïng LED töông öùng laø cathode chung nhö sau HI

BI/RBO A RBI LT B C A D B E C F D G

74LS47

Tính toaùn caùc giaù trò ñieän trôû baèng coâng thöùc sau R=

VCC − VLED I LED

VLED khoaûng 2,7V, ILED khoaûng 10mA, vaäy R = 230 Ω LED tinh thể lỏng LCD LCD hoaït ñoäng vôùi möùc ñieän aùp thaáp (khoaûng 3 ñeán 15VRMS) taàn soá hoaït ñoäng thaáp (25 ñeán 60hz) vaø doøng cung caáp raát beù vaø cuõng ñöôïc theå hieän 7 ñoaïn gioáng nhö LED 7 ñoaïn

a b c d e f g Blackblane

Trang 57

Bài Giảng Kỹ Thuật Số

Chương 3

Ñieän aùp ac caàn ñeà laøm töøng ñoaïn saùng laø ñieän aùp giöõa ñoaïn ñoù vôùi blackblane. Giöõa segment vaø blackblane hình thaønh moät ñieän dung. Taàn soá thaáp nhaát cuûa ñieän aùp ac laø 25hz LCD söû duïng doøng ít hôn LED vaø thöôøng ñöôïc söû duïng ôû caùc thieát bò duøng pin nhö maùy tính… vaø noù caàn theâm nguoàn naêng löôïng ngoaøi laø aùnh saùng ñeå coù theå thaáy ñöôïc. Ñeå laùi moät LCD, theo nguyeân taéc 1 segment seõ saùng khi coù moät ñieän aùp ac ñaët giöõa segment vaø blackblane, vaø segment seõ taét khi khoâng coù aùp ac naøy. Ñeå coù moät ñieän aùp ac ngöôøi ta taïo ra moät soùng vuoâng nhö sau Control

Segmen 40hz signal

4070

Blackblane Phöông phaùp ñeå laùi moät LCD 7 ñoaïn nhö sau 4070

A B C D

A B C D E F G

LT BI LE 4511

LCD

40hz

Blackblane

3.5.7. Giải mã BCD sang 10 dùng IC74LS42 Caùch thieát keá maïch giaûi maõ BCD sang thaäp phaân thì töông töï nhö caùch thieát keá maïch 3 sang 8 (xem nhö moät baøi taäp veà nhaø). IC giaûi maõ BCD sang thaäp phaân: 74LS42 baûng söï thaät tra phaàn phuï luïc

Y0 Y1 Y2 B Y3 Y4 C Y5 Y6 D Y7 Y8 Y9 A

74LS42 Trang 58

Bài Giảng Kỹ Thuật Số 3.6.

Chương 3

MAÏCH MAÕ HOÙA (ENCODER)

Ngöôïc vôùi quaù trình giaûi maõ laø quaù trình maõ hoùa vaø ñöôïc thöïc hieän bôûi maïch logic maõ hoùa. Chæ moät ngoõ vaøo cuûa boä maõ hoùa ñöôïc tích cöïc, vaø töø maõ N-bit ngoõ ra tuøy thuoäc vaøo ngoõ vaøo naøo ñöôïc tích cöïc N input

A0

O0

A1

O1

Encoder

A2

M

O2

AN-1

output

OM-1

3.6.1. Maõ hoùa 8 sang 3 (octal sang nhò phaân) Baûng sö thaät vaø maïch logic cho maïch maõ hoùa octal – binary vôùi ngoõ vaøo tích cöïc möùc thaáp A0 x x x x x x x x

A1 1 0 1 1 1 1 1 1

8 input

A2 1 1 0 1 1 1 1 1

A3 1 1 1 0 1 1 1 1

A4 1 1 1 1 0 1 1 1

A5 1 1 1 1 1 0 1 1

A6 1 1 1 1 1 1 0 1

A7 1 1 1 1 1 1 1 0

A0 A1 A2 A3 A4 A5 A6 A7

Q2 0 0 0 0 1 1 1 1

Q1 0 0 1 1 0 0 1 1

Q0 0 1 0 1 0 1 0 1

Q0 LSB

Q1

Q2 MSB

Löu yù raèng A0 khoâng keát noái trong maïch vì ngoõ ra boä maõ hoùa maëc ñònh baèng 000 khi khoâng coù ngoõ vaøo naøo tích cöùc möùc thaáp Ví dụ Xaùc ñònh caùc ngoõ ra cuûa boä giaûi maõ treân khi A3 =A5 =0 3.6.2. Maõ hoùa öu tieân Töø ví duï treân thaáy raèng khi coù 2 ngoõ vaøo tích cöïc cuøng luùc ñoái vôùi moät boä maõ hoùa ñôn giaûn seõ daãn ñeán keát quaû khoâng mong muoán.

Trang 59

Bài Giảng Kỹ Thuật Số

Chương 3

Ñeå traùnh tình traïng treân, thöôøng söû duïng boä maõ hoùa öu tieân. Khi coù 2 hay nhieàu ngoõ vaøo cuøng tích cöïc thì ngoõ ra seõ töông öùng vôùi ngoõ vaøo coù ñoä öu tieân cao nhaát. Ví dụ Khi A3 =A5 =0 thì ngoõ ra eõ töông öùng vôùi A5 nghóa laø 101. Xeùt moät heä thoáng vôùi 2n ngoõ vaøo, moãi ngoõ vaøo bieåu thò cho moät yeâu caàu cuûa moät thieát bò nhö sau: REQ 1 REQ 2 REQ 3

Request for service

Request encoder

Requestor’s number

REQ N

Ñaây laø moät caáu truùc thöôøngñöôïc söû duïng trong moät heä thoáng con input/output cuûa boä vi xöû lyù, ôû ñaây caùc ngoõ vaøo laø caùc yeâu caàu ngaét. Ñeå giaûi baøi toaùn öu tieân ñoái vôùi caùc ngoõ vaøo nghóa laø khi coù nhieàu yeâu caàu cuøng moät luùc, ta vieát bieåu thöùc logic cho ngoõ ra cuûa boä maõ hoùa öu tieân. Ví dụ Vôùi maïch maõ hoùa öu tieân 8-3 nhö sau I0 1 x x x x x x x

I1 0 1 x x x x x x

I2 0 0 1 x x x x x

I3 0 0 0 1 x x x x

I4 0 0 0 0 1 x x x

I5 0 0 0 0 0 1 x x

I6 0 0 0 0 0 0 1 x

I7 0 0 0 0 0 0 0 1

A2 0 0 0 0 1 1 1 1

A1 0 0 1 1 0 0 1 1

Ñònh nghóa 8 bieán trung gian H0 ñeán H7 nhö sau: H7 = I7 H6 = I6I7 H5 = I5I6.I7 … H0 = I0.I1.I2.I3.I4.I5.I6.I7 Töø bieåu thöùc trung gian, vieát laïi bieåu thöùc ngoõ ra nhö sau: A2 = H4 + H5 + H6 + H7 A1 = H2 + H3 + H6 + H7 A0 = H1 + H3 + H5 + H7

Trang 60

A0 0 1 0 1 0 1 0 1

Bài Giảng Kỹ Thuật Số

Chương 3

74148 laø boä maõ hoùa öu tieân octal to binary I7 coù ñoä öu tieân cao nhaát. 74LS148 coù hai ngoõ ra GS vaø E0. Ngoõ GS (Group Select) tích cöïc möùc 0 khi maïch hoaït ñoäng ôû cheá ñoä maõ hoùa vaø coù 1 trong soá caùc ngoõ vaøo ñang tích cöïc. E0 (enable output) tích cöïc möùc 0 khi EI tích cöïc möùc 0 vaø khoâng coù ngoõ vaøo naøo tích cöïc.

IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 EI

A0 A1 A2 GS E0

74LS148

Ví dụ Söû duïng 74LS148 thieát keá maïch maõ hoùa öu tieân 32 ngoõ vaøo, 5bit ngoõ ra: RA4 ñeán RA0 74147 laø boä maõ hoùa öu tieân 10 ñöôøng sang BCD Khi khoâng coù ngoõ vaøo naøo ñöôïc taùc ñoäng, ngoõ ra seõ laø 1111, vì ngoõ ra laø ngoõ ra ñaûo neân ñaûo cuûa 1111 laø 0000, giaù trò BCD laø 0 neân IC 74LS147 khoâng coù ngoõ vaøo IN0, khi ngoõ vaøo IN9 ôû möùc thaáp, thì ngoõ ra töông öùng laø 0110, ñaûo laïi 1001 töông öùng vôùi maõ BCD laø 9. Vì caùc ngoõ ra laø ñaûo cho neân ñeå coù ñöôïc maõ BCD ñuùng ôû ngoõ ra ngöôøi ta theâm caùc coång ñaûo cho moãi ngoõ ra

IN1 IN2

A

IN3 IN4

B

IN5 IN6

C

IN7 IN8

D

IN9 74LS147

Maõ hoùa baøn phím HI

S0 S1 74LS04 S2 S3 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 IN9

S4 S5 S6 S7

A B C

BCD

D

74LS147

S8 S9

Caùc phím coù theå laø baøn phím töø 0 ñeán 9 trong maùy tính. Khi moät phím ñöôïc nhaán, ngoõ ra seõ laø maõ BCD cuûa phím nhaán ñoù. Khi coù 2 phím ñöôïc nhaán cuøng luùc thì phím ngoõ ra seõ laø maõ BCD cuûa phím öu tieân cao nhaát Trang 61

Bài Giảng Kỹ Thuật Số

Chương 3

3.7. BOÄ CHOÏN KEÂNH (MULTIPLEXERS) Moät boä choïn keânh töông töông vôùi boä chuyeån maïch soá, noù keát noái data töø n nguoàn khaùc nhau. Ngoõ ra seõ choïn moät trong caùc nguoàn data ngoõ vaøo tuøy thuoäc vaøo caùc ngoõ löïa choïn Multiplexer Enable Select

EN s s s

n data sources

SEL

s

D1

s

D0

s

D1

s

Y s

s

D0

Data output

Dn-1

Data output

Dn-1

Selector Enable

Vôùi 2n ngoõ vaøo thì caàn n bit select 3.7.1. Maïch choïn keânh 2 ngoõ vaøo cô baûn Select 0 1

I1

Output Z=I0 Z=I1

74LS08

I0

Z=I0 .S+I1.S

Z 74LS32

1

74LS04

3.7.2. Maïch choïn keânh 4 ngoõ vaøo

S

I0

S1

S0

Output

0

0

Z=I0

0

1

Z=I1

1

0

Z=I2

1

1

Z=I3

74LS11 74LS04

I1 Z I2 1

I3

SELECT S1

GV: Nguyễn Trọng Hải

Trang 62

S0

Bài Giảng Kỹ Thuật Số

Chương 3

3.7.3. Maïch choïn keânh 8 ngoõ vaøo 74LS151

74LS151 G 1 0 0 0 0 0 0 0 0

C x 0 0 0 0 1 1 1 1

B x 0 0 1 1 0 0 1 1

A x 0 1 0 1 0 1 0 1

G

Y 0 D0 D1 D2 D3 D4 D5 D6 D7

D0 D1 Y D2 D3 D4 D5 W D6 D7 A B C

W= Y Ví dụ Duøng 2 IC 74ls151 vaø 1 coång ñaûo, moät coång OR thieát keá maïch choïn keânh 16 ngoõ vaøo, 1 ngoõ ra vaø 4 ngoõ select S0, S1, S2, S3 3.7.4. Maïch choïn keânh 2 nhoùm ngoõ vaøo 74LS157 1A 1B 2A 2B 3A 3B 4A 4B

74LS157 chöùa 2 nhoùm ngoõ vaøo nhö hình sau

G

A /B X 0 1

1 0 0

1Y

2Y

3Y

4Y

0 1A 1B

0 2A 2B

0 3A 3B

0 4A 4B

1Y 2Y 3Y 4Y

A/B G 74LS157

3.7.5. Caùc öùng duïng cuûa maïch choïn keânh

Caùc boä choïn keânh coù nhieàu öùng duïng khaùc nhau trong caùc heä thoáng soá. Caùc öùng duïng bao goàm: choïn data, hoïat ñoäng tuaàn töï, chuyeån ñoåi song song sang noái tieáp, taïo daïng soùng, taïo caùc haøm logic... phaàn naøy seõ ñeà caäp ñeán moät soá öùng duïng, moät soá coøn laïi seõ ñöôïc xeùt ñeán ôû caùc chöông sau Mạch tạo hàm logic Ví dụï. Thöïc hieän baûng söï thaät sau söû duïng multiplexer

C 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

A 0 1 0 1 0 1 0 1

Z 0 1 1 0 0 0 0 1

Các biến ngõ vào

G C B A D7D6D5D4D3D2D1D0

74LS151 Y=Z

Z=A.B.C+ABC+ABC

Z=A.B.C+ABC+ABC

GV: Nguyễn Trọng Hải

HI

Trang 63

W

Bài Giảng Kỹ Thuật Số

Chương 3

Mux coù theå ñöôïc duøng ñeå thöïc hieän caùc haøm logic tröïc tieáp töø baûng söï thaät maø khoâng caàn ñôn giaûn hoaù haøm logic. Khi söû duïng Mux vaøo muïc ñích naøy, caùc ngoõ select ñöôïc söû duïng nhö caùc bieán logic vaø moãi ngoõ vaøo data ñöôïc noái vôùi möùc 1 hay 0 sao cho thoûa maõn baûng söï thaät. Định hướng data MUX coù theå ñònh höôùng data töø nhieàu nguoàn data thaønh 1 nguoàn ñích. Ví dụ, söû duïng 74LS157 ñeå choïn vaø hieån thò noäi dung cuûa hai boä ñeám BCD. Counter 1 BCD counter

Counter 2 Clock 1

BCD counter

Clock 2

BCD counter

BCD counter

select display G A/B 4B

2B 4A 2A 3B 1B 3A 1A

G A/B 4B

2B 4A 2A 3B 1B 3A 1A

74LS157

4Y 3Y 2Y 1Y 4Y 3Y 2Y 1Y

74LS157

74LS47

D

C G F

B

A

LT RBI RB0

E D C B A

D

C G F

B

A

LT RBI RB0

74LS47

E D C B A

Moãi boä ñeám bao goàm 2 soá ñeám BCD. Khi select=1, ngoõ ra cuûa boä ñeám 1 seõ hieån thò leân LED 7 ñoaïn, khi select=0, ngoõ ra cuûa boä ñeám 2 seõ hieån thò leân LED 7 ñoaïn. Baèng caùch naøy, noäi dung cuûa caùc boä ñeám seõ ñöôïc hieån thò thoâng qua ngoõ select. Maïch ñònh höôùng naøy thöôøng ñöôïc öùng duïng trong caùc ñoàng hoà ñieän töû soá, ôû ñoù coù caùc boä ñeám vaø caùc thanh ghi nhö giaây, phuùt, giôø, thaùng, vaø baùo thöùc, v.v… Moät maïch MUX nhö treân seõ cho pheùp caùc data khaùc nhau ñöôïc hieån thò leân treân maøn hình coù soá LED hieån thò laø giôùi haïn

GV: Nguyễn Trọng Hải

Trang 64

Bài Giảng Kỹ Thuật Số

Chương 3

Muïc ñích cuûa kyõ thuaät Multiplex laø ñeà chia seû thôøi gian hieån thò giöõa hai hay nhieàu boä ñeám, vaø ñieàu quan troïng hôn nöõa laø tieát kieäm ñöôïc naêng löôïng, bôûi vì moät löôïng lôùn caùc boä giaûi maõ vaø LED hieån thò seõ tieâu toán moät doøng lôùn Tuy nhieân kyõ thuaät naøy cuõng coù nhöôïc ñieåm laø noäi dung cuûa caùc boä ñeám chæ hieån thò 1 laàn taïi moät thôøi ñieåm, tuy nhieân trong nhieàu öùng duïng, ñieàu naøy coù theå boû qua Mạch chuyển đổi song song sang nối tiếp (parallel to serial converter) Nhieàu heä thoáng soá xöû lyù caùc data nhò phaân ôû daïng song song (xöû lyù caùc bit ñoàng thôøi) vì toác ñoä xöû lyù nhanh hôn. Khi data ñöôïc truyeàn treân moät khaûng caùch xa, giaûi phaùp truyeàn song song seõ caàn ñeán moät löôïng daây noái lôùn. Vì lyù do naøy, caùc data nhò phaân hoaëc caùc thoâng tin ôû daïng song song ñöôïc chuyeån thaønh daïng noái tieáp tröôùc khi ñöôïc truyeàn treân moät khoaûng caùch xa. Moät phöông phaùp ñeå bieán ñoåi song song sang noái tieáp laø söû duïng boä Multiplexer nhö sau:

Mạch đếm 3 bit

X0 X1 X2 X3 X4 X5 X6 X7

D0 D1 D2 D3 D4 D5 D6 D7

W

Y

Z

A B C G 74LS151

Moät boä ñeám 3 bit ñöôïc söû duïng ñeå cung caáp caùc bit maõ choïn CBA töø 000 ñeán 111, baèng caùch naøy ngoõ ra cuûa Mux seõ choïn töøng keânh Xi theo moãi xung clock, ví duï, xung clock ñaàu tieân CBA = 000 ngoõ ra seõ laø X0, xung clock thöù hai CBA = 001 ngoõ ra seõ laø X1, cöù nhö theá ngoõ ra Z seõ laø caùc ngoõ vaøo nhö ôû daïng noái tieáp X7X6X5X4X3X2X1X0 vôi X0 laø LSB ñöôïc truyeàn tröôùc vaø X7 laø MSB ñöôïc truyeàn cuoái cuøng 3.8. MAÏCH PHAÂN KEÂNH (DEMULTIPLEXERS) DeMux Enable Select

s

EN s

SEL O0

Data Intput

s

O1

On-1

s s

s

s

`On-1

s

Trang 65

O1

s

Data intput

Selector

GV: Nguyễn Trọng Hải

O0

Bài Giảng Kỹ Thuật Số

Chương 3

Maïch phaân keânh ngöôïc laïi vôùi maïch choïn keânh. DeMUX coù moät ngoõ vaøo vaø nhieàu ngoõ ra. Ngoõ vaøo ñieàu khieån choïn (select) seõ xaùc ñònh ngoõ ra maø ngoõ vaøo seõ ñöôïc truyeàn ñeán 3.8.1. Maïch phaân keânh 1 sang 8

S2 0 0 0 0 1 1 1 1

Select S1 0 0 1 1 0 0 1 1

S0 0 1 0 1 0 1 0 1

Y7 0 0 0 0 0 0 0 In

Y6 0 0 0 0 0 0 In 0

Y5 0 0 0 0 0 In 0 0

Output Y4 Y3 0 0 0 0 0 0 0 In In 0 0 0 0 0 0 0

Y2 0 0 In 0 0 0 0 0

Y1 0 In 0 0 0 0 0 0

Y0 In 0 0 0 0 0 0 0

Töø baûng söï thaät vieát ñöôïc caùc bieåu thöùc ngoõ ra nhö sau Y7 = In.(S 2 S1S 0 ) , Y6 = In.(S 2 S1 S 0 ) , Y5 = In.(S 2 S1S 0 ) , … Y0

S2

Y1

S1

S0 Y7 In

3.8.2. Maïch phaân keânh 1 sang 8 vaø maïch choïn xung clock duøng 74LS138 Phaàn tröôùc ñaõ khaûo saùt 74LS138 laøm nhieäm vuï giaûi maõ, ñeán ñaây seõ tieáp tuïc öùng duïng 74LS138 laøm boä phaân keânh data vaø maïch choïn xung clock S0 S1 S2

DATA

HI

A B C G1 G2A G2B

S0 S1 S2

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

HI

74LS138

GV: Nguyễn Trọng Hải

A B C G1 G2A G2B

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

74LS138

Trang 66

Shift Register Counter

Bài Giảng Kỹ Thuật Số

Chương 3

3.8.3. Maïch choïn xung clock Coù raát nhieàu öùng duïng döïa vaøo nguyeân lyù DeMUX. Sau ñaây söû duïng 74LS138 laøm boä choïn clock 3.9. MAÏCH SOÁ HOÏC 3.10.1.

Maïch coäng baùn phaàn

A 0 0 1 1

B 0 1 0 1

S 0 1 1 0

COUT 0 0 0 1

A

S

A B

B COUT

S

Cout

S=AB+AB

COUT = AB 3.10.2.

CIN 0 0 0 0 1 1 1 1

Maïch coäng toaøn phaàn

A 0 0 1 1 0 0 1 1

B 0 1 0 1 0 1 0 1

S 0 1 1 0 1 0 0 1

COUT 0 0 0 1 0 1 1 1

A B Cin

A B

S

S Cout

CIN COUT

Ví dụ, Thieát keá maïch coäng toaøn phaàn töø maïch coäng baùn phaàn Ví dụ, Thieát keá maïch coäng hai soá nhò phaân 4 bit (a3a2a1a0 + b3b2b1b0 =S4S3S2S1S0 ) töø maïch coäng baùn phaàn vaø toaøn phaàn IC cộng toàn phần

Cin Cout B S A 74LS183 Cộng toàn phần 1 bit

A4 Cout A3 S4 A2 A1 S3 B4 B3 S2 B2 B1 Cin S1 74LS83 Cộng toàn phần 4 bit

GV: Nguyễn Trọng Hải

Trang 67

Bài Giảng Kỹ Thuật Số 3.10.3.

Chương 3

Maïch coäng nhìn tröôùc soá nhôù

ÔÛ maïch coäng nhieàu bit, pheùp coäng haøng cao hôn caàn soá nhôù laàn coäng haøng keá tröôùc. Thôøi gian trì hoaõn naøy laø lôùn ñoái vôùi caùc pheùp tính nhanh. Ñeå khaéc phuïc phaûi theâm maïch logic ñeå taïo tröïc tieáp soá nhôù goïi laø maïch coäng nhìn tröôùc soá nhôù (toác ñoä coäng ñoäc laäp vôùi soá bit) Goïi

Pi =A i ⊕ Bi

Pi

A B

Gi =A iBi

S

⇒ phöông trình coäng toaøn phaàn Ci

Si =Pi ⊕ Ci-1 Gi

Ci-1

Ci =Gi +PC i i-1

Ñeå hieåu roõ yù nghóa cuûa coäng nhìn tröôùc soá nhôù, vieát phöông trình C0, C1, C2, C3 vaø nhaän xeùt caùc bieán logic chöùa trong caùc phöông trình ñoù (xem nhö moät baøi taäp) 3.10.4.

Maïch coäng BCD

Ñoái vôùi maïch coäng BCD, neáu ñaàu ra toång khoâng phaûi laø soá BCD thì keát quaû phaûi ñöôïc coäng theâm 6 BCD BCD A

B

A3 A2A1A0 B3 B2B1B0 Cin C4 S3 S2S1S0

A3 A2A1A0 B3 B2B1B0 Cin C4 S3 S2S1S0

BCD

thứ hai GV: Nguyễn Trọng Hải

Trang 68

BCD

thứ nhất

Bài Giảng Kỹ Thuật Số

Chương 3

3.10. MAÏCH CHUYEÅN MAÕ Maïch chuyeån ñoåi maõ thay ñoåi döõ lieäu nhò phaân töø daïng naøy sang daïng khaùc Ví dụ, •

BCD - LED 7 ñoaïn



BCD – nhò phaân



Nhò phaân – BCD



Nhò phaân – Gray



Gray – nhò phaân

3.10.5.

Maïch chuyeån ñoåi BCD sang nhò phaân

Bước 1. Xaùc ñònh soá bit nhò phaân cho maïch chuyeån ñoåi. Ví dụ, ñeå chuyeån ñoåi 2 chöõ soá BCD caàn 7bit nhò phaân, vì giaù trò lôùn nhaát 99 cuûa BCD ñoåi sang nhò phaân laø 1100011 Bước 2. Tính toång cuûa caùc soá nhò phaân töông ñöông vôùi bit 1 (theo troïng soá cuûa maõ BCD) Ví dụ, (52)10 coù maõ BCD laø 01010010, toång nhò phaân laø 80 0

40 1

20 0

10 1

8 0

4 0

2 1

1 0

Troïng soá BCD BCD 0000010 0001010 0101000 0110100

(maõ nhò phaân cho 2) (maõ nhò phaân cho 10) (maõ nhò phaân cho 40) (maõ nhò phaân cho 52)

Bước 3. Xaây döïng maïch söû duïng maïch coäng nhò phaân Ví dụ, Baûng coäng cho soá BCD coù 2 chöõ soá Maõ nhò phaân töông ñöông Bit BCD Troïng soá b6 b5 b4 b3 b2 b1 A0 1 0 0 0 0 0 0 B0 2 0 0 0 0 0 1 4 0 0 0 0 1 0 C0 D0 8 0 0 0 1 0 0 A1 10 0 0 0 1 0 1 B1 20 0 0 1 0 1 0 40 0 1 0 1 0 0 C1 D1 80 1 0 1 0 0 0 Vaäy

b0 = A0; b1 = B0 + A1; b2 = C0 + B1; b3 = D0 + A1 + C1; b4 = B1 + D1; b5 = C1; b6 = D1;

GV: Nguyễn Trọng Hải

Trang 69

b0 1 0 0 0 0 0 0 0

Bài Giảng Kỹ Thuật Số

Chương 3

D1 C1 B1 A1 D0 C0 B0 A0

A3 A2A1A0 B3 B2B1B0 Cin

C4 B3 B2B1B0

S3 S2S1S0

A3 A2 A1A0 B3 B2B1B0 Cin

C4 B3 B2 B1B0

S3 S2S1S0

b6

b5

b4

b3

b2

b1

b0

IC 74184. Chuyeån maõ BCD sang nhò phaân Các đầu vào BCD từ 00 đến 39

A0 B0 C0 D0 A1 B1

b0 A B C D E G

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8

b1 b2 b3 b4 b5

Các đầu ra nhị phân

A B C D 1

Các đầu vào BCD

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8

A B C D E G

TA TB TC TD

Các đầu bù 10 của BCD

74184

74184

Ví dụ, Tra baûng hoïat ñoäng cuûa 74184, ñöa ra sô ñoà noái daây chuyeån maõ BCD sang maõ buø 9 cuûa noù Ví dụ, Töø 2 IC 74184, thieát keá maïch ñoåi moät soá BCD 2 chöõ boá sang 7bit nhò phaân 3.10.6.

Maïch chuyeån ñoåi nhò phaân sang BCD Các đầu vào nhị phân 6 bit

b0 b1 b2 b3 b4 b5

A0 A B C D E G

Y1 Y2 Y3 Y4 Y5 Y6 74185

GV: Nguyễn Trọng Hải

Trang 70

B0 C0 D0 A1 B1 C1

Các đầu ra BCD

Bài Giảng Kỹ Thuật Số

Chương 3

Bài tập chương 3

3.1. Đơn giản mạch sau dùng đại số Boolean M N O X

3.2. Thiết kế mạch điện logic tương ứng với bảng sự thật sau A B C Y 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 3.3. Thiết kế mạch điện logic có 3 ngõ vào A, B và C.Ngõ ra ở mức HIGH chỉ khi có 2 ngõ vào là mức LOW. 3.4. Một số nhị phân 4 bit được ký hiệu là A3A2A1A0, với A0 là bit LSB, thiết kế mạch logic mà ngõ ra ở mức HIGH khi các số nhị phân lớn hơn 0010 và nhỏ hơn 1000. 3.5. Thực thi mạch điện ở bài 3.3 dùng tất cả là cổng NAND 3.6. Thực thi mạch điện ở bài 3.4 dùng tất cả là cổng NAND 3.7. Một bộ đếm BCD với ngõ ra 4 bit mã BCD hiển thị số xung được đưa vào bộ đếm. Thí dụ, sau 4 xung, ngõ ra của bộ đếm là DCBA = 01002 = 410. Bộ đếm Reset về 0000 tại xung thứ 10 và bắt đầu đếm trở lại. Nói cách khác, ngõ ra DCBA không bao giờ biểu diễn giá trị lớn hơn 10012 = 910. Hãy thiết kế mạch logic với ngõ ra ở mức HIGH khi đếm số 2, 3, 9. D

BCD Counter

C B A

Logic circuit

X

3.8. Hình sau biểu diễn 4 công tắc trong mạch điều khiển máy copy. Thông thường các công tắc này mở (open). Khi có giấy đi qua công tắc thì đóng (close). Công tắc 1 và 4 không thể đóng (close) tại cùng 1 thời điểm. Hãy thiết GV: Nguyễn Trọng Hải

Trang 71

Bài Giảng Kỹ Thuật Số

Chương 3

kế 1 mạch logic với ngõ ra mức HIGH khi 2 công tắc hay nhiều hơn cùng đóng. +5V SW1 SW2 SW3 SW4

+5V +5V +5V

Logic circuit

X

3.9. Hình sau thể hiện mạch nhân hai số nhị phân 2 bit x1x0 và y1y0, ngõ ra là số nhị phân z3z2z1z0 tương đương với tích đại số của 2 số ngõ vào. Hãy thiết kế mạch logic cho mạch nhân. X1

Z3 MSB

X0

Z2

Multiplier circuit

Y1

Z1 Z0 LSB

Y0

3.10. Một mã BCD được truyền tới thiết bị nhận ở xa, các bit là A3A2A1A0, với A3 là bit MSB. Mạch nhận gồm 1 mạch phát hiện lỗi BCD để kiểm tra mã nhận. Thiết kế mạch kiểm tra tạo mức HIGH nếu có bất kỳ điều kiện lỗi nào xảy ra. 3.11. Thiết kế mạch logic với điều kiện: tín hiệu ngõ vào A đến ngõ ra Y chỉ khi ngõ vào điều khiển B ở mức LOW và ngõ vào điều khiển C ở mức HIGH, các trường hợp còn lại ngõ ra ở mức LOW. 3.12. Thiết kế mạch logic điều khiển sự đi qua của 1 tín hiệu A theo các yêu cầu sau: 1. Ngõ ra X = A khi ngõ vào điều khiển B và C giống nhau. 2. X duy trì mức HIGH khi B và C khác nhau. 3.13. Thiết kế mạch logic có yêu cầu cho ở hình sau. A1 Multiplexer A0

Z

S 0 1

Z A0 A1

S 3.14. Trong máy tính, bộ vi xử lý (microprocessor unit = MPU) luôn được kết nối với 1 trong các phần sau: (1) bộ nhớ truy cập ngẫu nhiên (RAM = randomaccess memory), lưu trữ các chương trình và dữ liệu mà nó có thể được thay đổi 1 cách nhanh chóng; (2) bộ nhớ chỉ đọc (read-only memory), lưu trữ các chương trình và dữ liệu mà không khi nào thay đổi; (3) thiết bị vào ra bên GV: Nguyễn Trọng Hải

Trang 72

Bài Giảng Kỹ Thuật Số

Chương 3

ngoài (I/O) chẳng hạn như keyboard, máy in. Khi thực thi 1 chương trình, MPU sẽ tạo ra một mã địa chỉ mà nó chọn loại thiết bị (RAM,ROM or I/O) muốn thực thi. Hình sau chỉ ra 1 cách kết nối tiêu biểu ở đó MPU xuất ra 1 mã địa chỉ 8 bit A15-A8. Thực ra MPU xuất ra 1 mã địa chỉ 16 bit, nhưng các bit thấp A7-A0 không dùng cho quá trình chọn thiết bị. Mã địa chỉ được cấp tới 1 mạch logic để tạo ra các tín hiệu chọn thiết bị RAM, ROM, và I/O. A15 A14 A13 A12 A11 A10

RAM

A9 A8

I/O ROM

MPU

Phân tích mạch và xác định những điều sau: (a) Khoảng địa chỉ A15-A8 mà nó tích cực RAM (b) Khoảng địa chỉ A15-A8 mà nó tích cực I/O (c) Khoảng địa chỉ A15-A8 mà nó tích cực ROM Hãy biểu diễn các địa chỉ ở nhị phân và hex. 3.15. Cho haøm Boolean sau: Y =



DCBA

(3,5,6,11,12,13,14,15) + d (4,7,8,9)

a). Ruùt goïn haøm Y, bieåu dieãn haøm Y duøng coång logic b). Töø haøm Y ruùt goïn, bieán ñoåi laïi maïch logic duøng toaøn coång NOR c). Thöïc hieän haøm Y duøng MUX 8 sang 1 (74LS151)

3.16. Cho haøm Boolean sau: Y =



ABC

(0,1,4) + d (3,6)

a). Ruùt goïn haøm Y, bieåu dieãn haøm Y duøng coång logic b). Töø haøm Y ruùt goïn, bieán ñoåi laïi maïch logic duøng toaøn coång NAND c). Thöïc hieän haøm Y duøng giaûi maõ 3 sang 8 (74LS138)

GV: Nguyễn Trọng Hải

Trang 73

Bài Giảng Kỹ Thuật Số

Chương 4

CHÖÔNG 4. HEÄ TUAÀN TÖÏ 4.1.

TOÅNG QUAN Maïch logic tuaàn töï laø maïch coù caùc ngoõ ra tuøy thuoäc khoâng chæ vaøo traïng thaùi hieän taïi cuûa caùc ngoõ vaøo maø coøn tuøy thuoäc vaøo moät chuoãi caùc ngoõ vaøo tröôùc ñoù. Vieäc moâ taû moät maïch tuaàn töï baèng caùch laäp baûng quan heä ngoõ ra laø moät haøm cuûa chuoãi caùc ngoõ vaøo töø caùc traïng thaùi tröôùc ñoù ñeán traïng thaùi hieän taïi thöôøng thì khoâng thuaän tieän hay khoâng theå thöïc hieän ñöôïc. Traïng thaùi cuûa moät maïch tuaàn töï laø moät söï taäp hôïp caùc bieán traïng thaùi maø giaù trò cuûa noù taïi baát cöù moät thôøi ñieåm naøo ñeàu chöùa ñöïng taát caû caùc thoâng tin veà caùc traïng thaùi tröôùc ñoù ñeå giaûi thích caùc taùc ñoäng sau ñoù cuûa maïch Caùc bieán traïng thaùi khoâng caàn phaûi coù yù nghóa vaät lyù tröïc tieáp, vaø thöôøng coù nhieàu caùch choïn chuùng ñeå moâ taû moät maïch tuaàn töï ñaõ cho. Trong caùc maïch logic soá, caùc bieán traïng thaùi coù giaù trò nhò phaân töông öùng vôùi tín hieäu logic naøo ñoù trong maïch. Moät maïch vôùi n bieán traïng thaùi nhò phaân seõ coù 2n traïng thaùi xaûy ra, vaø 2n luoân laø giaù trò giôùi haïn, vì vaäy maïch tuaàn töï cuõng thöôøng goïi laø maùy traïng thaùi giôùi haïn (finite-state machines) Thôøi ñieåm ñeå caùc traïng thaùi cuûa haàu heát caùc maïch tuaàn töï thay ñoåi ñöôïc quyeát ñònh bôûi xung clock. Hình sau minh hoïa caùc sô ñoà thôøi gian vaø caùc thuaät ngöõ cho caùc xung clock thoâng duïng. Theo quy öôùc, moät xung clock tích cöïc möùc cao neáu caùc thay ñoåi traïng thaùi trong maïch xuaát hieän taïi caïnh leân cuûa xung clock hay taïi möùc cao cuûa xung clock, vaø tích cöïc möùc thaáp cho tröôøng hôïp coøn laïi. Chu kyø boån phaän laø phaàn traêm thôøi gian xung clock tích cöïc treân moät chu kyø. Thoâng thöôøng trong moät heä thoáng soá ngöôøi ta söû duïng dao ñoäng thaïnh anh ñeå taïo caùc xung clock. Taàn soá xung clock khoaûng 32768 khz (cho ñoàng hoà) ñeán 400 Mhz (cho supercomputer). Caùc heä thoáng thoâng thöôøng söû duïng caùc phaàn töû CMOS vaø TTL coù taàn soá xung clock vaøo khaûng töø 1 ñeán 25Mhz.

CLK

CLK

tH

tL

tH

tL

Tper

Tper Chu kyø boån phaän=tH/Tper

Chu kyø boån phaän=tL/Tper

Hai loaïi maïch tuaàn töï thöôøng aùp duïng chính trong caùc thieát keá thöïc teá: GV: Nguyễn Trọng Hải

Trang 74

Bài Giảng Kỹ Thuật Số

Chương 4

Maïch tuaàn töï coù hoài tieáp: söû duïng caùc coång thoâng thöôøng vaø caùc voøng hoài tieáp ñeå taïo khaû naêng nhôù trong maïch logic, baèng caùch ñoù taïo ra caùc khoái maïch tuaàn töï nhö flip-flop vaø maïch choát ñeå thieát keá caùc maïch ôû möùc cao hôn Maùy traïng thaùi vôùi xung clock ñöôïc ñoàng boä: söû duïng caùc phaàn töû nhôù, ñaëc bieät laø D flipflop, ñeå taïo ra nhöõng maïch maø ngoõ ra seõ thay ñoåi ñoàng thôøi vôùi xung Clock Caùc daïng maïch tuaàn töï khaùc nhö daïng ña xung, ña phase thöôøng öùng duïng trong caùc heä thoáng coù tính naêng cao vaø VLSI 4.2.

CAÙC PHAÀN TÖÛ HAI TRAÏNG THAÙI BEÀN

4.2.1. Maïch Ñaûo Moät transistor coù theå laøm chöùc naêng maïch ñaûo nhö sô ñoà hình sau +12V 4K 2.2K

2.2K

-12V

Khi VI ôû möùc ñieän aùp cao thì BJT chaïy baõo hoøa vaø doøng IC qua RC taïo suït aùp neân V0 ≈ 0.2V (VCESAT) öùng vôùi möùc ñieän aùp thaáp Khi VI ôû möùc ñieän aùp thaáp thì BJT phaân cöïc ngöôïc ôû ngoõ vaøo neân ngöng daãn, doøng IC =0 neân khoâng giaûm aùp qua RC neân V0 ≈ VCC öùng vôùi möùc ñieän aùp cao 4.2.2. Maïch Hai Traïng Thaùi Beàn Moät maïch tuaàn töï ñôn giaûn nhaát bao goàm hai coång ñaûo vôùi voøng hoài tieáp. Noù khoâng coù ngoõ vaøo vaø coù 2 ngoõ ra nhö sau: Vcc Vin1

Vout1

Q

R2 Rb1

Vout2

GV: Nguyễn Trọng Hải

Q

Trang 75

Rc2

Rc1 R1

Vin2

Vcc

-VBB

Rb2

-VBB

Bài Giảng Kỹ Thuật Số

Chương 4

Maïch ñöôïc veõ laïi nhö sau

RC1

+VCC

R2

R1

T1

RC2

T2 RB2

RB1

-VBB

Giaû thieát coù maïch ñoái xöùng (T1 vaø T2 cuøng teân, caùc ñieän trô phaân cöïc cho 2 transistor cuøng trò soá) nhöng do 2 transistor khoâng theå caân baèng moät caùch tuyeät ñoái neân seõ coù moät transistor chaïy maïnh hôn vaø moät transistor chaïy yeáu hôn Giaû thieát T1 chaïy maïnh hôn T2 neân IC1 lôùn hôn neân VRC1 lôùn laøm ñieän aùp VC1 giaûm. VC1 qua ñieän trôû R2 phaân cöïc cho T2 giaûm laøm T2 chaïy caøng yeáu hôn laøm IC2 nhoû hôn daãn ñeán VC2 taêng, ñieän aùp VC2 taêng qua R1 laøm taêng phaân cöïc cho T1 daãn ñeán T1 chaïy maïnh hôn nöõa, cuoái cuøng T1 seõ tieán ñeán traïng thaùi baõo hoøa, T2 tieán ñeán traïng thaùi ngöng daãn. Neáu khoâng coù moät taùc ñoäng naøo khaùc thì maïch ñieän seõ ôû maõi traïng thaùi naøy. Ñaây laø moät traïng thaùi cuûa maïch Flip Flop Ngöôïc laïi, neáu giaû thieát T2 chaïy maïnh hôn T1 lyù luaän töông töï cuoái cuøng T2 seõ tieán ñeán traïng thaùi baõo hoøa, T1 tieán ñeán traïng thaùi ngöng daãn. Neáu khoâng coù moät taùc ñoäng naøo khaùc thì maïch ñieän seõ ôû maõi traïng thaùi naøy. Ñaây laø traïng thaùi thöù hai cuûa maïch Flip Flop Maïch FF seõ ôû moät trong hai traïng thaùi treân neân ñöôïc goïi laø maïch löôõng oån 4.3.

FLIPFLOP Phaàn töû nhôù quan troïng nhaát laø FlipFlop, noù ñöôïc taïo töø caùc coång Logic. Caùc coång logic thì töï noù khoâng coù tính naêng nhôù, nhöng ta coù theå keát noái chuùng vôùi nhau ñeå taïo neân khaû naêng nhôù Sô ñoà khoái cho moät FF nhö sau: Q Các ngõ vào

Ngõ ra nhớ

FlipFlop Q

Ngõ ra đảo

Thaáy raèng FF coù 2 ngoõ ra vaø 1 hay nhieàu ngoõ vaøo. Caùc ngoõ vaøo thöôøng ñöôïc söû duïng ñeå chuyeån ñoåi giöõa caùc khaû naêng ngoõ ra, ta seõ thaáy raèng khi moät ngoõ vaøo nhaän xung laøm thay ñoåi traïng thaùi ngoõ ra vaø traïng thaùi ngoõ ra naøy seõ vaãn giöõ

GV: Nguyễn Trọng Hải

Trang 76

Bài Giảng Kỹ Thuật Số

Chương 4

nguyeân khoâng thay ñoåi khi ngoõ vaøo naøy khoâng coøn xung nöõa, vì vaäy ta goïi FF coù ñaëc tính nhôù FlipFlop coøn coù caùc teân goïi khaùc laø choát (latch) vaø maïch hai traïng thaùi beàn (bistable multivibrator) 4.3.1. RS-FF duøng Coång NOR RESET

Q

Q

S FF R

Q

SET

Q

Baûng söï thaät SET

RESET

Output

0

0

Khoâng thay ñoåi

1

0

Q=1

0

1

Q=0

1

1

Khoâng söû duïng

Khi SET = RESET= 0. Ñaây laø traïng thaùi nhôù vaø khoâng laøm thay ñoåi caùc traïng thaùi ngoõ ra. Vì ñaây laø maïch hai traïng thaùi beàn neân seõ coù hai tröông hôïp ban ñaàu xaûy ra, tröông hôïp Q =0, Q =1 vaø tröôøng hôïp Q =1, Q =0. Tröôøng hôïp Q=0, Q =1 Q=0 daãn ñeán ngoõ ra coång NOR1 =1, Q =1 naøy ñöa veà ngoõ vaøo coång NOR2, ngoõ ra coång NOR2=0, nhö vaäy maïch vaãn giöõ nguyeân traïng thaùi Q=0, Q =1 Tröôøng hôïp Q=1, Q =0 Q=1 daãn ñeán ngoõ ra coång NOR1 =0, Q =0 naøy ñöa veà ngoõ vaøo coång NOR2, ngoõ ra coång NOR2=1, nhö vaäy maïch vaãn giöõ nguyeân traïng thaùi Q=1, Q =0 Nhö vaäy vôùi hai tröôøng hôïp, ngoõ ra seõ phuï thuoäc vaøo traïng thaùi tröôùc cuûa maïch khi SET = RESET =0 ¾ Thieát laäp caùc thay ñoåi cho FF •

RESET

Q

Khi SET = 1, RESET = 0.

Ngoõ ra Q luoân = 0, Q luoân baèng 1 vaø vaãn giöõ nguyeân traïng thaùi Q=1 khi SET ñöôïc ñaët trôû laïi 0 (LATCH) GV: Nguyễn Trọng Hải

Trang 77

Q SET

Bài Giảng Kỹ Thuật Số

Chương 4



Khi SET = 0, RESET = 1. Ngoõ ra Q luoân = 0 vaø vaãn giöõ nguyeân traïng thaùi Q=0 khi CLEAR ñöôïc ñaët trôû laïi 0 (LATCH)



Khi SET = CLEAR = 1: ñieàu kieän naøy laøm cho ngoõ ra Q = Q = 0, roõ raøng ñaây laø ñieàu kieän khoâng mong muoán hôn nöõa neáu caùc ngoõ vaøo trôû laïi möùc 0 ñoàng thôøi, keát quaû ngoõ ra seõ khoâng theå ñoaùn ñöôùc ñöôïc. Traïng thaùi naøy khoâng ñöôïc duøng vaø goïi laø traïng thaùi caám.

IC 4044 - 4 NOR RS-FF S X 0 0 1 1

R X 0 1 0 1

E 0 1 1 1 1

Q HiZ Khoâng thay ñoåi 0 1 Caám

4.3.2. RS FlipFlop duøng coång NAND RS – FF duøng coång NAND (töông töï, chæ löu yù söï hoaùn chuyeån ngoõ ra Q vaø Q vaø caùc ñieàu kieän ngoõ vaøo)

SET

RESET

Output

1

1

Khoâng thay ñoåi

0

1

Q=1

1

0

Q=0

0

0

Caám

Q

Q

RESET



SET

Bieán ñoåi caùch bieåu thò khaùc cuûa coång NAND

Ta ñöôïc maïch nhö sau SET

Q

Q

S FF

Q

RESET

GV: Nguyễn Trọng Hải

Trang 78

R

Q

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ. Caáp daïng soùng sau vaøo ngoõ SR cuûa maïch choát duøng NAND, veõ daïng soùng ngoõ ra Q, giaû söû ban ñaàu Q=0 SET RESET

Q Vì duï treân chæ ra raèng ngoõ ra maïch choát “nhôù traïng thaùi ngoõ vaøo tích cöïc tröôùc ñoù” vaø seõ khoâng thay ñoåi traïng thaùi cho ñeán khi ngoõ vaøo coøn laïi tích cöïc. Noù ñöôïc öùng duïng vaøo caùc coâng taéc choáng doäi (debounce switch). So saùnh tröôøng hôïp söû duïng coâng taéc bình thöôøng vaø tröôøng hôïp söû duïng coâng taéc choáng doäi nhö sau Vcc R

Vcc

1

S

Q

R

Q

Vout

Vout 0 R Vcc

IC 74279 4 RS-FF

4.4.

FLIPFLOP DUØNG XUNG CK Caùc heä thoáng soá coù theå hoaït ñoäng ñoàng boä hay khoâng ñoàng boä. Moät heä thoáng khoâng ñoàng boä, ngoõ ra cuûa maïch logic coù theå thay ñoåi traïng thaùi baát cöù luùc naøo khi moät hay nhieàu ngoõ vaøo thay ñoåi Moät heä thoáng ñoàng boä, söï thay ñoåi ôû ngoõ ra ñöôïc ñoàng thôøi vôùi tín hieäu goïi laø xung clock Haàu heát caùc heä thoáng soá ñeàu döïa vaøo nguyeân lyù ñoàng boä vì maïch ñoàng boä deã thieát keá Q

input

FF

FF CK

Q

CK tích cöïc caïnh leân GV: Nguyễn Trọng Hải

Q

input

Trang 79

CK

Q

CK tích cöïc caïnh xuoáng

Bài Giảng Kỹ Thuật Số

Chương 4

4.4.1. Clock RS – FlipFlop S

Q

S 0 1 0 1

CLK R •

Q

R 0 0 1 1

CK ↑ ↑ ↑ ↑

Q Q0 (khoâng ñoåi) 1 0 Caám

Sô ñoà beân trong cuûa clock SR- FlipFlop SET

Q CK

Phát hiện cạnh 1

Q

RESET

Maïch phaùt hieän söôøn xung leân hay xuoáng seõ taïo moät xung heïp ôû ngoõ ra (CK*). Xung naøy seõ xuaát hieän taïi caïnh leân hay caïnh xuoáng cuûa CK vaø taùc ñoäng môû coång cho 2 coång NAND, maïch phaùt hieän söôøn xung nhö sau CK

CK

CK

CK* CK CK* CK

CK

CK

CK*

CK

CK* 4.4.2. Caùc bieán theå cuûa RS – FF Ñeå söû duïng ñöôïc caû toå hôïp R=S=1, thöôøng söû duïng caùc bieán theå cuûa RS-FF. Bao goàm: R-FF, S-FF, E-FF. R-FF öùng vôùi toå hôïp caám S=R=1 thì Q=0 vaø Q=1 , sô ñoà cuûa R-FF nhö sau SET

Q

CK

Phát hiện cạnh

1

RESET

GV: Nguyễn Trọng Hải

Trang 80

Q

Bài Giảng Kỹ Thuật Số

Chương 4

S-FF öùng vôùi toå hôïp caám S=R=1 thì Q=1 vaø Q=0 , sô ñoà cuûa S-FF nhö sau SET

Q Phát hiện cạnh

CK

1

Q

RESET

E-FF öùng vôùi toå hôïp caám S=R=1 thì Q vaø Q giöõ nguyeân traïng thaùi (gioáng toå hôïp R=S=0), sô ñoà cuûa E-FF nhö sau SET

Q Phát hiện cạnh

CK

1

Q

RESET

4.4.3. Clock JK – FlipFlop J

J 0 1 0 1

Q

CK K •

Q

K 0 0 1 1

CK ↑ ↑ ↑ ↑

Q Q0 (khoâng ñoåi) 1 0 Q0

Sô ñoà beân trong cuûa clock JK – FF

J CK

Q Phát hiện cạnh

Q

K

GV: Nguyễn Trọng Hải

Trang 81

Bài Giảng Kỹ Thuật Số

Chương 4

4.4.4. D FlipFlop D

D

Q

Q CK Q

D 0 1

CK ↑ ↑

Phát hiện cạnh

CK Q 0 1

1

Q

Ví dụ, taïo D-FF töø RS-FF 4.4.5. Bieán theå cuûa D – FF Trong thực tế coøn söû duïng moät bieán theå cuûa D-FF laø DV-FF, kyù hieäu vaø baûng söï thaät nhö sau D

V 0 0 1 1

Q

CK V

Q

D 0 1 0 1

CK ↑ ↑ ↑ ↑

Q Q0 (khoâng ñoåi) Q0 (khoâng ñoåi) 0 1

Vaäy V gioáng nhö chaân ñieàu khieån: khi V=1, FF hoaït ñoäng gioáng D-FF, khi V=0 FF seõ khoâng ñoåi traïng thaùi 4.4.6. T FlipFlop T

CK Khoâng coù CK ↓ ↓

Q

CK Q

T x 0 1

Q Q0 Q0 Q0

4.4.7. Caùc ngoõ vaøo khoâng ñoàng boä Vôùi caùc FF ôû treân, caùc ngoõ vaøo S-R, J-K, D xem nhö caùc ngoõ ñieàu khieån, vaø ñöôïc goïi laø caùc ngoõ vaøo ñoàng boä (synchronous input) vì taùc ñoäng cuûa chuùng ñoái vôùi ngoõ ra thì ñoàng boä vôùi CK Ngoaøi ra haàu heát caùc FF cuõng coù 1 hay nhieàu ngoõ vaøo khoâng ñoàng boä (asynchronous input) hoaït ñoäng ñoäc laäp vôùi ngoõ vaøo ñoàng boä vaø xung clock. Caùc ngoõ vaøo khoâng ñoàng boä naøy ñöôïc söû duïng ñeå ñaët ngoõ ra cuûa FF leân 1 (PRESET) hay xoùa ngoõ ra cuûa FF veà 0 (CLR) baát chaáp caùc ñieàu kieän cuûa ngoõ vaøo GV: Nguyễn Trọng Hải

Trang 82

Bài Giảng Kỹ Thuật Số

D

PR

Chương 4

PR

J

Q

CK

CK

K

CLR Q

CLR Q

7476

7474

D-FF 4.5.

PR 1 0 1 0

Q

CLR 1 1 0 0

Ngoõ ra hoaït ñoäng theo CK Q=1 Q=0 khoâng söû duïng

JK-FF

CAÙC ÖÙNG DUÏNG CUÛA FLIPFLOP

4.5.1. Ñoàng boä hoùa duøng FF Haàu heát caùc heä thoáng soá ñeàu döïa treân nguyeân lyù ñoàng boä trong hoaït ñoäng cuûa chuùng (traïng thaùi tín hieäu thay ñoåi ñoàng boä vôùi xung clock). Trong moät soá tröôøng hôïp seõ coù moät soá tín hieäu khoâng ñöôïc ñoàng boä vôù xung clock, noùi caùch khaùc laø baát ñoàng boä. Caùc tín hieäu naøy thöôøng xuaát hieän ôû tröôøng hôïp nhaán moät phím taïi moät thôøi ñieåm ngaãu nhieân so vôùi xung clock, söï ngaãu nhieân naøy coù theå ñöa ñeán moät keát quaû khoâng mong muoán. Ñeå khaéc phuïc ñieàu naøy ta seõ xeùt ví duï sau: Ví dụ, Khóa chống dội

Clock

A X

A X

Clock

Xung khoâng mong muoán Clock Khóa chống dội

D

PR

Q

X

CLK CLR

Clock

Q

A Q X

Xung ñoàng boä 4.5.2. Maïch phaùt hieän moät chuoãi ngoõ vaøo tuaàn töï Trong moät soá öùng duïng, caàn nhaän bieát chuoãi xung naøo ñeán tröôùc trong hai chuoãi xung, giaû söõ ngoõ ra seõ ôû möùc cao neáu ngoõ vaøo A ôû möùc cao tröôùc ngoõ vaøo B A

A

B

B

X

X

Ta choïn B laøm xung CK kích caïnh leân cho maïch FF GV: Nguyễn Trọng Hải

Trang 83

A B

PR

J

X Q

CLK K

CLR Q

Bài Giảng Kỹ Thuật Số

Chương 4

4.5.3. Thanh ghi dòch Caùc daïng cuûa thanh ghi dòch goàm •

Vaøo song song/ ra song song



Vaøo noái tieáp/ra noái tieáp



Vaøo song song/ra noái tieáp



Vaøo noái tieáp/ ra song song

1D 2D 3D 4D 5D 6D

a. Vaøo song song/ ra song song (74174, 74374) • MR

CK

D4

PR Q

D

CL

CLK CL

Q

CL

Q

Q4

Q5

PR Q

D

CLK CL

Q

PR Q

D

CLK

CLK



D0

D1

PR Q

D

74LS174

CLK CLR

74174. Sô ñoà beân trong cuûa 74174 (6bit ghi dòch, ngoõ vaøo töø D0 ñeán D5 ngoõ ra töø Q0 ñeán Q5)

D5

1Q 2Q 3Q 4Q 5Q 6Q

Q

Q1

Q0

74374. thanh ghi dòch 8 bit vaøo song song/ 8 bit ra song song D0 D1 D2 D3 D4 D5 D6 D7

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

OC CLK

OC

CLK

D

Output

0



1

1

0



0

0

0

0

X

QO

1

X

X

HiZ

74LS374

b. Vaøo noái tieáp/ ra noái tieáp Ñeå caát n döõ lieäu vaøo thanh ghi ta caàn n xung CK, thôøi gian ghi chaäm. Töông töï, ñeå xuaát döõ lieäu caàn n-1 xung, thôøi gian xuaát chaäm. Lôïi ñieåm: ít sai Ds CK

D

PR Q

PR Q

D CLK

CLK CL

Q

GV: Nguyễn Trọng Hải

D

PR Q

CLK CL

Q

Trang 84

D

PR Q

CLK CL

Q

CL

Q

Os

Bài Giảng Kỹ Thuật Số

Chương 4

4731. CMOS thanh ghi dòch 256bit (4 boä ghi dòch 64bit noái tieáp) DS

DS

Q 64bit

DS

Q

64bit

64bit CP

CP

CP

DS

Q

Q

64bit CP

c. Vaøo song song/ ra noái tieáp •

74LS166 laø loaïi IC naïp döõ lieäu vaøo song song (8bit), xuaát döõ lieäu ra noái tieáp (Döõ lieäu ñöôïc naïp vaøo töø chaân A,…,H vaø xuaát ra tuaàn töï ôû chaân SER OUT. Ngoaøi ra 74166 coøn coù 1 ngoõ vaøo data noái tieáp SER

74LS166 CLR SH/LD INH CLK H G F E D C B A SER

CKI laø chaân cho pheùp xung CK, CKI=[0]: cho pheùp xung CK, CKI=[1] : caám xung CK. SH/LD=[0]: naïp döõ lieäu, SH/LD=[1]: dòch döõ lieäu. Sau khi dòch 1 bit ra khoûi haøng döõ lieäu (veà höôùng bit H), bit A seõ troáng vaø bit SR (Serial in) seõ dòch vaøo thanh choát cuûa bit A.

QH

d. Vaøo noái tieáp / ra song song 74164 74164. thanh ghi dòch 8bit, A vaø B laø ngoõ vaøo data cho D-FF QA QB A QC QD QE B QF CLK QG QH CLR 74LS164

A D

B

PR Q

CLK CL

Q

Ví dụ. Giaû söû raèng ban ñaàu traïng thaùi thanh ghi 74164 laø 00000000, xaùc ñònh chuoãi traïng thaùi keá tieáp cuûa maïch sau CK

1

1

CLK B A CLR H GFE D CB A

GV: Nguyễn Trọng Hải

Trang 85

74LS164

Bài Giảng Kỹ Thuật Số

Chương 4

4.5.4. Öùng duïng Trong microcomputer D

A15 A14 A13 A12

X3

Q

X2

Q

X1

Q

X0

CLK D

A11 A10 A9 A8

MPU

Q

CLK D

CP

CLK

D3 D2 D1 D0

D CLK

Hình treân laø moät ñôn vò vi xöû lyù (MPU) vôùi caùc ngoõ ra duøng ñeå truyeàn data nhò phaân ñeán thanh ghi X (4 D-FF). Haàu heát caùc MPU coù ít nhaát 16 ñöôøng ñòa chæ, nhöng thöôøng seõ khoâng söû duïng heát. ÖÙng duïng MPU ñeå truyeàn soá nhò phaân töø thanh ghi trong MPU ñeán thanh ghi ngoaøi X. Ñeå thöïc hieän ñieàu naøy, MPU thöïc hieän caùc böôùc sau: •

Ñaët soá nhò phaân ra ngoõ ra D3D2D1D0



Ñaët maõ ñòa chæ ñuùng töø A15 ñeán A8 ñeå choïn thanh ghi X



Khi data vaø ñòa chæ ngoõ ra ñaõ oån ñònh, MPU seõ taïo xung clock caáp cho thanh ghi X ñeå hoaøn taát quaù trình truyeàn song song töø MPU ñeán thanh ghi X

Caùc FF trong thanh ghi X coù theå söû duïng cho nhieàu nuïc ñích khaùc nhau. Ví duï, sau khi MPU thöïc hieän caùc pheùp tính vaø hieån thò keát quaû, moãi FF seõ ñöôïc noái vôùi 1 LED vaø data keát quaû naøy coù theå thaáy ñöôïc. Ví duï khaùc, moãi FF thaønh phaàn coù theå ñieàu khieån taét/môû caùc thieát bò khaùc nhö motor hay role döïa treân cô sôû maõ nhò phaân truyeàn töø MPU ra 4.5.5. Boä Chia Taàn Soá Số MOD: laø soá traïng thaùi ngoõ ra cuûa moät maïch ñeám Ví dụ: moät maïch ñeám coù chuoãi traïng thaùi ngoõ ra sau laø maïch ñeám MOD 4 000

010

101

111

MOD 4

Ví dụ: xeùt maïch sau A LSB

1

B

1

C MSB

1

2

1

J

PR Q

1

CLK

1

K

PR Q

1

CLK CL

Q

1

1

GV: Nguyễn Trọng Hải

J

K

PR Q

CLK CL

1

Trang 86

J

Q

1

K

CL

1

Q

Bài Giảng Kỹ Thuật Số

Chương 4

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

0

10

11

1

2

Clock A B C

QA seõ thay ñoåi traïng thaùi baèng Q tröôùc ñoù taïi caïng xuoáng cuûa xung CK 1 => TQA=2TCK => f QA = f CK 2 QB seõ thay ñoåi traïng thaùi baèng Q tröôùc ñoù taïi caïng xuoáng cuûa QA 1 => TQB=2TQA => f QB = f QA 2 QC seõ thay ñoåi traïng thaùi baèng Q tröôùc ñoù taïi caïng xuoáng cuûa QB 1 => TQC=2TQB => f QC = f QB 2 Nhö vaäy moãi FF chia taàn soá ngoõ vaøo CK cuûa noù 2 laàn. Toång quaùt vôùi n FF thì 1 f Qout = n f CK 2 ÖÙùng duïng boä chia taàn laøm boä ñeám nhò phaân. Döïa vaøo giaûn ñoà xung treân, ñöa ra ñöôïc baûng söï thaät sau. Giaû söû ban ñaàu CBA =000 C 0 0 0 0 1 1 1 1 0 0

B 0 0 1 1 0 0 1 1 0 0

A 0 1 0 1 0 1 0 1 0 1

CK Ban ñaàu Sau xung CK1 Sau xung CK2 Sau xung CK3 Sau xung CK4 Sau xung CK5 Sau xung CK6 Sau xung CK7 Sau xung CK8 Sau xung CK9

000 001

111

010

110 011

101 100



Boä ñeám ôû treân coù 23 traïng thaùi khaùc nhau töø 000 ñeán 111, noù ñöôïc goïi laø boä ñeám MOD 8



Vôùi n FF coù 2n traïng thaùi khaùc nhau, soá MOD toái ña laø MOD 2n

GV: Nguyễn Trọng Hải

Trang 87

Bài Giảng Kỹ Thuật Số

Chương 4

4.5.6. MAÏCH ÑEÁM a. Ñeám khoâng ñoàng boä vôùi MOD 2n



Moâ hình ñeám leân Q0 LSB Q

Q

CK

Q

CK

CK

Q

Q

Q

Q0 LSB Q

CK

Q

CK

CK

Q

Q

Q

Moâ hình ñeám xuoáng Q0 LSB

Qn MSB

Q1

Q

Q

CK

Q

CK

CK

Q

Q

Q

Q0 LSB

Qn MSB

Q1

Q

Q

CK

Q

CK

CK

Q



Qn MSB

Q1

Q



Qn MSB

Q1

Q

Q

Ñieàu kieän Q+ = Q0

1

J

1

Q

PR

T

CK

1

K

PR

Q

D

CK CL

Q

CL

Q

CK CL

Q

PR

Q

Ví dụ, boä ñeám leân nhò phaân 4 bit duøng JK-FF vôùi CK kích caïnh xuoáng nhö sau A

1 1

J

PR

Q

1

K

J

PR

Q

CL

Q

1

GV: Nguyễn Trọng Hải

1

K

C

1 1

CK

CK

1

B

1

J

PR

Q

1

Q

1

Trang 88

1

K

J

PR

Q

CL

Q

CK

CK CL

D

1

CL

1

Q

1

K

1

Bài Giảng Kỹ Thuật Số

Chương 4



Xung clock ñöôïc ñöa vaøo ngoõ CK cuûa FF -A, vì vaäy FF-A seõ thay ñoåi traïng thaùi sau moãi xung clock (löu yù laø taát caû caùc ngoõ vaøo J=K=1)



Ngoõ ra cuûa FF-A ñöôïc ñöa vaøo ngoõ vaøo CLK cuûa FF-B, vì vaäy FF-B thay ñoåi traïng thaùi khi ngoõ ra QA thay ñoåi töø 1 xuoáng 0. Töông töï cho FF-C vaø FF-D



Baûng sau moâ taû caùc ngoõ ra cuûa caùc FF sau moãi xung CK, sau xung clock thöù 16 caùc ngoõ ra seõ trôû veà 0000 vaø laëp laïi trang thaùi ban ñaàu D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0

B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0

A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Xung CK 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (laëp laïi)

Daïng maïch ñeám maø ngoõ ra FF ñöôïc söû duïng nhö CK cho taàng sau ñöôïc goïi laø maïch ñeám khoâng ñoàng boä, vì taát caû caùc FF khoâng thay ñoåi traïng thaùi ñoàng boä vôùi xung clock, chæ coù FF-A thay ñoåi töông öùng vôùi xung clock CK QA QB QC QD 0

1

2

3

4

5

6

7

8

9

10

Ví dụ, thiết kế boä ñeám leân nhò phaân 4 bit duøng FF nhö sau (a)

(b) D

PR Q

T

CLK

PR Q

CLK CL

GV: Nguyễn Trọng Hải

CL

Q

Trang 89

Q

11 12 13

14 15

0

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, thiết kế boä ñeám xuoáng nhò phaân 4 bit duøng FF nhö sau (a)

(c)

(b) D

PR Q

T

PR Q

J

CL

K

CLK

CLK

CLK CL

Q

PR Q

Q

CL

Q

Ví dụ, xaây döïng maïch taïo xung 1Hz töø ñieän löôùi 50Hz nhö sau: 50Hz

50Hz

1Hz

MOD 50 counter

Schmitt Trigger

Ñieän aùp löôùi ac coù taàn soá 50hz qua boä bieán ñoåi sin sang soùng vuoâng, sau ñoù cho qua boä chia 50 (MOD 50 counter) ñöôïc xung 1hz Vaán ñeà ñaët ra laø caàn bao nhieâu FF cho boä chia 50. Vôùi 6 FF ta ñöôïc maïch chia 26=64. Nhö vaäy söû duïng giaûi phaùp ñeám MOD 2n laø khoâng thích hôïp. b. Ñeám khoâng ñoàng boä vôùi MOD < 2n Các bước thiết kế Bước 1. Thöïc hieän choïn daïng maïch Bước 2. Xaùc ñònh soá FF caàn toái thieåu Goïi

n laø soá FF caàn

Choïn n sao cho 2n-1 < MOD < 2n Bước 3. Aùp duïng tính chaát cuûa caùc ngoõ vaøo baát ñoàng boä (Pr, Cl) ñeå xaùc ñònh traïng thaùi xoùa theo trình töï sau: Laäp baûng traïng thaùi cho caùc ngoõ ra vaø caùc ngoõ vaøo baát ñoàng boä Vieát haøm cho caùc ngoõ Pr vaø Cl Ruùt goïn haøm Pr vaø Cl (duøng bìa K, ñaïi soá Boolean) Veõ maïch hoaøn chænh Ví dụ, Thieát keá maïch ñeám leân nhò phaân MOD6 duøng JK-FF nhö sau

J

PR Q

CLK K

Xaùc ñònh soá FF toái thieåu:

GV: Nguyễn Trọng Hải

CL

Q

22 < 6 < 23 ⇒ soá FF caàn laø 3

Trang 90

Bài Giảng Kỹ Thuật Số

Chương 4

Baûng traïng thaùi ñeám QC 0 0 0 0 1 1 0

QB 0 0 1 1 0 0 0

QA 0 1 0 1 0 1 0

Cl 1 1 1 1 1 1 0

Pr 1 1 1 1 1 1 1

Cl

QA 0

1

00

1

1

01

1

1

11

0

X

10

1

1

QCQB

Vaäy Cl = Q B + Q C = Q B Q C , Pr = 1 Daïng maïch ñeám leân MOD 6 A

1 PR

1

J

1

CLK CL K

B

1

Q

Q

PR

1

J

1

CLK CL K

Q

Q

C

1 1

J

PR

Q

1

CLK CL K

Q

Sinh viên vẽ dạng sóng ABC để kiểm chứng Ví dụ, Thieát keá maïch ñeám xuoáng MOD 12 duøng FF sau (a)

(c)

(b) D

PR Q

PR Q

T

CL

Q

PR Q

CLK

CLK

CLK

J

CL

Q

K

CL

Q

c. Treã trong maïch ñeám khoâng ñoàng boä Maïch ñeám khoâng ñoàng boä laø daïng ñôn giaûn nhaát cuûa caùc boä ñeám nhò phaân vì caùc thaønh phaàn ñeå taïo ra maïch ñeám laø ít nhaát. Tuy nhieân cuõng coù moät soá vaán ñeà lieân quan ñeán maïch. FF sau seõ thay ñoåi traïng thaùi öùng vôùi söï thay ñoåi traïng thaùi ngoõ ra cuûa FF tröôùc. Do moãi FF coù thôøi gian treã truyeàn ñaït (tpd), nghóa laø FF thöù 2 seõ khoâng ñaùp öùng trong khoaûng thôøi gian tpd khi FF ñaàu tieân nhaän ñöôïc xung clock, töông töï FF thöù 3 seõ khoâng ñaùp öùng trong khoaûng thôøi gian 2tpd khi FF ñaàu tieân nhaän ñöôïc xung clock, cuoái cuøng FF thöù N seõ khoâng ñaùp öùng trong khoaûng thôøi gian Ntpd khi FF ñaàu tieân nhaän ñöôïc xung clock GV: Nguyễn Trọng Hải

Trang 91

Bài Giảng Kỹ Thuật Số

Chương 4

CK QA QB 2tpd

tpd

3tpd

QC

Xeùt tröôøng hôïp sau

T

0

1

0

0

1

0

0

1

0

0

0

1

1

1

0

0

0

0

0

0

0

0

0

1

tpd

tpd

tpd

Neáu chu kyø xung clock T= 2tpd. Nhö ñaõ thaáy treân hình veõ, traïng thaùi ñeám seõ töø 000, 001 roài xuoáng 000, 010, 011, 010, 000, 101, … Thaáy raèng caùc traïng thaùi ñeám khoâng coøn tuaân thuû ñeám leân, vaø khoâng bao giôø coù traïng thaùi 100 Ñeå khaéc phuïc, chu kyø xung clock phaûi lôùn hôn thôøi gian treã lôùn nhaát cuûa maïch ñeám nghóa laø Tclock ≥ Ntpd hoaëc fmax =

1 (taàn soá cöïc ñaïi cho pheùp) Ntpd

Vôùi maïch ñeám khoâng ñoàng boä 4 bit cho thôøi gian treã cuûa JK-FF (tpd = 24ns) => fmax =

1 =10.4Mhz 4.24ns

Khi soá FF taêng thì taàn soá cöïc ñaïi cuûa maïch giaûm xuoáng d. Caùc vi maïch ñeám khoâng ñoàng boä



7493, 74293

74LS93 coù 2 boä ñeám beân trong: moät boä ñeám 2 vôùi ngoõ vaøo xung CKA, moät boä ñeám 8 vôùi ngoõ vaøo xung CKB Sinh vieân tra baûng söï thaät cuûa 7493 vaø lieät keâ chuoãi ñeám khi noái QA veà CKB vaø chuoãi ñeám khi noái QD veà CKA GV: Nguyễn Trọng Hải

Trang 92

CKA

QA

CKB

QB

R01

QC

R02

QD

74LS93

Bài Giảng Kỹ Thuật Số



Chương 4

74LS90

R91 R92 QA

74LS90 coù 2 boä ñeám beân trong: moät boä ñeám 2 vôùi ngoõ vaøo CKA, moät boä ñeám 5 vôùi ngoõ vaøo CKB

CKA QB CKB QC

Sinh vieân tra baûng söï thaät cuûa 7493 vaø lieät keâ chuoãi ñeám khi noái QA veà CKB vaø chuoãi ñeám khi noái QD veà CKA



R01 QD R02

74LS90

CD4024, CD4040

4024 laø boä ñeám nhò phaân 7bit (MOD128), 4040 laø boä ñeám nhò phaân 12bit (MOD4096) e. Ñeám ñoàng boä vaø maïng tuaàn töï Ñeå khaéc phuï nhöôïc ñieåm thôøi gian treã cuûa xung CK, ôû maïng ñoàng boä, taát caû caùc FF ñeàu söû duïng chung xung CK. Vì vaäy, caùc ngoõ ra seõ thay ñoåi ñoàng thôøi theo xung CK Phương pháp thiết kế Bước 1, thieát laäp baûng moâ taû moái quan heä giöõa ngoõ ra hieän taïi (Q) vaø ngoõ ra keá tieáp (Q+) Bước 2, Thieát laäp caùc traïng thaùi ngoõ vaøo cho FF ñeå thoûa maõn caùc thay ñoåi ngoõ ra töø baûng treân Bước 3, Ruùt goïn caùc phöông trình ngoõ vaøo cho FF Bước 4, Thöïc hieän maïch ÔÛ böôùc 2, ñeå thieát laäp traïng thaùi ngoõ vaøo theo ngoõ ra, caùc baûng söï thaät tröôùc cuûa FF phaûi thay ñoåi. Ví dụ, baûng söï thaät cho SR-FF S 0 0 0 0 1 1 1 1

R 0 0 1 1 0 0 1 1

Q 0 1 0 1 0 1 0 1

Q+ 0 1 0 0 1 1 -

Q 0 0 0 1 1 1

Q+ 0 0 1 0 0 1

S 0 0 1 0 0 1

R 0 1 0 1 0 0

Q 0 0 1 1

Q+ 0 1 0 1

S 0 1 0 x

Ví dụ, Töông töï, baûng söï thaät cho JK-FF, D-FF, T-FF Q 0 0 1 1

Q+ 0 1 0 1

GV: Nguyễn Trọng Hải

T 0 1 1 0

Q 0 0 1 1

Q+ 0 1 0 1

Trang 93

J 0 1 x x

K x x 1 0

Q 0 0 1 1

Q+ 0 1 0 1

D 0 1 0 1

R x 0 1 0

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, Thieát keá maïch ñeám coù chuoãi ñeám sau duøng T-FF Bước 1,2, Ngoõ ra hieän taïi C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0

Ngoõ ra keá tieáp C+ B+ A+ 1 0 0 0 1 1 0 0 0 1 1 1 -

Ngoõ vaøo TC TB 1 0 0 0 0 1 0 1 -

000

TA 0 1 1 1 -

011

100

111

010

Bước 3, TC

TB

C 0

1

00

1

0

01

x

11 10

BA

TA

C

0

1

00

0

1

x

01

x

x

1

0

11

1

1

0

x

10

1

x

0

1

00

0

1

x

01

x

0

1

11

0

x

10

BA

TC = CB+CB

C

BA

TB = CA+CB

TA = C+B

Maïch cuoái cuøng vaø giaûn ñoà traïng thaùi cho maïch nhö sau C

B

Q CK

TC

A

CK

TB

CK

Q

Q CK

TA

CK

C

0

1

1

0

0

0

B

0

0

1

1

1

0

A

0

0

1

0

1

0

Tc C

B

TB TA

B C

C B

C B

C A

Maëc duø baûng traïng thaùi cho maïch hình treân khoâng chæ ra heát caùc tröôøng hôïp, caùc traïng thaùi keá cuûa traïng thaùi 001, 101, 110 cuõng ñöôïc chæ roõ trong quaù trình thieát keá maïch. GV: Nguyễn Trọng Hải

Trang 94

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, neáu caùc FF ñöôïc ñaët giaù trò ban ñaàu C=0, B=0, A=1 vaø coù xung Clock, töû phöông trình T-FF suy ra TA = TB =1 vaø traïng thaùi seõ chuyeån thaønh 111, vaø khi nhaän xung ck keá tieáp, maïch seõ hoaït ñoäng nhö boä ñeám ñaõ thieát keá 000 011

100

100

111

010

ÔÛ traïng thaùi ban ñaàu khi caáp nguoàn cho maïch, traïng thaùi ñaàu tieân cuûa FF laø khoâng ñoaùn ñöôïc. Vì lyù do naøy, taát caû caùc traïng thaùi don’t care trong boä ñeám phaûi ñöôïc kieåm tra ñeå chaéc chaén raèng noù seõ ñöa ñeán chuoãi ñeám chính neáu khoâng coù moät taùc ñoäng reset naøo cho maïch Ví dụ, thieát keá laïi ví duï treân duøng SR-FF Keát quaû:

RC = A, SC = B RB = CA , SB = C RA = A, SA = CA+BA

Ví dụ, thieát keá laïi ví duï treân duøng D-FF Ñoái vôùi D-FF, Q+ =D, vì vaäy bìa ngoõ vaøo D töông öùng vôùi bìa traïng thaùi keá. Vì vaäy, bieåu thöùc cho D coù theå ñoïc tröïc tieáp töø bìa Q+. Keát quaû:

DC = C+ = B DB = B+ = C+ BA DA = A+ = CA+BA

Ví dụ, thieát keá laïi ví duï treân duøng JK-FF Keát quaû:

JC = B , KC = A JB = C, KB = CA JA = C+B, KA = 1



Phương pháp nhanh để xác định biểu thực ngõ vào cho JK-FF Q 0 0 1 1

Q+ 0 1 0 1

J 0 1 x x

K x x 1 0

Töø ví duï treân thaáy raèng JA vaø KA khoâng chöùa bieán A, töông töï JB vaø KB ñoäc laäp vôùi B, JC vaø KC ñoäc laäp vôùi C. Toång quaùt, haøm cöïc tieåu cho J vaø K cuûa FF Q GV: Nguyễn Trọng Hải

Trang 95

Bài Giảng Kỹ Thuật Số

Chương 4

khoâng phuï thuoäc vaøo Q, ñieàu naøy laø bôûi vì Q=1 trong bìa J laø don’t care, vì vaäy baát cöù 1 ôû phía Q=0 cuûa bìa J coù theå ñöôïc keát hôïp vôùi 1 don’t care laøm trieät tieâu bieán Q, bìa K thì cuõng töông töï vì taát caû Q=0 trong bìa K ñeàu laø don’t care. Töø baûng traïng thaùi keá cho JK, khi Q=0 thì J=Q+, vì J ñoäc laäp vôùi Q, neân coù theå ñoïc J tröïc tieáp töø Q=0 treân bìa Q+, töông töï khi Q=1 thì K =Q+ neân coù theå ñoïc tröïc tieáp K töø Q=1 treân bìa Q+ Xeùt ví duï treân C+

B+

C 0

1

00

1

1

01

x

11 10

BA

A+

C 0

1

00

0

1

x

01

x

x

0

0

11

0

1

0

x

10

1

x

JC Keát quaû:

BA

C 0

1

00

0

1

01

x

x

11

0

0

10

1

x

BA JB

KB

KC

JC = B , KC = A JB = C, KB = CA JA = C+B, KA = 1

Phöông phaùp treân coù 2 thuaän lôïi: (1) Vieäc taùch thaønh 2 bìa J, K laø khoâng caàn thieát. (2) Soá bieán trong haøm giaûm ñi 1 do JQ vaø KQ ñoäc laäp vôùi Q). Ví dụ, thieát keá maïch chuyeån maõ 8-4-2-1 BCD sang maõ quaù 3 duøng JK-FF Baûng traïng thaùi chuyeån ñoåi cho nhö sau A 0 0 0 0 0 0 0 0 1 1

BCD 8-4-2-1 B C 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0

GV: Nguyễn Trọng Hải

D 0 1 0 1 0 1 0 1 0 1

+

A 0 0 0 0 0 1 1 1 1 1

Quaù 3 B+ C+ 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0

Trang 96

D+ 1 0 1 0 1 0 1 0 1 0

JA KA

JA

Bài Giảng Kỹ Thuật Số Keát quaû:

Chương 4

JA = BC+BD

KA=0

JB = C+D

KB=C+D

JC = D

KC= D

JD= 1

KD =1

Ví dụ, Thieát keá maïch ñeám leân/ xuoáng ñoàng boä MOD8 duøng JK-FF Maïch ñeám leân MOD8

1 Q

1

PR

J

PR

Q

CLK Q

CL

1 J

Q

PR

K

CL

Q

1

K

1

J

CLK

CLK Q

CL

1

1

1

1

K

1 74LS76

clock Maïch ñeám xuoáng MOD8

1 Q

PR

Q

CLK CL K

J

Q

PR

Q

CLK CL K

1

1

J

Q

PR

Q

CLK CL K

1

J

1 1

74LS76

clock Maïch ñeám leân/xuoáng MOD8 Keát hôïp 2 maïch treân ñeå taïo thaønh maïch ñeám leân/ xuoáng nhö sau: Count-up

1

1

Q

PR

Q

CLK CL K

J

1

1

Q

PR

Q

CLK CL K

1

J

Q

PR

Q

CLK CL K

1

J

74LS76

Count-down clock GV: Nguyễn Trọng Hải

Trang 97

1 1

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, Thieát keá maïch ñeám coù khaû naêng ñaët traïng thaùi (presetable counter) Nhieàu maïch ñeám ñoàng boä ñöôïc thieát keá coù khaû naêng ñaët traïng thaùi baét ñaàu cho boä ñeám. Khaû naêng naøy coù theå ñoàng boä hoaëc khoâng ñoàng boä vôùi xung CK. Minh hoaï maïch ñeám leân 3 bit coù khaû naêng ñaët traïng thaùi khoâng ñoàng boä P1 P0 P2

Q

PR

J

Q

PR

J

Q

PR

J

1

Q

CLK CL K

Q

CLK CL K

Q

CLK CL K

1

74LS76

clock

LOAD

Nhieàu IC söû duïng ñaët traïng thaùi ñoàng boä vôùi xung clock. f. Moät soá IC ñeám ñoàng boä thoâng duïng



74163, boä ñeám leân 4bit, Pr vaø CLR ñoàng boä, coù khaû naêng ñaët tröôùc traïng thaùi



74192, boä ñeám leân/xuoáng ñoàng boä MOD10, Pr vaø CLR baát ñoàng boä



74193, boä ñeám leân/xuoáng ñoàng boä 4bit, Pr vaø CLR baát ñoàng boä 74LS163 A B C D

QA QB QC QD RCO

CLK ENT ENP LOAD

CLR

GV: Nguyễn Trọng Hải

74LS192 UP DOWN QA CLR QB LOAD QC QD A BO B CO C D

Trang 98

74LS193 A B C D

QA QB QC QD

UP CO DN BO LOAD CLR

Bài Giảng Kỹ Thuật Số

Chương 4

g. Maïch ñeám voøng Ñöôïc xeùt treân cô sôû cuûa maïch ñeám ñoàng boä, boä ñeám voøng coù caáu truùc cuûa thanh ghi dòch nhöng coù theâm hoài tieáp. Thoâng thöôøng söû duïng D-FF hay JK-FF A B C

PR Q

D

PR Q

D CLK

CLK CL

PR Q

D CLK

CL

Q

CL

Q

Q

CK A

PR Q

J

B

PR Q

J

CLK K

K

Q

PR Q

J

CLK CL

C

CLK CL

K

Q

CL

Q

CK Traïng thaùi ban ñaàu ñaët cho maïch laø A=0, B=0, C=1 CK A B C Maïch coù chu trình ñeám MOD3 baèng vôùi soá FF coù trong maïch. Caùc traïng thaùi cuûa FF ñöôïc chuyeån daàn töø C -> A -> B.



Boä ñeám voøng Johnson A

B

1

1

1 PR

D

C

Q

CLK

PR

D

Q

CL

Q

1

CL

Q

1

1

CK GV: Nguyễn Trọng Hải

Trang 99

Q

CLK

CLK CL

PR

D

Q

Bài Giảng Kỹ Thuật Số

Chương 4

ck A B C Baûng traïng thaùi CK 0 1 2 3 4 5 6

A 0 1 1 1 0 0 0

B 0 0 1 1 1 0 0

C 0 0 0 1 1 1 0

Maïch söû duïng 3-FF neân soá MOD = 6 Toång quaùt, vôùi maïch söû duïng n-FF thì soá MOD laø 2n



Vi maïch ñeám voøng Johnson laø 4017 MOD10 CD4017 O0 O1 CLK O2 O3 CKI O4 O5 O6 O7 O8 O9 COUT RESET

4.5.7. Öùng duïng boä ñeám: a. Ñeám taàn soá Clear Unknow freq Counter

Unknow freq. SAMPLE pulses

SAMPLE pulses Clear Z

Counter Display

t0 GV: Nguyễn Trọng Hải

Trang 100

t1 T.gian lấy mẫu t2

Bài Giảng Kỹ Thuật Số

Chương 4

Maïch ñeám taàn soá laø maïch ño vaø hieån thò taàn soá cuûa tín hieäu. Ngoõ vaøo coång AND bao goàm caùc xung vôùi taàn soá chua bieát fx vaø 1 xung laáy maãu ñieàu khieån thôøi gian cho pheùp xung qua coång AND vaøo boä ñeám. Maïch ñeám seõ ñeám soá xung xuaát hieän trong thôøi gian laáy maãu. Gía trò hieån thò cuûa boä ñeám laø taàn soá cuûa tín hieäu caàn ño (neáu thôøi gian laáy maãu t2 – t1 =1s thì ñôn vò cuûa taàn soá laø Hz) Söï chính xaùc cuûa phuông phaùp naøy tuøy thuoäc vaøo khoaûng thôøi gian laáy maãu. Phöông phaùp thöôøng söû duïng ñeå nhaän ñöôïc 1 xung laáy maãu chính xaùc laø söû duïng boä dao ñoäng thaïch anh ñeå taïo ra taàn soá chính xaùc (ví duï 100khz) sau ñoù ngöôøi ta chia xuoáng theo caùc thang ño nhö sau 100kh

Dao động thạch anh

100kh

Biến đổi sinvuông

10khz

Bộ đếm10 Chia 10

100hz

1khz

Bộ đếm10 Chia 10

Bộ đếm10 Chia 10

Bộ đếm10 Chia 10

SAMPLE pulse Q

PR

Q

CLK CL K

J

1 1

Cuoái cuøng boä ñeám taàn soá hoaøn taát nhö sau Unknow freq

CLEAR Counter

SAMPLE pulse

Decoder/ Display Q Tp

GV: Nguyễn Trọng Hải

PR

Q

CLK CL K

T

=100ns

RT

Q

CT

Trang 101

J

1

1

10hz

1hz

Bộ đếm10 Chia 10

Bài Giảng Kỹ Thuật Số

Chương 4

Input pulse SAMPLE pulse T Q output

counter counter clear

is

counter count counter stop clear display show freq

is

b. Ñoàng hoà soá Moät trong nhöõng öùng duïng thoâng duïng nhaát cuûa boä ñeám laø ñoàng hoà soá, hieån thò thôøi gian trong ngaøy nhö giôø, phuùt, giaây. Ñeå taïo moät ñoàng hoà soá chính xaùc yeâu caàu taàn soá xung clock caáp cho ñoàng hoà phaûi chính xaùc. Ñoái vôùi nhöõng ñoàng hoà soá söû duïng pin, thöôøng söû duïng thaïch anh ñeå taïo taàn soá cô baûn. Ñoái vôùi ñoàng hoà soá söû duïng ñieän löôùi ac, duøng taàn soá cuûa ñieän löôùi ñeå taïo taàn soá cô baûn. Trong caùc tröôøng hôïp treân taàn soá cuûa thaïch anh hay ñieän löôùi ñöôïc chia xuoáng thaønh taàn soá 1hz caáp cho ñoàng hoà 50hz

1hz

50hz

Pulse shaper

Chia 50

MOD2 1-FF

BCD counter

MOD6 counter

BCD counter

MOD6 counter

BCD counter

Decoder display 0-1 ten

Decoder display 0-9 Unit

Decoder display 0-5 ten

Decoder display 0-9 Unit

Decoder display 0-5 ten

Decoder display 0-9 Unit

Hours section

GV: Nguyễn Trọng Hải

Minute section

Trang 102

Second section

Bài Giảng Kỹ Thuật Số

Chương 4

Ñoái vôùi maïch ñeám giôø coù moät soá tình huoáng sau:

0001

Khi soá haøng chuïc ôû giaù trò 0, thì boä ñeám haøng ñôn vò laø boä ñeám BCD Khi soá haøng chuïc ôû giaù trò 1, thì boä ñeám haøng ñôn vò chæ ñeám MOD3 (hieån thò giaù trò giôø töø 10 ñeán 12 roài trôû laïi 1 (cho neân maïch naøy phaûi coù khaû naêng ñaët tröôùc soá ñeám)

Q

PR

Q

CLK CL K

J

1

CLR

CK-D CK-UP

PL COBO D C B A

1

74LS192

Decoder Display Unit of hours

Display Tens of hours

Maïch cho boä ñeám giôø nhö hình beân

DCB A

4.5.8. Boä nhôù truy caäp ngaãu nhieân

Di

Nhập data

R/W

Ai

D PR

Q

CLK CL

Q

DO Xuất data

Địa chỉ ô nhớ

Baûng chöùc naêng

Ngoõ vaøo Ai 0 1 1 1

R/W

GV: Nguyễn Trọng Hải

X 0 0 1

Di X 0 1 X

Cheá ñoä Nhôù, D0 = 0 Nhôù 0 vaøo oâ nhôù, D0 = 0 Nhôù 0 vaøo oâ nhôù, D0 = 0 Ñoïc oâ nhôù, D0 = bit nhôù

Trang 103

Bài Giảng Kỹ Thuật Số 4.6.

Chương 4

MÁY TRẠNG THÁI Heä tuaàn töï coøn coù teân goïi khaùc laø maùy traïng thaùi (State Machine), teân naøy thöôøng söû duïng khi duøng moät heä tuaàn töï ñeå ñieàu khieån 1 heä thoáng soá thöïc hieän moät thuû tuïc hoaëc moät thuaät toaùn töøng böôùc moät. Coù theå ñònh nghóa caùc maùy traïng thaùi baèng caùc giaûn ñoà traïng thaùi, hoaëc moät kieåu löu ñoà ñaëc bieät ñöôïc goïi laø löu ñoà maùy traïng thaùi hay löu ñoà SM (State Machine) duøng ñeå moâ taû ñaëc tính laøm vieäc cuûa moät maùy traïng thaùi Trong thieát keá soá, thöôøng söû duïng töø maùy traïng thaùi ñeå chæ caùc maïch ñoàng boä nhö mạch đếm… ở ñoù caùc giaù trò ra thay ñoåi töø moät traïng thaùi nhò phaân naøy sang moät traïng thaùi nhò phaân khaùc khi maïch ñöôïc cung caáp xung clock. SM coù hai loaïi: Moore vaø Mealy.

4.6.1. Máy trạng thái kiểu MOORE Sô ñoà khoái maùy traïng thaùi kieåu Moore vaø moät maïch counter nhò phaân 2bit laø moät

ví duï cho maùy traïng thaùi kieåu Moore

Caùc t/hieäu ngoaøi

Giaûi maõ t.thaùi keá

Löu tröõ t.thaùi hieän taïi

Giaûi maõ ngoõ ra

Caùc FF

Clock

X1 X2 Xm

Maïng toå hôïp Q1 Q2 Qk

Q1+ Q +2

Q +k

D1 CK D2 CK

Dk CK

Clock

GV: Nguyễn Trọng Hải

Trang 104

Q1 Q2

Qk

Heä toå hôïp (cho caùc ngoõ ra)

Z1 Z2 Zn

Bài Giảng Kỹ Thuật Số

Chương 4

4.6.2. Máy trạng thái kiểu MEALY Sô ñoà khoái maùy traïng thaùi Mealy

Kích Logic thích traïng thaùi keá

Giaù trò vaøo

Boä nhôù traïng thaùi

Traïng thaùi hieän haønh

Logic ra G

Caùc giaù trò ra (Output)

Ngoõ CK

Clock X1 X2

HEÄ TOÅ HÔÏP Q+ 1

Xm

Z1 Z2 Zn D1 CK

Q+ 2

Q1 Q2

D2 CK

Qk+

Qk

Dk CK

Q1

Q2

Qk

Clock 4.7.

LƯU ĐỒ MÁY TRẠNG THÁI Caùc löu ñoà SM coøn ñöôïc goïi laø löu ñoà ASM (Algorithmic State Machine). Löu ñoà SM cho nhieàu thuaän lôïi trong vieäc deã hieåu hôn hoaït ñoäng cuûa moät heä thoáng soá baèng caùch quan saùt thay vì laø giaûn ñoà traïng thaùi töông ñöông. Coù theå chuyeån moät löu ñoà SM cho tröôùc thaønh nhieàu daïng töông ñöông, vaø moãi daïng daãn tröïc tieáp ñeán moät caøi ñaët phaàn cöùng. Ba thaønh phaàn chính cuûa moät löu ñoà SM tên trạng thái

Mã trạng thái

(a) Hoäp traïng thaùi

GV: Nguyễn Trọng Hải

nhánh đúng

nhánh sai

1

0

điều kiện

(b) Hoäp quyeát ñònh

Trang 105

danh sách xuất theo điều kiện (c) Hoäp xuaát theo ñk

Bài Giảng Kỹ Thuật Số

Chương 4



Traïng thaùi cuûa moät heä thoáng ñöôïc bieåu dieån baèng hoäp traïng thaùi (state box), hoäp traïng thaùi coù theå chöùa moät danh saùch giaù trò ra. Maõ traïng thaùi coù theå ñaët beân caïnh hoäp ôû phaàn treân. Teân traïng thaùi ñöôïc ñaët trong hình troøn beân traùi hoäp traïng thaùi.



Hoäp quyeát ñònh (decision box) ñöôïc bieåu dieãn baèng moät kyù hieäu hình thoi vôùi caùc nhaùnh ñuùng vaø sai. Ñieàu kieän ñaët trong hoäp laø moät bieåu thöùc Boolean ñöôïc xaùc ñònh ñeå laáy nhaùnh naøo.



Hoäp xuaát theo ñieàu kieän (conditional output box) chöùa danh saùch vaø caùc giaù trò ra theo ñieàu kieän phuï thuoäc vaøo caû traïng thaùi cuûa heä thoáng vaø caùc giaù trò vaøo

Moät löu ñoà SM ñöôïc xaây döïng töø caùc khoái SM (SM block) moãi khoái SM chöùa chính xaùc moät hoäp traïng thaùi cuøng vôùi caùc hoäp quyeát ñònh vaø caùc hoäp xuaát theo ñieàu kieän lieân heä vôùi traïng thaùi ñoù. Moät khoái SM coù chính xaùc moät ñöôøng vaøo vaø moät hoaëc nhieàu ñöôøng ra vaø moâ taû hoaït ñoäng cuûa maùy trong thôøi gian maø maùy ñang trong traïng thaùi. Khi moät heä thoáng soá ñi vaøo traïng thaùi lieân heä vôùi moät khoái SM cho tröôùc, caùc giaù trò ra ôû danh saùch xuaát trong hoäp traïng thaùi seõ trôû thaønh ñuùng. Caùc ñieàu kieän trong caùc hoäp quyeát ñònh seõ ñöôïc ñònh trò ñeå xaùc ñònh xem ñöôøng naøo ñi theo qua khoái SM. Khi treân ñöôøng ñi coù gaëp moät hoäp xuaát theo ñieàu kieän thì caùc giaù trò ra töông öùng seõ trôû thaønh ñuùng. Moät ñöôøng daãn qua khoái SM töø ngoõ vaøo ñeán ngoõ ra ñöôïc goïi laø ñöôøng daãn noái gheùp (link path) Ví dụ, moät khoái SM Z1, Z2

S1 nhaùnh a

0

1

X1 0

Z3, Z4 0 1

X3

1

nhaùnh b

X3

1

Z5 2

3

n

n ñöôøng ra khi vaøo traïng thaùi S1, caùc giaù trò ra Z1 vaø Z2 = 1. Neáu giaù trò vaøo X1 vaø X2 ñeàu baèng 0 thì Z3 vaø Z4 baèng 1 vaø ôû cuoái thôøi gian traïng thaùi, maùy ñi vaøo traïng thaùi

GV: Nguyễn Trọng Hải

Trang 106

Bài Giảng Kỹ Thuật Số

Chương 4

keá qua ñöôøng ra 1, ngöôïc laïi neáu X1 =1 vaø X3 = 0, giaù trò ra Z5 = 1 vaø ñi vaøo traïng thaùi keá qua ñöôøng ra 3 Toång quaùt thì moät khoái SM coù theå ñöôïc veõ baèng nhieàu daïng khaùc nhau. Hai khoái

SM sau laø töông ñöông.

Z1

S1 0

X1

Z1

S1 0

1

Z2

S2

X3

X1

0

1

1

0 Z2

Z2 S2

S3

1

1

X1 0

X2

S3

Ví dụ, Veõ moät khoái SM töông ñöông vôùi khoái SM sau.

`

0 C 0

1

A 1 1 B 0

Z1

Phaûi tuaân theo moät soá quy taéc nhaát ñònh khi xaây döïng moät khoái SM: Thöù nhaát, vôùi moïi keát hôïp caùc bieán vaøo hôïp leä phaûi coù chính xaùc moät ñöôøng ra ñöôïc ñònh nghóa. Ñieàu naøy laø caàn thieát vì moãi toå hôïp vaøo ñöôïc cho pheùp phaûi daãn ñeán 1 traïng thaùi keá duy nhaát. Thöù hai, khoâng cho pheùp coù ñöôøng hoài tieáp noäi trong moät khoái SM.

GV: Nguyễn Trọng Hải

Trang 107

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, 1 caùch veõ sai vaø 1 caùch veõ ñuùng ñoái vôùi 1 khoái SM coù ñöôøng hoài tieáp

(b) Ñuùng

(a) Sai

Moät khoái SM coù theå coù nhieàu ñöôøng song song maø daãn ñeán cuøng moät ñöôøng ra, vaø hôn moät ñöôøng trong caùc ñöôøng naøy coù theå tích cöïc ñoàng thôøi. Ngoaøi ra cuõng coù theå bieåu dieãn baèng moät khoái SM noái tieáp töông ñöông. Trong khoái noái tieáp naøy coù theå coù moät ñöôøng daãn noái gheùp tích cöïc duy nhaát giöõa ngoû vaøo vaø ra. Vôùi baát cöù toå hôïp naøo cuûa caùc giaù trò vaøo, caùc giaù trò ra seõ gioáng nhö trong daïng song song töông ñöông. Ví dụ,

Z1

Z1

1

Z2

1

X1 0

Z3

1

X2 0

Z4

X1 X3 0

Z2

X2

(a) daïng song song

Z3

X3 Z3

(b) daïng noái tieáp

GV: Nguyễn Trọng Hải

Trang 108

Bài Giảng Kỹ Thuật Số

Chương 4

Coù theå chuyeån moät giaûn ñoà traïng thaùi cuûa maùy tuaàn töï sang löu ñoà SM töông ñöông moät caùch deã daøng. Ví dụ, Giaûn ñoà traïng thaùi 1/0

1/0

S0 0/0

Za

0/0

S1

S2

Zb

Zc

1/Z2

0/Z1

Vaø löu ñoà SM töông ñöông 00 S0

Za link 1

0

X

1

01 Zb

S1

link 2 X

0

1

11

link 3

Zc

S1 0

X

Z1

1 Z2

Giaûn ñoà ñònh thì cho löu ñoà SM clock traïng thaùi X

S0

S1

S2

Za Zb Zc Z1 Z2

GV: Nguyễn Trọng Hải

Trang 109

S2

S0

S0

Bài Giảng Kỹ Thuật Số

Chương 4

ÔÛ giaûn ñoà traïng thaùi, coù caû 2 giaù trò ra Moore vaø Mealy, löu ñoà SM töông ñöông coù 3 khoái, moät khoái öùng vôùi moät traïng thaùi. Caùc giaù trò ra Moore (Za, Zb, Zc) ñöôïc ñaët trong caùc hoäp traïng thaùi, töø ñoù chuùng khoâng phuï thuoäc vaøo giaù trò vaøo. Caùc giaù trò ra Mealy (Z1, Z2) xuaát hieän trong caùc hoäp xuaát theo ñieàu kieän, chuùng phuï thuoäc vaøo caû traïng thaùi vaø giaù trò vaøo. Trong ví duï naøy, moãi khoái SM chæ coù moät hoäp quyeát ñònh, do ñoù chæ phaûi kieåm tra 1 bieán vaøo. Ñoái vôùi caû hai giaûn ñoà traïng thaùi vaø löu ñoà SM, Zc luoân baèng 1 trong traïng thaùi S2. Neáu X=0 trong traïng thaùi S2, Z=1 vaø traïng thaùi keá laø S0. Neáu X=1, Z2 =1 vaø traïng thaùi keá laø S2 ÔÛ giaûn ñoà ñònh thì cho löu ñoà SM, vôùi chuoãi vaøo X=1,1,1,0,0,0. Taát caû caùc thay ñoåi traïng thaùi xaûy ra ngay sau caïnh leân cuûa xung nhòp. Vì caùc giaù trò Moore phuï thuoäc vaøo traïng thaùi vaø chæ coù theå thay ñoåi töùc thôøi sau 1 thay ñoåi traïng thaùi hoaëc moät thay ñoåi giaù trò vaøo. Noùi chung, taát caû caùc giaù trò ra seõ coù giaù trò ñuùng cuûa chuùng ôû caïnh tích cöïc cuûa xung nhòp Ví dụ, Laäp löu ñoà SM cho boä chia nhò phaân song song cho caùc soá nhò phaân

döông, soá bò chia (dividend) 6 bit cho soá chia (divisor) 3 bit ñeå coù ñöôïc thöông 3 bit. Minh hoïa quaù trình chia

100010 110 101 000 1010 110 100

110 101

Pheùp chia coù theå thöïc hieän baèng pheùp toaùn tröø vaø dòch. ñeå xaây döïng boä chia seõ söû duïng thanh ghi soá bò chia 7 bit vaø thanh ghi soá chia 3 bit nhö sau Thanh ghi số bị chia x7

x6

x5

x4

x3

x2

start x1

Sh

Su Bộ trừ và so sánh

y3

C (so sánh)

y2 y1

V Điều khiển

Chỉ báo tràn trên

clock

Số chia Trong quaù trình chia thay vì dòch soá chia sang phaûi tröôùc moãi laàn tröø, ôû ñaây seõ dòch soá bò chia sang traùi. Chuù yù laø caàn theâm 1 bit ôû ñaàu beân traùi thanh ghi soá bò

GV: Nguyễn Trọng Hải

Trang 110

Bài Giảng Kỹ Thuật Số

Chương 4

chia ñeå cho khoâng maát 1 bit khi dòch traùi soá bò chia. Thay vì duøng 1 thanh ghi ñeå chöùa thöông soá, coù theå ñöa thöông soá töøng bit moät vaøo ñaàu beân phaûi cuûa thanh ghi soá bò chia khi dòch traùi soá bò chia Neáu ban ñaàu x7x6x5x4 ≥ y3y2y1 (nghóa laø neáu 4 bit traùi cuûa thanh ghi soá bò chia vöôït quaù hoaëc baèng soá chia) thöông soá seõ lôùn hôn 8 vaø traøn treân xaûy ra. Chuù yù laø neáu x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 7 x 6 x 5 x 4 0000 x 7 x 6 x 5 x 4 8 ≥ = ≥8 y 3 y 2 y1 y 3 y 2 y1 y 3 y 2 y1 baùo traøn vì thöông soá chæ coù 3 bit (toái ña baèng 7) Tín hieäu dòch (Sh = shift) seõ dòch soá bò chia sang traùi moät vò trí. Tín hieäu tröø (Su = Subtract) seõ tröø soá chia cho 4 bit taän cuøng beân traùi cuûa thanh ghi soá bò chia vaø ñaët bit thöông soá (bit taän cuøng beân phaûi thanh ghi soá bò chia) leân 1. Neáu soá chia lôùn hôn 4 bit taän cuøng beân traùi cuûa soá bò chia, ngoõ ra cuûa boä so saùnh laø C=0, ngöôïc laïi C=1. Maïch ñieàu khieån taïo ra chuoåi caùc tín hieäu dòch vaø tröø mong muoán. Baát cöù luùc naøo C=1, tín hieäu tröø ñöôïc taïo ra vaø bit thöông soá ñöôïc ñaët leân Giaûn ñoà traïng thaùi cuûa maïch ñieàu khieån Start’/0

C/Su

C.Start/V S0 Stop

C’.Start/Sh

C’/0

S1

S3 C’/Sh

C/Su

C’/Sh S2 C/Su

Ban ñaàu soá bit chia 6 bit vaø soá chia 3 bit ñöôïc ñöa vaøo caùc thanh ghi thích hôïp. Maïch vaãn ôû traïng thaùi döøng Stop (S0) cho ñeán khi coù tín hieäu Start. Neáu giaù trò ban ñaàu cuûa C=1, thöông soá seõ caàn 4 bit trôû leân. Vì khoâng gian chæ cung caáp cho thöông soá 3 bit, ñieàu kieän naøy laøm traøn treân do ñoù boä chia döøng vaø boä chæ traøn seõ ñaët leân 1 baèng ngoõ ra traøn treân. Bình thöôøng giaù trò ban ñaàu cuûa C=0, vì vaäy dòch seõ xaûy ra ñaàu tieân vaø maïch seõ ñi vaøo traïng thaùi S1. Roài neáu C=1 thì xaûy ra tröø. Sau khi hoaøn taát tröø C seõ luoân luoân baèng 0 vì vaäy xung nhòp keá seõ taïo ra dòch. Quaù trình naøy tieáp tuïc cho ñeán khi xaûy ra 3 laàn dòch vaø ñieàu khieån oå trong traïng thaùi S3. Roài pheùp tröù cuoái cuøng xaûy ra neáu caàn, vaø ñieàu khieån quay veà traïng thaùi döøng. Vôùi vd naøy seõ giaû söø laø khi tín hieäu baét ñaàu (start) xaûy ra noù seõ laø 1 trong thôøi gian 1 clock vaø roài giöõ laø 0 cho ñeán khi heä ñieàu khieån quay veà traïng thaùi S0. Do ñoù Start seõ luoân laø 0 trong caùc traïng thaùi S1, S2, S3

GV: Nguyễn Trọng Hải

Trang 111

Bài Giảng Kỹ Thuật Số

Chương 4

Töø ñoù suy ra löu ñoà SM nhö sau 00 S0 0

Sh Start 1 C

01

S1 0

0 Sh

1 V

S2

Sh S3

1 Su

10 0

C

C

1 Su

11 0

C 1 Su

S0 laø traïng thaùi baét ñaàu, neáu Start=1, tín hieäu so saùnh C ñöôïc kieåm tra, neáu C=1, thöông soá lôùn hôn 3 bit, vì vaäy baùo traøn V=1 ñöôïc taïo ra vaø khoâng coù söï thay ñoåi xaûy ra. Neáu C=0, Sh=1, ôû xung nhòp keá soá bò chia ñöôïc dòch sang traùi vaø traïng thaùi chuyeån sang S1. C ñöôïc kieåm tra trong traïng thaùi S1. Neáu C=1 coù theå coù pheùp tröø, Su=1 vaø khoâng coù söï thay ñoåi traïng thaùi. Neáu C=0, Sh=1 vaø soá bò chia ñöôïc dòch khi traïng thaùi chuyeån sang S2. Hoaït ñoäng ôû S2 thì gioáng S1. Trong traïng thaùi S3 traïng thaùi keá luoân laø S0, vaø C=1 laøm cho pheùp tröø xaûy ra Ví dụ, Laäp löu ñoà Sm cho ñieàu khieån boä nhaân song song cho caùc soá nhò phaân

döông.

Nhaân nhò phaân chæ caàn pheùp toaùn dòch vaø coäng. Thay vì ban ñaàu taïo ra taát caû caùc tích boä phaän roài coäng laïi, thì moãi tích boä phaän (partial product) ñöôïc coäng moãi khi ñöôïc taïo ra vaø do ñoù khoâng caàn coäng moät laàn hôn 2 soá nhò phaân Nhaân 2 soá 4 bit caàn 1 thanh ghi soá bò nhaân (multiplicant register) 4bit, moät thanh ghi soá nhaân 4 bit vaø thanh ghi 8bit cho soá haïng tích. Thanh ghi tích soá laøm vieäc nhö thanh ghi tích luõy laø tích luõy toång caùc tích boä phaän. Thay vì dòch soá bò nhaân sang traùi tröôùc khi coäng, ôû ñaây seõ dòch thanh ghi tích sang phaûi

GV: Nguyễn Trọng Hải

Trang 112

Bài Giảng Kỹ Thuật Số Soá bò nhaân Soá nhaân Caùc tích boä phaän

Chương 4 → →

1101 1011 1101 1101 10111 0000 100111 1101 10001111

Tích soá

Sô ñoà khoái cuûa boä nhaân song song Thanh ghi tích soá Thanh ghi tích luõy

PC

C

Boä coäng

M=1: coäng &dòch M=0: dòch

Soá nhaân

N

Ñieàu khieån

Ad

PC Sh

Ad: tín hieäu coäng Sh: tín hieäu dòch PC: xung clock M: bit boä nhaân N: tín hieäu start C: soá nhôù

Soá bò nhaân Ví duï, nhaân 13 x 11 ñöôïc laøm laïi sau ñaây chæ vò trí caùc bit trong caùc thanh ghi ôû moãi thôøi ñieåm xung nhòp Noäi dung ban ñaàu cuûa t.ghi tích luõy (coäng soá bò nhaân vì M=1) Sau khi coäng Sau khi dòch phaûi Coäng soá bò nhaân vì M=1 Sau khi coäng Sau khi dòch phaûi Boû qua coäng vì M=0 Sau khi dòch coäng soá bò nhaân vì M=1 Sau khi coäng Sau khi dòch (ñaùp soá)

000001011 1101 011011011 001101101 1101 100111101 010011110

M(11) (13)

001001111 1101 100011111 010001111

M=1

M=1

M=0

Ñöôøng chaám chaám laø ñöôøng chia giöõa boä nhaân vaø tích soá Maïch ñieàu khieån phaûi ñöôïc thieát keá ñeå cho ra chuoãi caùc tín hieäu coäng vaø dòch ñuùng.

GV: Nguyễn Trọng Hải

Trang 113

Bài Giảng Kỹ Thuật Số

Chương 4

Giaûn ñoà traïng thaùi cho ñieàu khieån boä nhaân, SV giaûi thích töông töï nhö maïch chia N’/0

S0

- /Sh

MN/Ad

S1

S7 M/Ad

- /Sh

M’N/Sh

M’N/Sh

S2

S6

M’N/Sh

M/Ad

M’N/Sh

- /Sh

S3

S5 S4

M/Ad

- /Sh

N’/0 Ad

N

Ñieàu khieån Coäng - dòch

Sh

PC

K=1 neáu n-1 laàn dòch Boä ñeám

K/Sh

S0

M’N/Sh M’K/Sh

K’/Sh M/Ad

- /Sh

M’/Sh S0

(b) Giaûn ñoà traïng thaùi cuûa ñieàu khieån coäng dòch

N’/0

MN/Ad

M’N/Sh

M/Ad S0

(a) Ñieàu khieån boä nhaân

S0

MN/Ad

S0

(c) Giaûn ñoà traïng thaùi cuoái cuûa ñieàu khieån coäng dòch M’K’/Sh

S0

Laäp löu ñoà SM cho ñieàu khieån boä nhaân, ñieàu khieån naøy taïo ra chuoãi caùc xung coäng vaø dòch mong muoán cuûa boä nhaân nhò phaân. Boä ñeám seõ ñeám soá laàn dòch vaø xuaát K=1 tröôùc khi laàn dòch cuoái cuøng xaûy ra. Löu ñoà SM cho ñieàu khieån boä nhaân töông öùng vôùi giaûn ñoà traïng thaùi hình (c)

GV: Nguyễn Trọng Hải

Trang 114

Bài Giảng Kỹ Thuật Số

Chương 4 S0

0 1

N 1 M

0

Ad

Sh S2

Sh

S1 1

K

1

0

0

M

Sh

Ad 1

GV: Nguyễn Trọng Hải

Trang 115

M

0

Bài Giảng Kỹ Thuật Số 4.8.

Chương 4

BỘ NHỚ BÁN DẪN Boä nhôù baùn daãn chia laøm hai loaïi chính •

Boä nhôù baûng (table memory)



Boä nhôù haøm (function memory) Boä nhôù baùn daãn

Boä nhôù haøm

Boä nhôù baûng

RAM Tónh Ñoäng

PLD

ROM MROM PROM EPROM EPROM

PLA

PAL LCA PPAL EPPAL EEPPAL

EPLD

Vôùi

PEEL (Pro. elec. erasable logic

GAL (generic array logic)

RAM = Random Access Memory ROM = Read Only Memory PLD = Programmable Logic Device PLA = Programmable Logic Array PAL = Programmable Array Logic LCA = Logic Cell Array M = Mask programed P = Programmable EP = Erasable and Programmable EEP = Electrically Erasable and Programmable Bộ nhớ bảng, •

Đòa chæ A ñöôïc ñònh nghóa trong daõy 0≤ A ≤ 2N –1 Vôùi ñoä roäng töø cuûa ñòa chæ laø N, giaù trò cuûa N phuï thuoäc vaøo kích thöôùc cuûa boä nhôù. Coù theå caát döõ lieäu ôû moät ñòa chæ trong 2N ñòa chæ. Ñoä roäng töø döõ lieäu laø m = 1…16 bit



Dung löôïng boä nhôù K ñöôïc xaùc ñònh bôûi: K=mxn (bit) Vôùi m laø ñoä roäng töø döõ lieäu, n laø soá ñòa chæ Tính theo byte (K/8) cho caùc ñoä roäng töø döõ lieäu laø 8 hay 16 bit

GV: Nguyễn Trọng Hải

Trang 116

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, Baûng cho ROM coù N=3bit ñòa chæ, m=2 bit döõ lieäu

Giaù trò thaäp phaân 0 1 2 3 4 5 6 7

Ñòa chæ a2 a1 a0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1

Döõ lieäu d1 d0 d01 d00 d11 d10 d21 d20 d31 d30 d41 d40 d51 d50 d61 d60 d71 d70

D0 D1 D2 D3 D4 D5 D6 D7

Bộ nhớ hàm •

Chöùa caùc haøm logic (Boolean) thay vì laø caùc baûng. Moãi bieán cuûa baûng chaân trò coù theå ñöôïc bieåu dieãn baèng haøm logic. Vieát döôùi daïng tích chuaån thì haøm logic cuûa bieán d0 ôû ví duï treân laø d0 = a2 .a1.a0 d00 +a2 .a1.d10 +...+a2a1a0 d70

= m0d00 + m1d10+…+m7d70 (vôùi mi: minterm thöù i) neáu trong baûng coù ít dio = 1 thì vieäc söû duïng boä nhôù haøm tieän lôïi hôn boä nhôù baûng Các thiết bị logic lập trình được PLD (Programmable Logic device) •

PLD laø teân goïi toång quaùt cuûa moät IC soá maø ngöôøi ta coù theå laäp trình ñöôïc noù ñeå thöïc hieän caùc haøm logic khaùc nhau. Vì haøm logic ñöôïc bieåu dieãn döôùi daïng toång caùc tích hay tích caùc toång neân caáu truùc maïch trong PLD thoâng thöôøng laø moät daõy AND vaø OR ñoàng daïng (identical cell) maø coù theå laäp trình töøng coång ñöôïc.



Caùc thieát keá duøng PLD coù caùc öu ñieåm sau: ¾ Taêng khaû naêng tích hôïp. coù theå giaûm khoái löôïng veà maïch thieát keá trong khi vaãn coù theå taêng chöùc naêng cho maïch ¾ Coâng suaát thaáp. CMOS vaø moät soá ít hôn caùc maïch keát hôïp seõ laøm giaûm ñaùng keå coâng suaát nguoàn cung caáp ¾ Taêng ñoä tin caäy. Nguoàn cung caáp thaáp vaø vieäc giaûm toái ña caùc maïch lieân keát ôû ngoaøi laøm cho vieäc truyeàn giöõa caùc khoái ñaùng tin caäy hôn ¾ Giaù thaønh thaáp. ¾ Deã söû duïng. ¾ Deã daøng thay ñoåi. Khi caàn coù söï thay ñoåi trong thieát keá, khoâng caàn phaûi theâm thaét caùc “daây noái”, taát caû laø thay ñoåi beân trong cuûa PLD vaø coù theå thöïc hieän caùc thay ñoåi ñoù moät caùch nhanh choùng.

GV: Nguyễn Trọng Hải

Trang 117

Bài Giảng Kỹ Thuật Số 4.9.

Chương 4

ROM - THIẾT KẾ HỆ THỐNG SỐ DÙNG ROM

4.9.1. ROM ROM laø moät maïch toå hôïp coù n ngoõ vaøo vaø m ngoõ ra. Caùc ngoõ vaøo ñöôïc goïi laø ñòa chæ (address input) vaø thöôøng ñöôïc ñaët laø A0A1…An-1. Caùc ngoõ ra ñöôïc goïi laø caùc ngoõ ra döõ lieäu (data output) vaø thöôøng ñöôïpc ñaët teân laø D0D1D2…Dm-1

2n x m ROM

address input (n đường)

A0 A1 A2

D0 D1 D2

An-1

Dm-1

address output (m đường)

Hình 1-2. Caáu truùc cô baûn cuûa moät ROM 2n x m ROM chöùa baûng chaân trò cuûa moät haøm logic toå hôïp n ngoõ vaøo, m ngoõ ra. Ví dụ, baûng chaân trò cuûa haøm toå hôïp 3 ngoõ vaøo 4 ngoõ ra vaø ta coù theå chöùa noù trong 1 ROM 23 x 4 (8x 4). Boû qua caùc trì hoaõn veà thôøi gian, caùc ngoõ ra döõ lieäu cuûa moät ROM ôû moïi luùc laø caùc bit ra cuûa haøng trong baûng chaân trò ñöôïc choïn bôûi caùc ngoõ vaøo ñòa chæ

A2 0 0 0 0 1 1 1 1

Input A1 0 0 1 1 0 0 1 1

A0 0 1 0 1 0 1 0 1

D3 1 1 1 0 0 0 0 1

Output D2 D1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0

D0 0 1 1 1 1 0 0 0

Chú ý •

Coù theå duøng ROM nhö baát cöù phaàn töû logic toå hôïp naøo



ROM laø boä nhôù khoâng boác hôi (nonvolatile memory) vì noäi dung cuûa noù vaãn giöõ ñöôïc ngay caû khi khoâng caáp ñieän



Vaán ñeà hoaùn vò caùc coät bit trong baûng chaân trò cuûa haøm caàn ghi ROM



Khi duøng ROM ñeå chöùa moät baûng chaân trò cho tröôùc, caùc tín hieäu input vaø output ñoïc töø phaûi sang traùi trong baûng chaân trò thöôøng ñöôïc gaùn vaøo caùc ngoõ vaøo ñòa chæ vaø ngoõ ra data cuûa ROM vôùi vôùi caùc nhaõn theo thöù töï taêng daàn

Ví dụ, Duøng ROM ñeà thöïc hieän haøm nhaân nhò phaân khoâng daáu cho 2 soá nhò phaân 4 bit. Neáu duøng maïch rôøi ta duøng caùc IC 74284 vaø 74285, coøn duøng ROM thì söû duïng ROM 28 x 8 (256 x 8) vôùi keát noái nhö hình 1-5

GV: Nguyễn Trọng Hải

Trang 118

Bài Giảng Kỹ Thuật Số

Chương 4

256 x 8 ROM A0 A1 A2 A3 A4 A5 A6 A7

Y (Số bị nhân) X (Số nhân)

D0 D1 D2 D3 D4 D5 D6 D7

Tích số

Noäi dung ghi ROM ôû treân nhö sau (daïng file vaên baûn hex)

Ñòa chæ

00: 10: 20: 30: 40: 50: 60: 70: 80: 90: A0: B0: C0: D0: E0: F0:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00 02 04 06 08 0A 0C 0E 10 12 14 16 18 1A 1C 1E

00 03 06 09 0C 0F 12 15 18 1B 1E 21 24 27 2A 2D

00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C

00 05 0A 0F 14 19 1E 23 28 2D 32 37 3C 41 46 4B

… … … … … … … … … … … … … … … …

Tích soá cuûa 1 x 5

4.9.2. Cấu trúc nội của ROM Cô cheá söû duïng ROM ñeå löu tröõ thì thay ñoåi öùng vôùi caùc coâng ngheä cuûa ROM khaùc nhau. Trong phaàn lôùn caùc ROM, söï xuaát hieän hoaëc vaéng maët cuûa moät diode hay transistor seõ phaân bieät giöõa 0 vaø 1 Cấu trúc với giải mã 1 chiều

GV: Nguyễn Trọng Hải

Trang 119

Bài Giảng Kỹ Thuật Số

Chương 4

Sô ñoà ROM 8x 4 vôùi caáu truùc giaûi maõ 1 chieàu (duøng 1 boä giaûi maõ TTL vaø caùc diode). HI

A0 A1 A2

A B C

HI

G1 G2A G2B

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

0

D0 D1 D2 D3

Moãi ñöôøng ra boä giaûi maõ ñöôïc goïi laø ñöôøng töø (word line) bôûi vì noù choïn moät haøng hoaëc moät töø cuûa baûng chöùa trong ROM Moãi ñöôøng thaúng ñöùng trong hình ñöôïc goïi laø ñöôøng bit (bit line) bôûi vì noù töông öùng vôùi moät bit ra cuûa ROM Nhận xét: coù diode töông öùng möùc 0, khoâng coù diode töông öùng möùc 1 Caùc MOS ROM thöôøng duøng transistor thay vì laø diode ôû moãi vò trí maø bit seõ ñöôïc löu tröõ. Cấu trúc với giải mã 2 chiều Neáu xaây döïng moät ROM 128x1 duøng caáu truùc ôû phaàn tröôùc phaûi söû duïng moät boä giaûi maõ 7 sang 128, nghóa laø phaûi söû duïng ñeán moät löôïng lôùn 128 caùc coång NAND 7 ngoõ vaøo, neáu thieát keá cho ROM vôùi haøng trieäu bits hoaëc nhieàu hôn seõ khoâng coù boä giaûi maõ 20 sang 1048576. Thay vaøo ñoù ngöôøi ta seõ söû duïng caáu truùc khaùc ñöôïc goïi laø giaûi maõ hai chieàu (two-dimentional decoding)

GV: Nguyễn Trọng Hải

Trang 120

Bài Giảng Kỹ Thuật Số

Chương 4

Ví dụ, ROM 128 x 1 HI

A4 A5 A6

A B C

HI

G1 G2A G2B

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

0

0 1 2 3 4 5 6 7 8 9 101112131415 G2 S0 S1 S2 S3 D0

0

A0 A1 A2 A3

D0

3 bit ñòa chæ cao A6A5A4 seõ choïn haøng, moãi haøng chöùa 16 bit baét ñaàu taïi ñòa chæ A6A5A40000. Khi ñaët ñòa chæ cho ROM, 16bit ôû haøng ñöôïc choïn ñöa vaøo boä MUX vaø 4 bit ñòa chæ thaáp seõ choïn bit data mong muoán. Ngoaøi vieäc giaûm tính phöùc taïp vieäc giaûi maõ, giaûi maõ 2 chieàu coù moät thuaän lôïi khaùc laø ROM coù moät kích thöôùc vaät lyù gaàn vuoâng, ñieàu naøy quan troïng cho vieäc cheá taïo vaø ñoùng goùi IC Với ROM coù nhieàu ngoõ ra döõ lieäu, caùc daõy löu tröõ töông öùng vôùi moãi ngoõ ra döõ lieäu coù theå ñöôïc laøm heïp hôn ñeå ñaït ñöôïc boá trí chip gaàn vôùi hình vuoâng hôn. Ví dụ, Moät boá trí cuûa ROM 32K x 8 A6 A7 A8 A9 A10 A11 A12 A13 A14 A0 A1 A2 A3 A4 A5

9 to 512 decoder

512 x 64 512 x 64 512 x 64 512 x 64 512 x 64 512 x 64 512 x 64 512 x 64 array array array array array array array array

64 to 1 64 to 1 64 to 1 64 to 1 64 to 1 64 to 1 64 to 1 64 to 1 MUX MUX MUX MUX MUX MUX MUX MUX

GV: Nguyễn Trọng Hải

Trang 121

Bài Giảng Kỹ Thuật Số

Chương 4

4.9.3. Các kiểu ROM thương mại Baûng caùc kieåu ROM thöông maïi Kieåu Coâng ngheä Chu kyø ñoïc Mask ROM NMOS, CMOS 25 – 500ns Mask ROM Bipolar <100ns

Chu kyø ghi 4 tuaàn 4 tuaàn

PROM

Bipolar

<100ns

5 phuùt

EPROM EEPROM

NMOS, CMOS NMOS

25-500ns 50-500ns

5 phuùt 10ms/bytes

Chuù thích Ghi 1 laàn, coâng suaát thaáp Ghi 1 laàn, coâng suaát cao, maät ñoä thaáp Ghi 1 laàn coâng suaát cao, khoâng coù maët naï Duøng laïi ñöôïc, coâng suaát thaáp Giôùi haïn 10000 laàn ghi/vò trí

Caùc ROM thoâng duïng nhaát laø caùc EPROM: 2764, 27128, 27256, vaø 27512 8K x 8 10 9 8 7 6 5 4 3 25 24 21 23 2 20 22 27 1

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

16K x 8 O0 O1 O2 O3 O4 O5 O6 O7

CE OE PGM VPP

10 9 8 7 6 5 4 3 25 24 21 23 2 26 20 22 27 1

2764

Chuù yù:

11 12 13 15 16 17 18 19

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13

O0 O1 O2 O3 O4 O5 O6 O7

CE OE PGM VPP

32K x 8 11 12 13 15 16 17 18 19

10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 20 22 1

27128

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14

O0 O1 O2 O3 O4 O5 O6 O7

11 12 13 15 16 17 18 19

CE OE VPP 27256

chaân VCC phaûi noái vôùi +5V chaân VIH phaûi noái vôùi tín hieäu logic HIGH hôïp leä chaân VPP duøng ñeå ñöa vaøo ñieän aùp laäp trình

4.9.4. Các ngõ vào điều khiển và định thì ROM Caùc ngoõ ra cuûa ROM thöôøng phaûi ñöôïc noái vaøo moät BUS 3 traïng thaùi, ôû ñoù caùc thieát bò khaùc coù theå laùi BUS ôû caùc thôøi ñieåm khaùc nhau. Do ñoù, phaàn lôùn caùc chip ROM thöông maïi coù ngoõ ra döõ lieäu 3 traïng thaùi vaø moät ngoõ vaøo Output Enable (OE: cho pheùp xuaát) ñeå cho pheùp caùc ngoõ ra Nhieàu öùng duïng ROM ñaëc bieät laø öùng duïng löu tröõ chöông trình seõ coù nhieàu ROM ñöôïc noái chung vaøo 1 BUS, moãi laàn chæ coù 1 ROM laùi BUS. Phaàn lôùn caùc ROM coù ngoõ vaøo chip select (CS: choïn chip) ñeå laøm ñôn giaûn vieäc thieát keá caùc heä thoáng. Ngoaøi OE coøn caàn phaûi coù CS ñeå cho pheùp ngoõ ra 3 traïng thaùi Tuy nhieân trong nhieàu ROM, CS cuõng laøm vieäc nhö ngoõ vaøo caét nguoàn caáp ñieän (power down input), CS ôû möùc khoâng tích cöïc thì khoâng caáp nguoàn cho caùc decoder noäi, caùc driver vaø caùc MUX cuûa ROM. ÔÛ cheá ñoä chôø naøy (standby mode) 1 ROM tieâu thuï ít hôn 10% coâng suaát so vôùi cheá ñoä hoaït ñoäng (active mode).

GV: Nguyễn Trọng Hải

Trang 122

Bài Giảng Kỹ Thuật Số

Chương 4

Hình sau chæ caùc ngoõ vaøo CS vaø OE ñöôïc söû duïng nhö theá naøo ôû beân trong moät ROM tieâu bieåu A0 A1

row decoder

Storage Array Power on

Power on

Am-1

Power on

Am Am+1

colum MUX

An-1 CS OE

4.9.5. Thiết kế hệ tuần tự dùng ROM Coù theå thieát keá deã daøng moät heä tuaàn töï duøng ROM keát hôïp vôùi caùc FF. Moâ hình toång quaùt cuûa heä tuaàn töï duøng ROM vaø caùc D-FF coù xung nhòp X1 X2

Z1 Z2 Zn

ROM Q1+

Xm Q1 Q2 Qk

Q+ 2

Qk+

D1 CK D2 CK

Dk CK

Q1

Q2

Qk

Clock Phaàn toå hôïp cuûa heä tuaàn töï coù theå duøng ROM ñeå thöïc hieän caùc haøm ra (Z1, Z2, …, Zn) vaø caùc haøm traïng thaùi keá (Q1+, Q2+, …, Qk+). Traïng thaùi cuûa heä ñöôïc chöùa trong moät thanh ghi (taïo baèng caùc D-FF) vaø ñöa hoài tieáp veà ngoõ vaøo cuûa ROM.

GV: Nguyễn Trọng Hải

Trang 123

Bài Giảng Kỹ Thuật Số

Chương 4

Nhö vaäy heä tuaàn töï vôùi m input, n output vaø k bieán traïng thaùi coù theå ñöôïc caøi ñaët baèng k D-FF vaø ROM vôùi (m+k) ngoõ vaøo (nghóa laø 2m+k töø word) vaø (n+k) output Thöông duøng D FF hôn JK FF vì söû duïng caùc FF vôùi 2 ngoõ vaøo seõ caàn phaûi taêng soá ngoõ ra ôû ROM. Ví dụ, Thieát keá maïch chuyeån ñoåi maõ BCD sang maõ quaù 3, ngoõ vaøo vaø ra laø noái tieáp vôùi LSB ñi tröôùc input (BCD) X t2 t1 t0 t3 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1

Output (excess – 3) Y t3 t2 t1 t0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0

Baûng treân lieät keâ caùc input vaø output mong muoán taïi caùc thôøi ñieåm t0, t1, t2 vaø t3 Tröôùc heát thaønh laäp baûng traïng thaùi, sau ñoù ruùt goïn baûng baèng caùch so caùc haøng gioáng nhau thì gom laïi. Khi so caùc haøng coù chöùa daáu gaïch ngang (ñaây laø tröôøng hôïp “don’t care” thì daáu gaïch ngang seõ khôùp vôùi baát cöù traïng thaùi naøo hoaëc baát cöù giaù trò ra naøo. Baèng caùch so khôùp caùc haøng theo caùch naøy, ta coù H ≡ I ≡ J ≡ K ≡ L vaø M≡ N ≡ P, sau khi khöû I, J, K, L N vaø P thaáy raèng E ≡ F ≡ G vaø baûng ñöôïc thu goïn thaønh 7 haøng sau Thời gian

Chuỗi vào nhận được

t0 t1

reset 0 1 00 01 10 11 000 001 010 011 100 101 110 111

t2

t3

GV: Nguyễn Trọng Hải

Trạng thái hiện tại A B C D E F G H I J K L M N P

Trang 124

Trạng thái kế X = 0 X=1 B C D F E G H L I M J N K P A A A A A A A A A A -

Giá trị ra hiện tại (Z) X=0 X=1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 -

Bài Giảng Kỹ Thuật Số

Chương 4

Baûng traïng thaùi ñöôïc ruùt goïn cuûa boä chuyeån ñoåi maõ Thời gian

Trạng thái hiện tại A B C D E H M

t0 t1 t2 t3

Trạng thái kế X = 0 X=1 B C D F E G H H H M A A A -

Giá trị ra hiện tại (Z) X=0 X=1 1 0 1 0 0 1 0 1 1 0 0 1 1 -

Coù theå duøng moät caùch khaùc ñeå suy ra baûng treân baèng caùch baét ñaàu baèng giaûn ñoà traïng thaùi. Giaûn ñoà traïng thaùi coù daïng hình caây. Moãi ñöôøng baét ñaàu ôû traïng thaùi reset bieåu dieãn moät trong 10 chuoãi vaøo coù theå coù

t0

A

0/1

1/0

Reset

B

t1

C 1/0

0/1

D t2

F 1/1

0/0

H t3

0/0

L 1/1

0/0

E

0/1

1/0

0/1

J

N

I

0/0

1/1

0/0

0/1

0/0

G 1/0

M 1/1

0/1

0/1

1/0

P

K 0/0

0/1

Baûng gaùn traïng thaùi vaø baûng chuyeån traïng thaùi Thôøi gian t0 t1 t2 t3

Traïng thaùi hieän taïi A B C D E H M

GV: Nguyễn Trọng Hải

Q 1Q 2Q 3 000 010 011 101 100 111 110

Trang 125

Q1+Q2+Q3+ X=0 X=1 010 011 101 100 100 100 111 111 111 110 000 000 000 ---

Z 0 1 1 0 0 1 0 1

1 0 0 1 1 0 1 ---

Bài Giảng Kỹ Thuật Số

Chương 4

Caøi ñaët boä chuyeån ñoåi maõ naøy duøng ROM vaø caùc D-FF. Vì coù 7 traïng thaùi neân caàn 3 DFF. Nhö vaäy caàn ROM coù 4 input (24 word) vaø 4 output . Duøng gaùn nhò phaân tröïc tieáp, xaây döïng baûng chuyeån traïng thaùi cho traïng thaùi keá cuûa caùc D-FF nhö laø haøm cuûa traïng thaùi hieän taïi vaø input. Vì ñang söû duïng caùc D FF, D1 = Q1+, D2=Q2+, D3=Q3+. baûng chaân trò cho ROM xaây döïng ñöôïc deã daøng töø baûng chuyeån traïng thaùi. Nhö vaäy caùc output cuûa ROM (Z, D1, D2, D3) laø caùc haøm cuûa caùc input cuûa ROM (X, Q1, Q2, Q3) (a) Baûng traïng thaùi T. thaùi h.taïi A B C D E H M

T. thaùi keá X=0 B D E H H A A

X=1 C E E H M A ---

(b) baûng chuyeån traïng thaùi

G.trò ra h.taïi Z X=0 1 1 0 0 1 0 1

X=1 0 0 1 1 0 1 ---

Q1+Q2+Q3+

Q 1Q 2Q 3 A B C D E H M

000 001 010 011 100 101 110

X=0 001 011 100 101 101 000 000

X=1 010 100 100 101 110 000 ---

Baûng chaân trò cho ROM

X

Q1

Q2

Q3

Z

D1 (Q1+)

D2 (Q2+)

D3 (Q3+)

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 0 0 1 0 1 x 0 0 1 1 0 1 x x

0 0 1 1 1 0 0 x 0 1 1 1 1 0 x x

0 1 0 0 0 0 0 x 1 0 0 0 1 0 x x

1 1 0 1 1 0 0 x 0 0 0 1 0 0 x x

GV: Nguyễn Trọng Hải

Trang 126

Z X=0 1 1 0 0 1 0 1

X=1 0 0 1 1 0 1 ---

Bài Giảng Kỹ Thuật Số

Chương 4

Caøi ñaët maïng tuaàn töï duøng ROM X1

Z

ROM 16 words x 4 bit

Q1+

D1 CK

Q+ 2

Q1 Q2

D2 CK

Q+ 3

Q3

Dk CK

Q1 Q2

Q3

Clock 4.10. PLD tổ hợp (Combinational PLD) 5.3.1. Dãy logic lập trình được (PLA) PLA thöïc hieän cuøng chöùc naêng cô baûn nhö ROM. Moät PLA vôùi n input vaø m output coù theå caøi ñaët m haøm cuûa n bieán. Toå chöùc noäi cuûa PLA thì khaùc vôùi toå chöùc noät cuûa ROM Caáu truùc PLA (PLA nxm vôùi p soá haïng tích) n input

Dãy OR

Dãy AND

p đường word (số hạng tích) Ví dụ, Toå chöùc noäi cuûa PLA 4x3 vôùi 6 soá haïng tích a

b

c

m đường ra

d Dãy OR

a'bd abd ab'c' b'c c bc Dãy AND

GV: Nguyễn Trọng Hải

Trang 127

Các đường Word

F1 F2 F3 Output

Bài Giảng Kỹ Thuật Số

Chương 4

Vôùi kyù hieäu a' b d

a' b d

a'bd

a'bd c bc

a'bd

ab'c'

c a'bd ab'c' bc F3

F3

Baûng PLA cho PLA ôû treân a 0 1 1 -

b 1 1 0 0 1

c 0 1 1 1

d 1 1 -

F1 1 1 1 1 0 0

F2 1 0 0 0 1 0

F3 0 1 1 0 0 1

Moãi haøng trong baûng bieåu dieån moät soá haïng tích toång quaùt. Có hai loại PLA: •

PLA laäp trình maët naï (Mask programmable): ñöôïc laäp trình luùc cheá taïo (töông töï PROM)



PLA laäp trình tröôøng (field programmable) coù caùc noái keát caàu chì (fusible link) coù theå laøm ñöùt ñeå löu tröõ caùc maãu trong caùc daõy AND vaø OR.

Chú ý. Khi soá bieán vaøo nhoû, thì toång quaùt laø ROM kinh teá hôn duøng PLA. Tuy nhieân khi soá bieán vaøo lôùn, PLA thöôøng cho giaûi phaùp kinh teá hôn ROM 5.3.2. Logic dãy lập trình được PAL (Programmable Array Logic) PAL laø tröôøng hôïp ñaëc bieät cuûa PLA, trong ñoù caùc daõy AND laäp trình ñöôïc vaø daõy OR laø coá ñònh. Caáu truùc cô baûn cuûa PAL thì gioáng nhö PLA Moät ñoaïn PAL

GV: Nguyễn Trọng Hải

Trang 128

Bài Giảng Kỹ Thuật Số

Chương 4

Vì chæ coù daõy AND laø laäp trình ñöôïc, do ñoù PAL kinh teá hôn PLA. Caùc nhaø thieát keá logic thöôøng söû duïng caùc PAL ñeå thay theá caùc coång logic khi phaûi caøi ñaët nhieàu haøm Phaàn lôùn caùc nhaø saûn xuaát PAL chæ ra thieát keá noäi cuûa PAL ôû kyù hieäu cuûa noù Ví dụ PAL

16 L 8 B – 4

`soá input

tieâu taùn coâng suaát 1/4w

Caáu truùc ra

toác ñoä

Soá output Vôùi caáu truùc ra H = High ngoõ ra taùc ñoäng möùc cao L = Low ngoõ ra taùc ñoäng möùc thaáp C = Complement ngoõ ra coù caû hai ñöôøng taùc ñoäng möùc cao vaø thaáp Toác ñoä: khoaûng traéng – toác ñoä chuaån A= toác ñoä cao B=toác ñoä raát cao D=toác ñoä cöïc cao Tieâu taùn coâng suaát blank = full -2 = ½ -4 = ¼ Ví dụ, kyù hieäu logic truyeàn thoáng cho PAL 16L8 PAL16L8 1 2 3 4 5 6 7 8 9 11

I1 I2 I3 I4 I5 I6 I7 I8 I9 I10

O1 O2 O3 O4 O5 O6 O7 O8

19 18 17 16 15 14 13 12

chaân 10, 20 cho nguoàn vaø ñaát Xem theâm sô ñoà logic cuûa PAL 14L4 vaø PAL 1246 ôû caùc trang 240, 241 trong Fundamentals of logic design cuûa Roth

GV: Nguyễn Trọng Hải

Trang 129

Bài Giảng Kỹ Thuật Số

Chương 4

Khi thiết kế với PAL phaûi ñôn giaûn hoùa caùc phöông trình logic vaø coá ñöa chuùng khôùp vaøo moät (hoaëc nhieàu) caùc PAL. Khoâng gioáng nhö caùc PLA (toång quaùt hôn) caùc soá haïng AND khoâng theå chia seû cho 2 hay nhieàu coång OR, vôùi moät kieåu PAL cho tröôùc, soá soá haïng AND ñöa vaøo moãi coång OR laø coá ñònh vaø bò giôùi haïn. Neáu soá soá haïng AND trong haøm ñöôïc ñôn giaûn laø quaù lôùn thì ta coù theå choïn PAL coù nhieàu ngoõ vaøo vaø ít output hôn Ví dụ, duøng PAL thieát keá maïch ñoåi moät soá nhò phaân 4 bit sang soá HEX vaø xuaát maõ ASCII 7 bit cho soá hex W 0 0 . . 1 1 . . 1

Input X Y 0 0 0 0

Z 0 1

số hex 0 1

A6 0 0

mã ASCII cho số mã hex A5 A4 A3 A2 A1 A0 1 1 0 0 0 0 1 1 0 0 0 1

0 0

0 1

1 0

9 A

0 1

1 0

1 0

1 0

0 0

0 0

1 1

1

1

1

F

1

0

0

0

1

1

0

W X Y Z

A6 PAL

B

A5 A4 A3 A2 A1 A0

Chú ý: Vì A5 = A4 vaø A6 = A 4 neân chæ caàn duøng PAL taïo ra 5 haøm cuûa 4 bieán Ñeå vieát ñöôïc baûng PAL phaûi ruùt goïn caùc haøm ra vaø keát quaû nhö sau A 4 =W+X.Y

A 4 =WX+WY

A 3 =W X.Y

A 3 =W+X+Y

A 2 =WX+XZ+XY

A 2 =X+W Y.Z

A1=WX.Y.Z+YZ+ WY

A 0 =WZ+X.YZ+WXZ+WYZ

Sau ñoù tìm caùc PAL thích hôïp ñeå caøi ñaët caùc haøm treân. Choïn ñöôïc PAL12H6, coù moät output khoâng duøng. Coù theå vieát laïi chöông trình cho A2 nhö sau

GV: Nguyễn Trọng Hải

Trang 130

Bài Giảng Kỹ Thuật Số

Chương 4

A 2 =WX+(XZ+XY)=WX+B vôùi B=XZ+XY

roài coù theå söû duïng ngoõ ra theâm ñeå taïo ra B vaø noái B vaøo moät trong caùc ngoõ vaøo PAL nhö ôû hình treân. Vôùi caùch naøy ta theå taïo ra 5 haøm vôùi moät PAL Xem theâm caùc ví duï trong chöông 8 cuûa Digital desgn principle and practices cuûa John F. Wakerly 5.3.3. Thiết kế hệ tuần tự dùng PLA Coù theå caøi ñaët caùc heä tuaàn töï duøng PLA vaø caùc FF theo caùch töông töï nhö duøng ROM vaø caùc FF. Tuy nhieân trong tröôøng hôïp caùc PLA, söï gaùn traïng thaùi laø quan troïng vì vieäc söû duïng caùc pheùp gaùn toát coù theå giaûm ñöôïc soá caùc soá haïng tích caàn coù vaø töø ñoù giaûm ñöôïc kích thöôc cuûa PLA Ví dụ, caøi ñaët baûng traïng thaùi cuûa VD thieát keá duøng ROM nhöng baây giôø duøng 1 PLA 3 DFF. T. thaùi h.taïi T. thaùi keá G.trò ra h.taïi Z X=0 X=1 X=0 X=1 A B C 1 0 B D E 1 0 C E E 0 1 D H H 0 1 E H M 1 0 H A A 0 1 M A --1 --Caáu hình maïch thì gioáng nhö duøng ROM ngoaïi tröø thay theá ROM baèng moät PLA vôùi kích thöôùng thích hôïp. Söû duïng pheùp gaùn nhò phaân tröïc tieáp daãn ñeán baûng chaân trò sau

X 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Q1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

GV: Nguyễn Trọng Hải

Q2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Q3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Z 1 1 0 0 1 0 1 x 0 0 1 1 0 1 x x

D1 (Q1+) 0 0 1 1 1 0 0 x 0 1 1 1 1 0 x x

Trang 131

D2 (Q2+) 0 1 0 0 0 0 0 x 1 0 0 0 1 0 x x

D3 (Q3+) 1 1 0 1 1 0 0 x 0 0 0 1 0 0 x x

Bài Giảng Kỹ Thuật Số

Chương 4

Coù theå chöùa baûng naøy trong moät PLA 4 input, 13 soá haïng tích vaø 4 output nhöng thaáy raèng noù seõ khoâng thuaän lôïi hôn vieäc duøng ROM ñaõ laøm ôû phaàn tröôùc. Neáu söû duïng pheùp gaùn traïng thaùi, phöông trình ra vaø phöông trình vaøo caùc D-FF

D1 = Q1 Q 2 + Q1Q 2

D2 = Q2 D 3 = Q 2 .Q 3 + XQ 1 Q 2 + XQ 1 .Q 2 + X.Q 1 .Q 2 Q 3 Z = XQ 3 + XQ 3

Baûng PLA töông öùng vôùi caùc phöông trình naøy nhö sau.

X 0 1 0 0 1

Q1 1 0 1 0 0 -

Q2 0 1 0 0 0 0 1 -

Q3 1 0 0 1

Z 0 0 0 0 0 0 0 1 1

D1 (Q1+) 1 1 0 0 0 0 0 0 0

D2 (Q2+) 0 0 1 0 0 0 0 0 0

D3 (Q3+) 0 0 0 1 1 1 1 0 0

Ñeå caøi ñaët baûng naøy caàn 1 PLA coù 4 input, 9 soá haïng tích vaø 4 output. 5.3.4. Thiết kế hệ tuần tự dùng PAL Duøng caùc PAL toå hôïp, caùch thieát keá töông töï nhö vôùi PLA nhöng phaûi chuù yù ruùt goïn haøm ra 4.11. PLD tuần tự (sequential PLD = PLA(PAL)+các FF) Phaàn lôùn caùc thieát keá soá caàn caùc FF, caùc PLD coù chöùa caùc FF nhö vaäy thöôøng ñöôïc goïi laø PLD coù thanh ghi (registered PLD) hay PLD tuaàn töï. Moät ñoaïn cuûa PAL tuaàn töï.

A A

B

B Q

Q

clock

EN

D Q

Q

Q

Bộ đệm ra đảo 3 t.thái

A B

D-FF ñöôïc laùi töø moät coång OR. Ngoõ ra FF ñöôïc ñöa hoài tieáp veà daõy AND laäp trình ñöôïc qua moät boä ñeäm. Nhö vaäy caùc ngoõ vaøo coång AND coù theå ñöôïc noái vaøo A, A ,…,Q hay Q . Caùc phöông trình traïng thaùi keá

GV: Nguyễn Trọng Hải

Trang 132

Bài Giảng Kỹ Thuật Số

Chương 4

Q + = D = ABQ + A BQ Ngoõ ra FF ñöôïc noái vaøo boä ñeäm ñaûo 3 traïng thaùi, cho pheùp khi EN=1 Ñaëc tính cuûa moät soá PAL tuaàn töï thoâng duïng. Moãi PAL chöùa 1 thanh ghi coù töø 4 ñeán 10 D-FF. 6 PAL ñaàu trong baûng töông töï vôùi 16R4 (coù 1 daõy coång AND vôùi 16 input vaø 4 D-FF) Kieåu 16R4 16R6 16R8 20R4 20R6 20R8 20X4 20X8 20X10

Soá ngoõ vaøo (tröïc tieáp+hoài tieáp + caùc IO) 8+4+4 8+6+2 8+8+0 12+4+4 12+6+2 12+8+0 10+4+6 10+8+2 10+10+0

Soá ngoõ ra (FF + IO) 4+4 6+2 8+0 4+4 6+2 8+0 4+6 8+2 10+0

Soá caùc coång AND treân coång OR 8 8 8 8 8 8 3/2* 3/2* -/2

Ghi chuù: * 3 vôùi caùc ngoõ ra toå hôïp, 2 cho caùc ngoõ vaøo D FF 3 PAL cuoái trong baûng chæ caùc “XOR PAL”. XOR PAL coù moät coång XOR laùi moãi ngoõ vaøo D FF nhö sau clock

EN D Q Q

Q

Trong PAL naøy, moãi coång XOR ñöôïc laùi baèng hai coång OR, vaø moãi coång OR ñöôïc laùi baèng 2 coång AND, caùc ngoõ ra FF coù theå ñöôïc hoài tieáp veà caùc coång AND nhö trong caùc PAL coù thanh ghi khaùc. Daïng toång quaùt cuûa phöông trình traïng thaùi keá cho moãi FF trong XOR PAL laø

Q + = D = (P1 + P2 ) ⊕ (P3 + P4 ) Vôùi P1 P2 P3 P4 laø caùc soá haïng tích Ñeå minh hoïa vieäc söû duïng caùc XOR PAL, thieát keá moät boä ñeám nhò phaân 4 bit (ñeám leân, ñeám xuoáng) vôùi 3 ngoõ vaøo ñieàu khieån U(up), D(down) vaø L (load). Khi U=1 boä ñeám taêng theâm 1, khi D = 1 boä ñeám giaûm 1, vaø khi L =1, boä ñeám naïp döõ lieäu song song töø caùc ngoõ vaøo döõ lieäu cuûa noù (DI) Baûng caùc traïng thaùi keá cuûa boä ñeám cho U=1 vaø cho D=1, giaû söû raèng U=D=1 khoâng xaûy ra

GV: Nguyễn Trọng Hải

Trang 133

Bài Giảng Kỹ Thuật Số

Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Chương 4

Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Q3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

U=1 Q2 Q 1+ 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0

+

+

Q0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

+

Q3 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1

+

D=1 Q2 Q 1+ 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 +

Q 0+ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Tröôùc heát, suy ra caùc phöông trình traïng thaùi keá cho boä ñeám leân. Trong moïi haøng Q0 khaùc Q0+ vì vaäy FF Q0 phaûi thay ñoåi traïng thaùi ôû moïi xung nhòp khi U=1 vì leõ ñoù Q 0+ = Q 0 ⊕ U Nhaän thaáy Q1 thay ñoåi (Q1 ≠ Q1+) chæ neáu Q0 =1. vì theá Q1+ = Q1 ⊕ UQ0 Q2 thay ñoåi trong caùc haøng 3, 7, 11 vaø 15 chæ khi Q1 = Q0 = 1 vì theá Q2+ = Q2 ⊕ UQ1Q0 Q3 thay ñoåi traïng thaùi chæ trong nhöõng haøng maø Q2 =Q1=Q0=1, vì theá Q3+= Q3 ⊕ UQ2Q1Q0 Töông töï, baèng caùch quan saùt baûng, coù theå suy ra caùc phöông trình cho boä ñeám xuoáng khi D=1 Q 0+ = Q 0 ⊕ D Q 1+ = Q 1 ⊕ D Q 0 Q2+ = Q2 ⊕ D Q 0 .Q 1 Q3+ = Q3 ⊕ D Q 0 .Q 1 .Q 2 Toång quaùt ñeå söû duïng XOR PAL, phaûi bieåu dieãn traïng thaùi keá cuûa Qi ôû daïng Qi+ = Qi ⊕ Fi Caùc Fi ñöôïc tìm baèng phöông phaùp quan saùt hoaëc ruùt goïn baèng baûng Karnaugh Tieáp tuïc thieát keá boä ñeám leân xuoáng vôùi ngoõ vaøo ñieàu khieån U, D, L.

GV: Nguyễn Trọng Hải

Trang 134

Bài Giảng Kỹ Thuật Số

Chương 4

Tröôùc heát xeùt tröôøng hôïp khi U=D=0. Khi L=1, boä ñeám ñöôïc naïp song song töø caùc ngoõ vaøo döõ lieäu cuûa noù (DI), vaø khi L=0 traïng thaùi boä ñeám giöõ khoâng ñoåi. Döïa vaøo tính chaát haøm Boolean f(x1, x2,…, xn) = x1f(1, x2, …,xn) + x 1 f(0,x2,…,xn) Nhö vaäy phöông trình traïng thaùi keá cho moãi FF laø Qi+ = LDi +L’DI Keát hôïp caùc phöông trình khi xeùt caû U, D, L. Giaû söû L=1 aûnh höôûng leân caû U=1 hay D=1 vaø U=D=1 khoâng bao giôø xaûy ra. Neáu baét ñaàu baèng phöông trình Q 0+ = Q 0 ⊕ U thay Q0+ baèng LD0+L’Q0 vaø thay U baèng U+D, ñöôïc Q0+ = (LD0+L’Q0)⊕ (U+D). Phöông trình naøy cho keát quaû ñuùng khi L=0 vaø U hoaëc D laø 1. Ñeå ñaûm baûo L=1 aûnh höôûng öu tieân hôn ñeám leân ñeám xuoáng, ta phaûi nhaân U vaø D cho L’, caùc phöông trình sau coøn laïi cuõng laøm töông töï, ta coù Q0+ = (LD0+L’Q0) ⊕ (UL’+DL’) Q1+ = (LD1+L’Q1) ⊕ (UL’Q0 + DL’Q’0) Q2+ = (LD2+L’Q2) ⊕ (UL’Q0Q1 + DL’Q’0Q’1 ) Q3+ = (LD3+L’Q3) ⊕ (UL’Q0Q1Q2 + DL’Q’0Q’1Q’2) Khi L=D=0, caùc phöông trình naøy ruùt goïn tröôøng hôïp chæ ñeám leân, vaø khi L=U=0 caùc phöông trình naøy ruùt goïn veà tröôøng hôïp ñeám xuoáng Caùc daïng phöông trình toång hôïp ôû treân thích hôïp ñeå caøi ñaët baèng XOR PAL

4.12. Các PLD tuần tự khác Khi coâng ngheä IC ñaõ ñöôïc caûi tieán, nhieàu loaïi PLD khaùc ra ñôøi, caùc PLD môùi döïa treân nhöõng môû roäng cuûa khaùi nieäm PAL hoaëc döïa treân caùc daõy coång 22V10 laø 1 PLD raát linh hoaït maø coù theå duøng noù ñeå caøi ñaët caùc maïng toå hôïp vaø tuaàn töï. 22V10 coù 12 chaân daønh rieâng cho ngoõ vaøo vaø 10 chaân coù theå laäp trình hoaëc laøm ngoõ vaøo hoaëc ngoõ ra. Chöùa 10 D-FF, 10 coång OR, soá coång AND ñöa vaøo moãi coång OR töø 8 ñeán 16. Moãi coång OR laùi moät logic macrocell, moãi macrocell chöùa 1 D-FF, caùc FF coù cuøng clock, moät ngoõ vaøo reset baát ñoàng boä chung (AR= Asynchronuos Reset) vaø moät ngoõ vaøo ñaët tröôùc ñoàng boä chung (SP= synchronuos Preset)

GV: Nguyễn Trọng Hải

Trang 135

Bài Giảng Kỹ Thuật Số

Chương 4

Sô ñoà khoái cuûa 22V10

Chi tieát cuûa moät macrocell xuaát cuûa 22V10.

S1 S0 F0

VCC

S

F1

GV: Nguyễn Trọng Hải

Trang 136

VCC

Bài Giảng Kỹ Thuật Số

Chương 4

Caùc keát noái ñeán caùc chaân ra coù theå ñieàu khieån ñöôïc baèng caùch laäp trình macrocell naøy. Caùc ngoõ vaø ñieàu khieån MUX xuaát S1 S0 choïn moät trong caùc ngoõ vaøo döõ lieäu. Ví dụ, S1S0 =10 choïn ngoõ vaøo döõ lieäu 2. Khi caàu chì F1 hôû (S1 =1), FF bò boû qua vaø ngoõ ra töø coång OR. Ngoõ ra coång OR cuõng ñöôïc hoài tieáp veà ñeå coù theå duøng nhö moät ngoõ vaøo cuûa daõy coång AND Neáu F1 coøn nguyeân (S1=0), thì ngoõ ra FF ñöôïc noái vaøo chaân ngoõ ra vaø noù cuõng ñöôïc hoài tieáp veà ñeå coù theå duøng noù laøm ngoõ vaøo coång AND. Khi caàu chì Fo hôû (S0=1), ngoõ ra khoâng bò ñaûo ñeå noù taùc ñoäng möùc cao. Khi F0 coøn nguyeân (S0=0), ngoõ ra bò ñaûo neân noù taùc ñoäng möùc thaáp. Chaân ngoõ ra ñöôïc laùi baèng boä ñeäm ñaûo 3 traïng thaùi. Khi ngoõ ra boä ñeäm ôû traïng thaùi toång trôû cao, coång OR vaø FF khoâng noái vôùi chaân ngoõ ra (xuaát) vaø chaân naøy coù theå duøng laøm ngoõ vaøo Ví dụ, Duøng 22V10 thieát keá boä ñieàu khieån ñeøn giao thoâng cho giao loä cuûa ñöôøng A vaø ñöôøng B. Moãi ñöôøng coù caùc caûm bieán ñeå phaùt hieän söï xuaát hieän xe coä ñeán gaàn hoaëc döøng ôû giao loä. Sa = 1 nghóa laø xe ñang tieán ñeán ñöôøng A Sb = 1 nghóa laø xe ñang tieán ñeán ñöôøng B A laø ñöôøng chính vaø seõ coù ñeøn xanh cho ñeán khi coù moät xe chaïy ñeán B, roài ñeøn thay ñoåi vaø B coù ñeøn xanh. Vöøa heát 50giaây caùc ñeøn seõ thay ñoåi veà nhö cuõ tröø khi coù moät xe treân ñöôøng B vaø khoâng coù xe ôû A, tröôøng hôïp naøy chu kyø B ñöôïc môû roäng theâm 10s. Khi A xanh noù giöõ xanh toái thieåu 60 giaây vaø roài caùc ñeøn thay ñoåi chæ khi xe tieán ñeán B. Caùc noái keát beân ngoaøi cuûa boä ñieàu khieån

Clock

Sa Sb PAL 22V10

Ga Ya Ra

Gb Yb Rb

Giaûn ñoà traïng thaùi cho boä ñieàu khieån. Cho muïc ñích ñònh thì, maïng tuaàn töï ñöôïc laùi baèng 1 clock coù chu kyø 10giaây. Nhö vaäy söï thay ñoåi traïng thaùi coù theå xaûy ra haàu nhö ôû 10giaây. Ñeå ñôn giaûn hoùa giaûn ñoà. Ta duøng kyù hieäu sau: GaRb trong moät traïng thaùi coù nghóa laø Ga=Rb=1 vaø taát caû caùc bieán ra khaùc laø 0, Sa’Sb ôû cuøng moät cung nghóa laø Sa=0 vaø Sb=1 seõ gaây ra chuyeån traïng thaùi theo cung ñoù. Moät cung khoâng coù nhaõn haøm yù raèng chuyeån traïng thaùi seõ xaûy ra khi coù clock xaûy ra, ñoäc laäp vôùi caùc bieán vaøo. Nhö vaäy ñeøn A xanh seõ saùng trong 6 chu kyø clock vaø ñoåi traïng thaùi sang vaøng neáu coù 1 xe ñang ñôïi ôû ñöôøng B

GV: Nguyễn Trọng Hải

Trang 137

Bài Giảng Kỹ Thuật Số

S0

Chương 4

GaRb

10s

S2

10s

S1

10s

10s

GaRb

GaRb

GaRb

S3

S4

10s

GaRb

S5

Sb’

GaRb Sb S6 YaRb

S6 YaRb

(Sa+Sb’) S11

S10

S9

S8

S7

RaGb

RaGb

RaGb

RaGb

RaGb

Ga 1 1 1 1 1 1 0 0 0 0 0 0 0

Bieán ra Ra Gb 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0

Sa’Sb Baûng traïng thaùi cuûa boä ñieàu khieån. SaSb S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12

00 S1 S2 S3 S4 S5 S5 S7 S8 S9 S10 S11 S12 S0

01 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S11 S0

10 S1 S2 S3 S4 S5 S5 S7 S8 S9 S10 S11 S12 S0

11 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S0

Ya 0 0 0 0 0 0 1 0 0 0 0 0 0

Yb 0 0 0 0 0 0 0 0 0 0 0 0 1

Rb 1 1 1 1 1 1 1 0 0 0 0 0 0

Caøi ñaët baûng treân duøng 4 D-FF vôùi caùc ngoõ vaøo D1, D2, D3 , D4 vaø caùc ngoõ ra Q1, Q2, Q3, Q4. Baèng pheùp gaùn traïng thaùi nhò phaân tröïc tieáp, suy ra caùc phöông trình D1=Q1Q2’+Q2Q3Q4 D2=Q1’ Q2’Q3Q4 + SaQ1Q3Q4 + Sb’Q1Q3Q4’ + Q1’Q2Q4 + Q1’Q2Q3’ D3= Q3Q4’ + SbQ3’ Q4 + Sa’Q3’ Q4 + Q2’Q3’ Q4 + Sa’SbQ1Q4 D4= Sa’SbQ1Q3 + Q2’ Q4’ + Q1’ Q4’ + SaSb’Q2Q3’ Q4 13 traïng thaùi coù 4 bit maõ hoùa traïng thaùi Q3Q2Q1Q0 Ga = Q1’Q3’ + Q1’Q2’

GV: Nguyễn Trọng Hải

Ya = Q2Q3Q4’

Trang 138

Ra= Q1 + Q2Q3Q4

Bài Giảng Kỹ Thuật Số

Chương 4

Gb = Q1Q2’ + Q2Q3Q4

Yb = Q1Q2

Rb=Q1’Q2’+Q1’Q4’+Q1'Q3’

Vì taát caû phöông trình naøy coù ít hôn 8 soá haïng AND, 22V10 laø phuø hôïp. Neáu 1 soá phöông trình coù quaù nhieàu soá haïng khoâng khôùp cho 22V10 thì seõ caàn thöû caùc pheùp gaùn traïng thaùi khaùc Neáu caøi ñaët boä ñieàu khieån duøng JK FF vaø caùc coång, 4FF vaø 34 coång seõ caàn cho gaùn traïng thaùi nhò phaân tröïc tieáp. Q3Q2Q1Q0 = traïng thaùi 6 bieán vaøo SaSb Q3Q2Q1Q0 Theo tính chaát haøm Boolean: f(x1, x2, x3, …, xn) = x 1 .x 2 f(0,0, x3, …,xn) + x 1 x2f(0,1,x3,…,xn) + x1 x 2 f(1,0,x3,…,xn)+ x1x2 f(1,1,x3,…,xn) => Ga = Sa’Sb’F00 + Sa’SbF01 + SaSb’F10 + SaSbF11 Caùc FF vaø caùc coång naøy caàn khoaûng 11 IC loaïi SSI, so vôùi giaûi phaùp 22V10 thì tieát kieäm naêng löôïng vaø tin caäy hôn 4.13. Dãy cổng lập trình được (PGA) Caùc PLD coù khaû naêng duøng ñeå caøi ñaët moät heä tuaàn töï nhöng khoâng phaûi laø moät heä thoáng soá ñaày ñuû. Caùc PGA (programmable gate Array) linh ñoäng hôn vaø coù theå ñöôïc söû duïng ñeå caøi ñaët moät heä thoáng soá nhoû treân moät chip IC. Moät PGA tieâu bieåu laø moät IC chöùa moät daõy caùc logic cell ñoàng daïng vôùi caùc lieân keát noái laäp trình ñöôïc. Ngöôøi söû duïng coù theå laäp tình caùc haøm ñöôïc caøi ñaët baèng moãi logic cell vaø caùc keát noái giöõa caùc cell

Configurable logic block

khoái IO

Vuøng lieân keát noái

GV: Nguyễn Trọng Hải

Trang 139

Bài Giảng Kỹ Thuật Số

Chương 4

Ví duï, Hình treân laø moät phaàn cuûa caáu truùc Xilinx XC2064 LCA (logic cell array) goàm moät daõy noäi 64 khoái logic coù theå ñaët caáu hình ñöôïc CLB (configurable logic block), xung quanh laø moät voøng 58 khoái giaoo tieáp nhaäp xuaát. Caùc lieân keát giöõa caùc khoái naøy coù theå laäp trình ñöôïc baèng caùch chöùa döû lieäu trong caùc oâ nhôù RAM noäi. Moãi CLB chöùa moät logic toå hôïp vaø 1 D-FF vaø coù theå laäp trình ñöôïc ñeå thöïc hieän nhieàu haøm logic Caáu truùc cuûa moät CLB

* *

preset A J B

G

Khối logic tổ hợp

KC clear D

*

F

D

*

*

Y(Q)

S

CK

Q R

* clock A B C F

A

Hàm 4 biến bất kỳ

B C D

Hàm 3 biến bất kỳ

F

Hàm 3 biến bất kỳ

G

D Q

G

A B

Q

C

Lựa chọn một hàm 4 biến

D Q

Lựa chọn hai hàm 3 biến Caùc khoái hình thang trong sô ñoà bieåu dieãn caùc boä doàn keânh (MUX) coù theå laäp trình ñöôïc ñeå choïn moät trong caùc ngoõ vaøo. Ví duï: ngoõ vaøo thaáp nhaát ôû khoái logic toå hôïp coù theå ñeán töø D hay Q vaø ngoõ ra Q coù theå ñeán töø F, G hay Q. Khoái logic toå hôïp chöùa caùc teá baøo nhôù RAM vaø coù theå ñöôïc laäp trình ñeå caøi ñaët moät haøm 4

GV: Nguyễn Trọng Hải

Trang 140

Bài Giảng Kỹ Thuật Số

Chương 4

bieán baát kyø hoaëc 2 haøm 3 bieán baát kyø (hình 1-29. Ví duï coù theå ñaët F=G=f1(A, B, C, Q) hay F=f2 (A, B,…) vaø G =f3(B, C, Q). Caùc ñöôøng ñöùt neùt chæ caùc keát noái caàn ñeå ñaët caáu hình logic cell laø moät JK-FF vôùi caùc ngoõ vaøo “preset” vaø “ clear”. Logic toå hôïp coù caùc ngoõ vaøo J,K vaø Q vaø caøi ñaët traïng thaùi keá cho FF, F=Q+ = JQ’ + K’Q. Ngoaøi ra caøi ñaët G=Q’ ñeå cung caáp moät ngoõ ra buø cho FF. Caùc tín hieäu Preset vaø Clear ñöôïc daãn tröïc tieáp tôùi S (asynchronuos set) vaø R (asynchronuos reset) cuûa D-FF

GV: Nguyễn Trọng Hải

Trang 141

Bài Giảng Kỹ Thuật Số

Chương 4

Bài tập chương 4

4.1. Giả sử ban đầu Q = 0, đưa X, Y đến ngõ vào SET, RESET của 1 RS-FF dùng NAND, xác định dạng sóng Q và Q

X Y Z 4.2. Giả sử ban đầu Q= 0, đảo dạng sóng ngõ vào X, Y ở bài 4.1, sử dụng RS-FF dùng cổng NOR, xác định dạng sóng Q và Q . 4.3. Dạng sóng bài 4.1 được kết nối với mạch hình sau. Giả sử rằng ban đầu Q=0, xác định dạng sóng Q.

X Z

S

Q

R

Q

Y 4.4. Một clocked FF cụ thể có tS = 20ns và tH = 5ns. Mất bao lâu để các ngõ vào điều khiển ổn định trước khi xảy ra sự chuyển đổi xung CK. . 4.5. Một Toggle FF là 1 FF có 1 ngõ vào đơn và hoạt động sao cho trạng thái ngõ ra thay đổi mỗi khi có xung đưa đến ngõ vào. clocked SR-FF có thể được nối để hoạt động trong chế độ này (hình) . Dạng sóng đưa đến ngõ vào CLK là sóng vuông 1KH. Xác định dạng sóng ngõ ra Q, giả sử ban đầu Q = 0 1 KHz

S

Q

CLK R

Q

4.6.a. Hãy trình bày làm thế nào để J-K FF có thể hoạt động như 1 toggle FF. Đưa sóng vuông 10kHz đến ngõ vào và xác định dạng sóng ngõ ra. b.Nối ngõ ra Q của FF phần a đến ngõ vào J-K FF thứ 2 (J2=K2=1). Xác định tần số dạng sóng tại ngõ ra Q của FF thứ 2. 4.7. Xung CK được đưa đến 2 FF khác nhau: (a) J-K FF kích bằng cạnh lên; (b) JK FF kích bằng cạnh xuống. Hãy vẽ dạng sóng ngõ ra Q cho mỗi FF trên, giả sử ban đầu Q = 0.

GV: Nguyễn Trọng Hải

Trang 142

Bài Giảng Kỹ Thuật Số 1

2

Chương 4 3

4

5

6

7

8

9

10

11

Clock

J input

K input

4.8. Một D-FF được dùng để làm mạch tạo trễ sao cho thông tin xuất hiện ở ngõ ra trễ một thời gian sau khi nó xuất hiện tại ngõ vào D. a/ Xác định dạng sóng Q ở hình sau và so sánh với dạng sóng ngõ vào. Data Input

D

CK

Q

Q

Data Input

1 0

Ck

1 0

b/ Làm thế nào để có thể delay thời gian 2 clock? 4.9. Một D-FF được nối như hình sau. Giả sử ban đầu Q = 0 , xác định dạng sóng Q.

1KHz

D CK

Q

Q

4.10. Xác định dạng sóng Q cho FF ở hình sau. Giả sử ban đầu Q = 0 1

CK 0

1

J

CK

CLR 1 0

1

Pr 1 0

K

Pr

Q Q

CLR

4.11. Ban đầu ngõ vào A, B, C trong mạch điện đều ở mức LOW. Giả sử ngõ ra Y ở mức HIGH chỉ khi A, B, C ở mức HIGH trong 1 trình tự nhất định. a/ Xác định trình tự làm Y ở mức HIGH b/ Giải thích tại sao xung START là cần thiết. c/ biến đổi mạch này để dùng D-FF.

GV: Nguyễn Trọng Hải

Trang 143

Bài Giảng Kỹ Thuật Số

Chương 4

A

J

J

X

B

CLK

C

K Clear

CLK

Y

K Clear

Start 4.12. Hãy vẽ mạch logic để truyền song song dữ liệu đồng bộ từ 1 thanh ghi 3 bit sang thanh ghi khác dùng FF J- K. 4.13. làm lại bài 4.12 khi truyền song song bất đồng bộ. 4.14. Thiết kế mạch đếm lên MOD 6 dùng T-FF có xung tác động cạnh lên, Pr va` CLR tích cực mức cao 4.15. Thiết kế mạch đếm lên MOD 10 dùng D-FF có xung tác động cạnh lên, Pr va` CLR tích cực mức cao 4.16. Thực hiện mạch đếm MOD 60 từ bài 4.14 và 4.15 4.17. Hãy vẽ lưu đồ chuyển đổi trạng thái của mạch đếm xuống MOD 6 dùng xung CK tác động cạnh lên và so sánh với sơ đồ đếm xuống dùng xung CK tác động cạnh xuống. Chúng khác nhau như thế nào? 4.18. a/ Để xây dựng 1 mạch đếm nhị phân đếm từ 0 đến 1023 thì phải sử dụng bao nhiêu FF? b/ xác định tần số tại ngõ ra của FF cuối cùng của mạch đếm này khi tần số xung clock ngõ vào là 2 Mhz. c/ Số MOD của mạch đếm là bao nhiêu?. d/ Nếu ban đầu mạch đếm đếm là 0 thì sau 2060 xung số đếm được là bao nhiêu?. 4.19. Một mạch đếm có tín hiệu clock là 256 KHz , tần số ngõ ra FF cuối cùng là 2KHz a/ Hãy xác định số MOD. b/ Hãy xác định phạm vi đếm. 4.20. 1 mạch tách sóng quang được sử dụng để tạo 1 xung mỗi khi có 1 khách hàng đi vào. Các xung này được đưa đến bộ đếm 8 bit. Bộ đếm này dùng để đếm số lượng khách hàng đi vào trong cửa hàng. Sau khi cửa hàng đóng cửa, người chủ cửa hàng kiểm tra mạch đếm và thấy rằng nó chỉ một số đếm là 000010012 = 910. Anh ta biết rằng điều này không đúng vì có nhiều hơn 9 người trong cửa hàng của ông ta. Giả sử mạch đếm dang làm việc đúng. Lý do nào cho sự trái ngược này?. 4.21. Hãy vẽ lưu đồ chuyển đổi trạng thái của mạch đếm MOD 16. 4.22. Hãy xác định dạng sóng tại Q1, Q2, Q3 . 1 Q1

0 T

tp=10ms

OS

Q2 T

Q1

tp=5ms

GV: Nguyễn Trọng Hải

OS Q2

tp=20ms

Trang 144

Q3 T

OS Q3

tp=10ms

Bài Giảng Kỹ Thuật Số

Chương 4

4.23. Xét mạch sau ` 1

J

C

1

C

1

J

CLK

1

K

B

J

CLK K

A

CLK B

A

K

1Hz

X Y

Z

D

B

X

CLK

W

C

D CLK

X

PRE

PRE

Y

Y

Start pule

1 0 Ban đầu tất cả các FF trong trạng thái 1. Hoạt động của mạch bắt đầu với xung Start tức thì được đưa đến các ngõ vào PRE của FF X và Y. Hãy xác định dạng sóng tại A,B,C,X,Y,Z và W trong 20 chu kỳ xung đồng hồ. 4.24. Mạch điện sau có thể sử dụng để phát 2 tín hiệu clock không trùng khớp tại cùng 1 tần số. Các tín hiệu clock này được sử dụng trong vài hệ thống vi xử lý đòi hỏi 4 sự chuyển đổi clock khác nhau để đồng bộ các hoạt động của chúng. Vẽ dạng sóng tại CP1 và CP2 khi tần số clock ngõ vào là 1Mhz. +5V

J

Clock

Q

CP1

CLK K

Q

CP2 4.25. Moät maïch ñoàng boä coù voøng ñeám sau:

000

111

010

101

011

a). Thieát keá boä ñeám treân duøng JK FF coù xung taùc ñoäng caïnh xuoáng. b). Giaû söû traïng thaùi hieän taïi cuûa maïch laø 001 tìm traïng thaùi keá cuûa maïch caâu a. GV: Nguyễn Trọng Hải

Trang 145

Bài Giảng Kỹ Thuật Số

Chương 5

CHƯƠNG 5 CÁC HỌ VI MẠCH SỐ 5.1. TỔNG QUAN Xét về cơ bản có 2 lọai thiết bị bán dẫn là lưỡng cực và đơn cực. Dựa trên các thiết bị này, các mạch tích hợp được hình thành. Các họ mạch logic lưỡng cực Các yếu tố chính của IC lưỡng cực là điện trở, diode và BJT, hai họat động trong IC lưỡng cực là: tắt và bão hòa, các họ logic lưỡng cực: •

Mạch logic RTL



Mạch logic DCTL



Mạch logic HTL



Mạch logic TTL



Mạch logic Schottky TTL



Mạch logic ECL

Các họ mạch logic đơn cực Các thiết bị MOS là các thiết bị đơn cực và chỉ có các MOSFET được vận hành trong các mạch logic MOS, các mạch logic MOS là •

PMOS



NMOS



CMOS

5.2. CÁC ĐẶC TRƯNG CỦA CÁC VI MẠCH SỐ Phân lọai các IC số Lọai IC

Các cổng căn bản

Số các linh kiện

Tổ hợp quy mô nhỏ SSI

Nhỏ hơn 12

Lên đến 99

Tổ hợp quy mô trung bình MSI

12-99

100-999

Tổ hợp quy mô lớn LSI

100-999

1000-9999

Tổ hợp quy mô rất lớn VLSI

Lớn hơn 1000

Lớn hơn 10000

Các đặc trưng •

Tốc độ họat động, lệ thuộc vào thời gian trễ truyền đạt tpHL tpLH

GV: Nguyễn Trọng Hải

Trang 146

Bài Giảng Kỹ Thuật Số

Chương 5



Tổn hao công suất, xác định bởi tích số nguồn cung cấp Vcc và dòng Icc (giá trị trung bình của dòng Icc mức 0 và mức 1), đơn vị mW



Chỉ số giá trị, xác định bởi tích số tốc độ và công suất



Chỉ số giá trị (pJ)= thời gian trì hõan truyền đạt (ns)x công suất (mW)



Chỉ số giá trị càng nhỏ càng tốt



Hệ số tải, là số cổng có thể được vận hành bởi một cổng, hệ số tải càng cao càng thuận lợi



Các tham số dòng và áp o Điện áp đầu vào ở mức cao VIH (điện áp tối thiểu mà cổng có thể nhận biết mức 1) o Điện áp đầu vào ở mức thấp VIL (điện áp tối đa mà cổng có thể nhận biết mức 0) o Điện áp đầu ra ở mức cao VOH(điện áp tối thiểu tại đầu ra tương ứng mức 1) o Điện áp đầu ra ở mức thấp VOL (điện áp tối đa tại đầu ra tương ứng mức 0) o Cường độ dòng điện đầu vào mức cao IIH (dòng tối thiểu được cung cấp tương ứng với mức 1) o Cường độ dòng điện đầu vào mức thấp IIL (dòng tối đa được cung cấp tương ứng với mức 0) o Cường độ dòng điện đầu ra mức cao IOH (dòng cực đại mà ngõ ra cung cấp tương ứng với mức 1) o Cường độ dòng điện đầu ra mức thấp IOH (dòng cực tiểu mà ngõ ra cung cấp tương ứng với mức 0)



Nhiễu Điện áp VOH VIH

Lề nhiễu ở trạng thái 1

VIL VOH

Lề nhiễu ở trạng thái 0

0 •

Miền nhiệt độ họat động, từ 0-700C cho các ứng dụng tiêu dùng và công nghiệp, từ 550C – 1250C cho các mục đích quân sự



Yêu cầu về nguồn



Tính đa dạng, khả năng tích hợp, giá thành, chế tạo, dễ phối hợp với vi mạch công nghệ khác

GV: Nguyễn Trọng Hải

Trang 147

Bài Giảng Kỹ Thuật Số

Chương 5

5.3. HỌ RTL (RESISTOR-TRANSISTOR LOGIC) Bao gồm các điện trở và transistor, đây là họ logic được tích hợp sớm nhất Ví dụ, một cổng NOR RTL

Vcc Rc

Y Rb1

Q1

Q2

A Rb2

B

Các mạch RTL có đặc tính chung là cần dòng IB cho các BJT nên còn được gọi là mạch thu dòng (current sinking), vì vậy khi kết nối với các mạch khác cần phải lưu ý để thỏa mãn điều kiện này, nếu không mạch sẽ không làm việc Lề nhiễu ở trạng thái 0 là 0.5-0.2=0.3V Lề nhiễu ở trạng thái 1 phụ thuộc vào tải 5.4. HỌ DTL (DIODE-TRANSISTOR LOGIC) Bao gồm diode ở ngõ vào và transistor ở ngõ ra Ví dụ, cổng NAND DTL

Vcc R1 DA

A

Rc

D1

Y

D2

Q

B DB

AND

Rb

NOT

Ngõ ra Y kéo lên nguồn Vcc được gọi là ngõ ra kéo lên thụ động (Passive pull up) 5.5. HỌ TTL (TRANSISTOR-TRANSISTOR LOGIC) Loại DTL sớm được thay thế bởi mạch TTL tức Transistor ở ngõ vào và Transistor ở ngõ ra

GV: Nguyễn Trọng Hải

Trang 148

Bài Giảng Kỹ Thuật Số

Chương 5

Ví dụ, cổng NAND TTL Vcc R1

R2

Rc R1

Q1

Q3

Q2

A

A B

Q2

DA

B Y

Q1

Q4 R3

Lưu ý: khi các ngõ vào A,B để hở (thả nổi ngõ vào) thì không có dòng chảy ra ở A, B nên ngõ vào để hở giống như nối lên cao (logic 1) Đầu ra TTL hoạt động như bộ thu nhận dòng ở trạng thái thấp (Q4) và cung cấp dòng ở trạng thái cao (Q3) Ngõ ra Y kéo lên Transistor nên được gọi là ngõ ra kéo lên tích cực (Active pull up) hay còn gọi là ngõ ra cột chạm (Totel pole). Với Q3 sẽ không có dòng nào truyền qua Rc khi ngõ ra ở mức thấp nên sẽ giảm bớt dòng tiêu hao trong mạch. Trong khi kiểu kéo lên thụ động sẽ làm cho Q4 dẫn một dòng khá lớn khi ngõ ra ở mức thấp Ưu điểm thứ hai của cấu hình Totem pole là khi Y ở trạng thái cao, Q3 có trở kháng đầu ra thấp nên rất thuận tiện nếu tải có tính dung C Nhược điểm của cấu hình totem pole thể hiện trong giải đoạn chuyển tiếp từ thấp lên cao. Vì Q4 tắt chậm nên khi Q4 chưa tắt mà Q3 đã dẫn, thời gian này (vài ns) cả 2 transostor đều dẫn điện nên hút một dòng tương đối lớn. 5.6. CÁC ĐẶC ĐIỂM CỦA HỌ TTL CHUẨN Loạt IC TTL chuẩn đầu tiên gọi là seri 54/74, tùy theo hãng chế tạo sẽ có thêm các tiền tố. VD, Texas Instruments có tiền tố SN, National Semiconductor dùng DM, Signetic là S Ví dụ, cổng NOR sẽ có các mã số khác nhau DM7402, SN7402… Khoảng nhiệt độ và điện thế nguồn Seri 74 vận hành trong khoảng điện thế 4.75 đến 5.25 và nhiệt độ 00C đến 700C Seri 54 chấp nhận điện thế nguồn trong khoảng 4.5 đến 5.5 và nhiệt độ -550C đến 1250C Mức điện thế của seri 74 Tối đa VOL VOH 2.4 VIL 2.0 VIH GV: Nguyễn Trọng Hải

Chuẩn 0.2 3.4

Tối thiểu 0.4 0.8

Trang 149

Bài Giảng Kỹ Thuật Số

Chương 5

Công suất tiêu hao bình quân một cổng khoảng 10mW Thời gian trễ tiêu biểu tpLH=11ns và tpHL=7ns, trung bình 9ns Đầu ra TTL chuẩn có thể kích thích 10 đầu vào TTL chuẩn 5.7. HỌ TTL CẢI TIẾN

Định mức hiệu suất Trễ do truyền (ns) Công suất (Mw) Chỉ số giá trị (pJ) Hệ số tải Các thông số điện thế VOH(min) VOL(min) VIH(min) VIL(min) Các định mức dòng ngõ ra IOH (mA) IOL (mA) Các định mức dòng ngõ vào IIH ( μA ) IIL (mA)

74

74S

74LS 74AS 74ALS

74F

9 10 90 10

3 20 60 20

9.5 2 19 20

1.7 8 13.6 40

4 1.2 4.8 20

3 6 18 33

2.4 0.4 2.0 0.8

2.7 0.5 2.0 0.8

2.7 0.5 2.0 0.8

2.5 0.5 2.0 0.8

2.5 0.4 2.0 0.8

2.5 0.5 2.0 0.8

-0.4 16

-1 20

-0.4 8

-2 20

-0.4 8

-1 20

40 -1.6

50 -2

20 -0.4

20 -0.5

20 -0.1

20 -0.6

Ví dụ, Xác định giới hạn nhiễu DC cho một IC 74LS so sánh với IC 74 Ví dụ, Một đầu ra 74ALS kích thích 3 đầu vào 74S và một đầu vào 74 được không 5.8. TTL VỚI NGÕ RA CỰC THU HỞ (OPEN COLLECTOR OUTPUT) Sơ đồ điển hình của NAND cực thu hở VCC R1

R2

Y A B

A B

R3

Lưu ý: Mạch có cực thu để hở có thể được sử dụng như mạch Logic thông thường bằng cách mắc thêm R thích hợp với tình trạng của tải. GV: Nguyễn Trọng Hải

Trang 150

X

Bài Giảng Kỹ Thuật Số

Chương 5

5.9. HỌ TTL BA TRẠNG THÁI (TRISTATE) Ngoài 2 trạng thái cơ bản 1 và 0, các mạch logic còn có thêm trạng thái tổng trở cao Hi-Z Ví dụ xét cổng NOT 3 trạng thái sau A

X

A

Cho phép (E)

X= A

X

A

E=1

E=0

5.10. MẠCH LOGIC MOS Chuyển mạch MOSFET cơ bản +5V D G

VGS=0

G

S

D VGS=5V S

G

D S

Mạch số dùng MOSFET được phân thành 3 nhóm: P-MOS, N-MOS và CMOS Đặc điểm của logic MOS o So với họ lưỡng cực thì N-MOS và P-MOS có tốc độ hoạt động chậm hơn, tiêu hao năng lượng ít hơn, giới hạn nhiễu hẹp hơn, khoảng điện thế nguồn nuôi lớn hơn, hệ số tải lớn hơn và đòi hỏi ít chỗ trên chip hơn o Mức logic dành cho mạch MOS là

V(0) ≈ 0V V(1) ≈ VDD

5.11. HỌ CMOS Công nghệ CMOS tung ra các sản phẩm có đặc điểm hiệu suất ngày càng tốt hơn, cung cấp không chỉ tất cả chức năng logic có ở TTL, mà còn nhiều chức năng đặc biệt không có ở TTL CMOS Thông số 4000B 74HC 74HCT 74AC 74ACT 74AHC 74AHCT VIH(min) 3.5 3.5 2.0 3.5 2.0 3.85 2.0 VIL(max) 1.5 1.0 0.8 1.5 0.8 1.65 0.8 VOH(min) 4.95 4.9 4.9 4.9 4.9 4.4 3.15 VOL(max) 0.05 0.1 0.1 0.1 0.1 0.44 0.1 VNH 1.45 1.4 2.9 1.4 2.9 0.55 1.15 VNL 1.45 0.9 0.7 1.4 0.7 1.21 0.7 Lưu ý: không bao giờ được phép thả nổi các đầu vào CMOS không dùng đến, tất cả đầu vào CMOS phải được nối hoặc với mức điện thế cố định (0 hoặc VDD) hoặc với đầu vào khác (Lý do đầu vào CMOS thả nổi rất nhạy với tạp âm nhiễu và tĩnh điện vốn có thể dễ dàng phân cực MOSFET ở trạng thái dẫn điện) GV: Nguyễn Trọng Hải

Trang 151

Bài Giảng Kỹ Thuật Số

Chương 5

5.12. MỘT SỐ CỔNG Tất cả các cổng đều thuộc loại tích hợp SSI Cổng NOT NOT NOT NAND 2 ngõ vào NAND 2 ngõ vào NAND 2 ngõ vào NAND 3 ngõ vào NAND 3 ngõ vào NAND 4 ngõ vào NAND 4 ngõ vào NAND 8 ngõ vào NAND 13 ngõ vào OR 2 ngõ vào NOR 2 ngõ vào NOR 3 ngõ vào NOR 4 ngõ vào AND 2 ngõ vào AND 2 ngõ vào AND 3 ngõ vào AND 3 ngõ vào XOR

GV: Nguyễn Trọng Hải

Ký hiệu 7404 7405 7414 7400 7401 74132 7410 7412 7420 7422 7430 74133 7432 7402 7427 7425 7408 7409 7411 7415 7486

Trang 152

Loại ngõ ra Active Pull up Open collector Schmitt trigger Active Pull up Open collector Schmitt trigger Active Pull up Open collector Active Pull up Open collector Active Pull up Active Pull up Active Pull up Active Pull up Active Pull up Active Pull up Active Pull up Open collector Active Pull up Open collector

Bài Giảng Kỹ Thuật Số

Chương 6

CHƯƠNG 6. GIAO TIẾP TƯƠNG TỰ - SỐ 6.1.

BIẾN ĐỔI ADC

6.2.1. Khái niệm Boä bieán ñoåi töông töï sang soá (ADC) ñoùng vai troø quan troïng trong heä thoáng xöû lí thoâng tin khi maø caùc luoàng tín hieäu ñöa vaøo heä vi xöû lí laø tín hieäu daïng töông töï . Caùc boä chuyeån ñoåi thöïc hieän hai chöùc naêng cô baûn laø löôïng töû hoùa vaø maõ hoùa. Löôïng töû hoùa laø gaùn nhöõng giaù trò cuûa moät tín hieäu töông töï vaøo vuøng caùc giaù trò rôøi raïc sinh ra trong quaù trình maõ hoùa. Ñoái vôùi ADC ta cuõng duøng caùc loaïi maõ soá nhö nhò phaân, BCD, buø moät, buø hai. Quaù trình laáy maãu (Sampling). Böôùc ñaàu tieân trong chuyeån ñoåi töông töï – soá laø rôøi raïc hoaù theo thôøi gian tín hieäu ñaàu vaøo ban ñaàu. Vieäc laáy maãu nhö vaäy ñöôïc boä phaän laáy maãu vaø giöõ – Sample & Hold Circuit (S&H) thöïc hieän.

Böôùc tieáp theo, boä chuyeån ñoåi töông töï – soá A/D chuyeån ñoåi caùc maãu nghieäm lieân tuïc theo giaù trò vaø ñaõ ñöôc rôøi raïc hoaù theo thôøi gian ñoù thaønh tín hieäu löôïng töû hoaù theo giaù trò vaø bieåu dieãn döôùi daïng soá nhò phaân. Phaûi choïn taàn soá laáy maãu sao cho caùc trò lấy maãu coù theå ñaëc tröng cho tín hieäu ban ñaàu maø khoâng bò toån thaát thoâng tin (fsample ≥ 2 fmax). Maïch laáy maãu vaø döøng S&H. Trong kyõ thuaät chuyeån ñoåi töông töï – soá, tín hieäu töông töï bieán thieân lieân tuïc theo thôøi gian u(t) ñöôïc laáy maãu ôû nhöõng thôøi ñieåm nhaát ñònh, vaø giaù trò tín hieäu GV: Nguyễn Trọng Hải

Trang 153

Bài Giảng Kỹ Thuật Số

Chương 6

nhaän ñöôïc seõ ñöôïc löu giöõ trong moät khoaûng thôøi gian ñònh tröôùc. Trong nhieàu boä chuyeån ñoåi A/D, tín hieäu phaûi ñöôïc giöõ khoâng ñoåi trong suoát thôøi gian chuyeån ñoåi. Ñeå thöïc hieän vieäc ñoù, duøng maïch Track-and-Hold – T&H. Caáu truùc cô baûn cuûa maïch T&H

Sau moãi laàn môû chuyeån maïch, tuï ñieän naïp ñeán giaù trò ñieän aùp ñaàu vaøo u vao (t) vaø löu giöõ giaù trò töùc thôøi cuûa ñieän aùp ñaàu vaøo tröôùc thôøi ñieåm môû chuyeån maïch. Caû hai boä khuyeách ñaïi thuaät toaùn laøm boä ñeäm buffer cho ñaàu vaøo cuõng nhö ñaàu ra. Moät khaû naêng khaùc thöïc hieän maïch T&H.

Moät transistor tröôøng FET (Isolated – Gate – FET) ñöôïc maéc giöõa KÑTT ñaûo pha vaø KÑTT tích phaân. Khi usamp = 0, transistor FET seõ daãn vaø ñieän aùp ñaàu ra u ra töông öùng ñieän aùp ñaàu vaøo aâm u vao , giaû thieát haèng soá thôøi gian tích phaân cuûa KÑTT tích phaân (ñöôïc xaùc ñònh bôûi doøng ñieän ñaàu ra cöïc ñaïi cuûa KÑTT) laø ñuû nhoû. Vaøo thôøi ñieåm t = t0 , transistor tröôøng khoaù, nhö vaäy vieäc naïp tuï (ñieän aùp tuï ñieän) khoâng ñoåi vaø ñieän aùp ñaàu ra u ra ñöôïc giöõ laïi ôû möùc giaù trò u ra (t) = u ra ( t0 ), cho ñeán khi transistor tröôøng laïi ñöôïc ñieàu khieån môû maïch. Khi FET ñoùng, caùc diode seõ daãn vaø nhôø ñoù maø traùnh ñöôïc hieän töôïng KÑTT bò quaù ñieàu khieån. Chuyeån ñoåi song song (Flash Converter, giaûi ñieàu nhieàu laàn). Ñeå coù theå tieán haønh chuyeån ñoåi cöïc nhanh, ngöôøi ta söû duïng caùc chuyeån ñoåi song song, coøn ñöôïc goïi laø Flash Converter hay boä giaûi ñieàu nhieàu laàn. Trong kieåu chuyeån ñoåi naøy, ñieän aùp caàn chuyeån ñoåi seõ ñöôïc ñoàng thôøi so saùnh caân baèng vôùi 2 N − 1 ñieän aùp quy chieáu

(

GV: Nguyễn Trọng Hải

Trang 154

)

Bài Giảng Kỹ Thuật Số

Chương 6

Boä chuyeån ñoåi A/D 3 bit vôùi caùc boä so song song U LSB = U ref 2 N = U ref 8

Hình N3.4.15 – .

(

)

Phaàn chuû yeáu cuûa chuyeån ñoåi song song laø 2 N − 1 boä so saùnh, hoaït ñoäng chöùc naêng maïch so saùnh vôùi ñieän aùp ra u ra = +U B töông öùng tín hieäu logic K=1, nhöng neáu u ra = −U B thì töông öùng K=0 nhö sau.

. Vieäc chuyeån ñoåi ñöôïc tieán haønh chæ moät böôùc, cho pheùp toác ñoä chuyeån ñoåi ñaït möùc cao nhaát coù theå, nhöng giaù thaønh cao töông öùng, vì ñoàng thôøi phaûi duøng soá löôïng lôùn caùc boä so saùnh 2 N − 1 . Tín hieäu cuûa moät trong baûy boä so cuûa chuyeån ñoåi song song 3 bit ñöôïc giôùi thieäu trong baûng N3.4-3.

(

)

Xaáp xæ hoaù luõy tieán lieân tuïc (phöông phaùp caân, chuyeån ñoåi theo baäc). Phöông phaùp naøy döïa treân cô sôû nguyeân lyù caân baèng. Trong sô ñoà boä chuyeån ñoåi, hoaït ñoäng theo nguyeân lyù xaáp xæ hoaù luõy tieán, coøn goïi laø chuyeån ñoåi theo baäc, ngoaøi modul ñieàu khieån quaù trình vaø thanh ghi coøn coù boä so saùnh vaø moät chuyeån ñoåi soá – töông töï D/A Trong caùc böôùc luõy tieán, boä so seõ thöû xem ñieän aùp caàn chuyeån ñoåi lôùn hôn hay nhoû hôn ñieän aùp u(Z) do boä chuyeån ñoåi ngöôïc D/A taïo ra. Tieáp theo, bit baäc cao nhaát (MSB) seõ ñöôïc ñaët ñònh, ñöôïc chuyeån ñoåi D/A bieán ñoåi ngöôïc trôû laïi thaønh ñieän aùp töông töï u(Z) vaø so saùnh vôùi ñieän aùp ñaàu vaøo u vao . Tuøy theo giaù trò u(Z) lôùn hay nhoû hôn u vao maø ñieän aùp quy chieáu seõ ñöôïc coäng vaøo hay tröø ñi töø giaù trò ñoù, vaø theo ñoù maø soá nhò nguyeân töông öùng cuûa tín hieäu soá nhò phaân ñaàu ra seõ laø 0 hay 1. Trong moãi chu trình tieáp theo, seõ laøm tieáp chöõ soá nhò nguyeân cho baäc GV: Nguyễn Trọng Hải

Trang 155

Bài Giảng Kỹ Thuật Số

Chương 6

döôùi vaø quaù trình so saùnh seõ ñöôïc laëp laïi. Ñoái vôùi moät chuyeån ñoåi N bit thì caàn N böôùc so saùnh vaø chu trình laëp laïi tuaàn hoaøn. Chuyeån ñoåi A/D 4 bit theo nguyeân lyù xaáp xæ hoaù luõy tieán.

Tín hieäu cuûa boä chuyeån ñoåi song song 3 bit. Ñieän aùp vaøo

Tín hieäu so saùnh K 7 K 6 K 5 K 4 K 3 K 2 K1

Maõ nhò phaân Z 2 Z1Z 0

Ñieän aùp töông töï u vao

0 ≤ u vao < 12 U LSB

0 0 0 0 0 0 0

0 0 0

0

1 2

U LSB ≤ u vao < 32 U LSB

0 0 0 0 0 0 1

0 0 1

U ref / 8

3 2

U LSB ≤ u vao < 52 U LSB

0 0 0 0 0 1 1

0 1 0

2 U ref / 8

5 2

U LSB ≤ u vao < 72 U LSB

0 0 0 0 1 1 1

0 1 1

3 U ref / 8

7 2

U LSB ≤ u vao < 92 U LSB

0 0 0 1 1 1 1

1 0 0

4 U ref / 8

9 2

U LSB ≤ u vao < 112 U LSB

0 0 1 1 1 1 1

1 0 1

5 U ref / 8

0 1 1 1 1 1 1

1 1 0 1 1 1

6 U ref / 8

11 2

U LSB ≤ u vao < 132 U LSB 13 2

U LSB ≤ u vao

1 1 1 1 1 1 1

7 U ref / 8

Boä rôøi raïc hoaù nhieàu taàng theo baäc (phöông phaùp phoái hôïp song song vaø caân baèng). Boä rôøi raïc hoaù nhieàu taàng giaûi quyeát thoaû hieäp giöõa toác ñoä chuyeån ñoåi vaø giaù thaønh. Vì ñoái vôùi caùc chuyeån ñoåi thuaàn tuyù theo phöông phaùp song song (rôøi raïc hoaù nhieàu taàng) thì caàn raát nhieàu boä so saùnh, ví duï: moät chuyeån ñoåi A/D 8 bit thì caàn tôùi 255 boä so, ngöôøi ta phaân baäc boä rôøi raïc hoaù thaønh taàng. Vieäc ñoù cho pheùp giaûm soá löôïng boä so saùnh, nhöng ñoàng thôøi toác ñoä chuyeån ñoåi chaäm hôn.

GV: Nguyễn Trọng Hải

Trang 156

Bài Giảng Kỹ Thuật Số

Chương 6

Sô ñoà khoái chuyeån ñoåi 8 bit baèng hai chuyeån ñoåi song song 4 bit maéc theo baäc.

Chuyeån ñoåi A/D thöù nhaát nhaän vieäc löôïng töû hoaù thoâ, löôïng töû hoaù 4 bit baäc cao. Keát quaû chuyeån ñoåi naøy seõ ñöôïc boä chuyeån ñoåi D/A bieán ñoåi ngöôïc thaønh ñieän aùp töông töï vaø tröø ñi töø ñieän aùp ñaàu vaøo. Tín hieäu sai leäch (vi sai) seõ ñöôïc boä chuyeån ñoåi A/D thöù hai löôïng töû hoaù (heä soá 16 laàn tinh hôn). Keát quaû chuyeån ñoåi naøy cho 4 bit baäc thaáp hôn. Vieäc haïn cheá ñöôïc soá löôïng boä so saùnh(trong ví duï tröôùc thì giaûm ñöôïc töø 255 xuoáng 30), laøm haï giaù thaønh chuyeån ñoåi noùi chung. Chuyeån ñoåi theo phöông phaùp phaân taàng cascade. Theo phöông phaùp phaân taàng, ngöôøi ta duøng moät boä chuyeån ñoåi song song N bit (Flash Converter) ñeå chuyeån ñoåi 2N bit. ÔÛ ñaây caàn hai chu trình chuyeån ñoåi. So vôùi boä chuyeån ñoåi ôû treân thì ôû ñaây tieát kieäm ñöôïc moät boä chuyeån ñoåi. Tín hieäu töông töï ôû ñaàu vaøo u vao trong chu trình nhòp ñoàng boä ñaàu tieân ( S1 ñoùng, S 2 môû) ñöôïc bieán ñoåi bôûi boä chuyeån ñoåi N bit. Keát quaû, cho N bit baäc cao nhaát, ñöôïc boä chuyeån ñoåi ngöôïc D/A bieán ñoåi thaùnh giaù trò töông töï töông öùng, ñem tröø ñi ñieän aùp ñaàu vaøo u vao ban ñaàu. Ñieän aùp vi sai ñöôïc khuyeách ñaïi leân 2 N laàn, vaø ñöôïc ñöa trôû laïi boä chuyeån ñoåi song song N bit ( S1 môû, S 2 ñoùng). Ñem coäng keát quaû cuûa chuyeån ñoåi 1 vaø 2, roát cuoäc ta coù keát quaû cuûa chuyeån ñoåi 2N bit “giaû laäp – pseudo”. Chuyeån ñoåi A/D theo phöông phaùp phaân taàng cascade.

Chuyeån ñoåi theo phöông phaùp phaân taàng laëp laïi. Trong chuyeån ñoåi phaân taàng laëp laïi (Recursive – Subranging – Analog – Digital – Converter RSR-A/DC), seõ tieán haønh bieán ñoåi töông töï – soá moät töø maõ (n.N) bit baèng chuyeån ñoåi song song N bit vôùi n böôùc tuaàn töï. Veà nguyeân lyù hoaït ñoäng, caùc chuyeån ñoåi naøy döïa treân nguyeân lyù tieäm caän töøng böôùc, vôi khaùc bieät laø thay vì GV: Nguyễn Trọng Hải

Trang 157

Bài Giảng Kỹ Thuật Số

Chương 6

söû duïng caùc boä so saùnh töông töï laøm chuyeån ñoåi 1 bit, ôû ñaây söû duïng boä chuyeån ñoåi song song N bit. Noùi chung, cuõng caàn phaûi ñaûm baûo ñoä chính xaùc khueách ñaïi ñoái vôùi toaøn thang ño (n.N) bit. Cuõng nhö trong phöông phaùp phaân taàng ñôn giaûn, söû duïng moät boä chuyeån ñoåi soá – töông töï D/A ñeå bieán ñoåi ngöôïc giaù trò keát quaû thaønh giaù trò töông töï töông öùng ñeå tröø ñi töø giaù trò ñaàu vaøo u vao . Nhö vaäy, caàn duøng moät chuyeån ñoåi D/A (n.N) bit. So vôùi phöông phaùp tieäm caän töøng böôùc ñôn thuaàn, coù söï caûi thieän do chuyeån ñoåi (n.N) bit maø chæ caàn n thay vì (n.N) chu trình xaáp xæ hoaù. Gioáng nhö trong caùc phöông phaùp phaân taàng ñaõ neâu, cuõng duøng bit thöù N ñeå hieäu chính sai soá, ñieàu ñoù caàn theâm moät chu trình nhòp phuï. Boä chuyeån ñoåi A/DC 12 bit theo PP phaân taàng laëp laïi

a)- Sô ñoà nguyeân lyù; b)- Xaùc ñònh giaù trò soá baèng haïn cheá luõy tieán (k vaø i - soá töï nhieân). Chuyeån ñoåi baäc Incremental (phöông phaùp ñeám). Trong chuyeån ñoåi A/D döïa treân cô sôû phöông phaùp ñeám, ñieän aùp so caân baèng u(Z) ñöôïc moät boä chuyeån ñoåi D/A taïo ra. Boä chuyeån ñoåi D/A ñoù ñöôïc moät boä ñeám thoâng thöôøng maéc phía ñaàu vaøo ñieàu khieån.

GV: Nguyễn Trọng Hải

Trang 158

Bài Giảng Kỹ Thuật Số

Chương 6

Chuyeån ñoåi A/D theo nguyeân lyù chuyeån ñoåi baäc Incremental.

Ngay khi u(Z) vöôït quaù ñieän aùp u vao caàn chuyeån ñoåi, thì vieäc chuyeån ñoåi bò ngöng laïi. Töø traïng thaùi boä ñeám coù theå tröïc tieáp tính ra ñöôïc giaù trò soá cuûa ñieän aùp ñöôïc chuyeån ñoåi. Öu ñieåm cuûa phöông phaùp naøy laø giaûm ñöôïc chi phí caáu taïo thieát bò (chæ caàn moät boä so), trong khi coù nhöôïc ñieåm laø giaûm toác ñoä chuyeån ñoåi. Soá chu trình caàn thieát trong chuyeån ñoåi phuï thuoäc vaøo ñoä lôùn cuûa ñieän aùp vaøo u vao . Ñeå coù ñöôïc keát quaû giaù trò côõ N bit seõ caàn toái ña 2 N böôùc. Chuyeån ñoåi baùm saùt (phöông phaùp ñeám). Ngöôïc vôùi chuyeån ñoåi baäc Incremental neâu treân, chuyeån ñoåi baùm saùt ñeám tôùi – lui. Caáu taïo nguyeân lyù cuûa chuyeån ñoåi baùm saùt (hình N3.4-22) veà cô baûn khaùc vôùi chuyeån ñoåi baäc Incremental laø thay vì boä ñeám tôùi thuaàn tuùy, ôû ñaây söû duïng boä ñeám thuaän - nghòch phoái hôïp. Nhö vaäy, tín hieäu ra cuûa D/AC luoân baùm saùt theo tín hieäu vaøo. Trong ñoù, söï bieán ñoäng tín hieäu vaøo trong thôøi gian moät chu kyø nhòp ñoàng boä khoâng ñöôïc lôùn hôn giaù trò U LSB . Khi bieán ñoäng tín hieäu nhanh thì thôøi gian ñeå ñaït tôùi söï caân baèng tieáp theo coù theå laø raát laâu, tröôøng hôïp xaáu coù theå laâu tôùi côõ 2 N chu kyø nhòp ñoàng boä. 6.2.2. Một số loại IC ADC •

ADC 0801/ ADC0802/ ADC0803/ ADC0804/ ADC0805 (IC CMOS 20 chaân), ñaây laø caùc boä bieán ñoåi A/D 8 bit vôùi 1 keânh töông töï, söû duïng phöông phaùp lieân tieáp xaáp xæ. Caùc boä bieán ñoåi naøy ñöôïc thieát keá ñeå coù theå giao tieáp vôùi caùc BUS nhôø vaøo vieäc ñieàu khieån bus 3 traïng thaùi. Khi giao tieáp vôùi boä vi xöû lyù, chuùng seõ ñoùng vai troø nhö nhöõng boä nhôù ñöôïc ñònh vò hay noùi caùch khaùc chuùng laø caùc port I/O. Ñieän aùp tham chieáu chuaån ôû ñaàu vaøo coù theå ñöôïc ñieàu chænh cho pheùp maõ hoùa caùc giaù trò ñieän aùp analog nhoû hôn traûi ñeàu ñoä phaân giaûi cuûa 8 bit.



Ñaëc ñieåm chung: 9 9 9 9 9

Deã daøng giao tieáp vôùi boä vi xöû lyù hoaëc hoaït ñoäng ñoäc laäp Möùc logic ñaàu vaøo / ra töông thích vôùi caû 2 loaïi MOS vaø TTL Boä phaùt xung nhòp cuøng naèm treân chip Daûi tín hieäu analog loái vaøo 0 … 5V khi ñieän aùp nguoàn nuoâi laø 5V Khoâng caàn hieäu chænh zero

GV: Nguyễn Trọng Hải

Trang 159

Bài Giảng Kỹ Thuật Số

Chương 6

9 Hoaït ñoäng toaøn vuøng 5V hay 2.5V tuøy theo giaù trò ñieän aùp tham chieáu 9 Doøng tieâu thuï : 1.9mA ADC0804 +IN -IN VREF/2 CLKIN CLKR

DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

RD WR INTR CS VCC/VREF GND AGND

9 Thôøi gian bieán ñoåi: 100μs 9 Coù taàng khueách ñaïi thuaät toaùn ôû chaân 9 ñeå coù phoái hôïp trôû khaùng 9 Ñieän trôû vaøo ôû chaân 9: 1.1kΩ •

Ngoaøi ra coøn coù caùc IC: ADC 0808/ ADC0809, ñaây laø caùc boä bieán ñoåi A/D 8 bit vôùi 8 keânh töông töï Sinh vieân tra sô ñoà chaân vaø sô ñoà keát noái cho maïch thöïc teá

6.2.

BIẾN ĐỔI DAC

6.2.1. Khái niệm Chuyeån ñoåi soá – töông töï Digital – Analog Converter (DAC) laø bieán ñoåi tín hieäu ñaõ ñöôïc maõ hoaù daïng soá trôû laïi thaønh giaù trò ñieän aùp töông töï. Nguyeân lyù chuyeån ñoåi soá – töông töï.

Giaû thieát raèng giaù trò soá Z ñöôïc xöû lyù nhö moät soá nhò phaân N bit theo maõ nhò phaân vaø xöû lyù song song (1 bit moãi ñöôøng döõ lieäu). Tieáp theo, giaû thieát raèng chæ xeùt ñeán caùc chuyeån ñoåi D/A maø chæ chuyeån ñoåi, xöû lyù nhöõng soá döông trong phaïm vi

GV: Nguyễn Trọng Hải

Trang 160

Bài Giảng Kỹ Thuật Số

Chương 6 ,

0 ≤ Z ≤ Z max = 2 N − 1 ôû ñaây: soá nhò phaân Z bin = z N −1...z1 z0 bieåu thò bôûi N chöõ soá nhò nguyeân zi :

Z = z N −1 2 N −1 + ... + z2 22 + z1 21 + z0 20 . Soá nhò phaân N bit ôû ñaàu vaøo cuûa boä chuyeån ñoåi D/A ñöôïc moät thanh ghi ñaàu vaøo tieáp nhaän, vaø khi coù taùc ñoäng söôøn xung nhòp tieáp theo, noù ñöôïc chuyeån ñoåi thaønh giaù trò töông töï töông öùng. Ñoä lôùn böôùc löôïng töû hoaù U LSB do quaù trình rôøi raïc hoaù, töông öùng vôùi vi sai tín hieäu töông töï ôû ñaàu ra giöõa hai giaù trò soá keá tieáp: ,

U LSB = U ref 2 N

ôû ñaây U ref - ñieän aùp quy chieáu (reference) cuûa boä chuyeån ñoåi D/A. Ñoä lôùn böôùc löôïng töû töông öùng giaù trò töông töï cuûa bit baäc thaáp nhaát Least Significant Bit LSB. Ñaëc tuyeán truyeàn ñaït cuûa boä chuyeån ñoåi D/A ñôn cöïc lyù töôûng 3 bit ( U LSB = U ref / 8) nhö sau.

Trong ñoù, K laø soá ñieåm rôøi raïc hoaù treân ñaëc tuyeán truyeàn ñaït, quy ñònh soá bit N cuûa boä chuyeån ñoåi:

K = 2N Ñieän aùp töông töï ôû ñaàu ra u ra cuûa chuyeån ñoåi D/A naèm trong khoaûng:

.

2n − 1 = U ref (1 − 2 − N ) . 2N Moät trong nhöõng ñaïi löôïng ñaëc tröng quan troïng cuûa boä chuyeån ñoåi D/A laø tyû soá chuyeån ñoåi vaø thôøi gian chuyeån ñoåi. • Tyû soá chuyeån ñoåi: bao nhieâu giaù trò soá ñöôïc chuyeån ñoåi thaønh giaù trò töông töï trong moät ñôn vò thôøi gian. • Thôøi gian chuyeån ñoåi, noùi chung, töông öùng trò nghòch ñaûo cuûa tyû soá chuyeån ñoåi. 0 ≤ u ra ≤ U LSB (2 N − 1) = U ref

GV: Nguyễn Trọng Hải

Trang 161

Bài Giảng Kỹ Thuật Số

Chương 6

Sô ñoà thöïc hieän chuyeån ñoåi soá – töông töï D/A baèng Pheùp coäng doøng hay aùp troïng soá. ï.

a)- Phöông aùn khuyeách ñaïi u / i ; b)- Phöông aùn coù khuyeách ñaïi i / u . Boä chuyeån ñoåi treân coù boä khuyeách ñaïi u / i cung caáp doøng ra khoâng ñoåi I ref = U ref

/ Rref . Neáu song song vôùi ñieän trôû Ri maéc moät chuyeån maïch Si ñöôïc ñieàu khieån bôûi töø maõ Z,, sao cho noù môû khi coù chöõ soá nhò nguyeân 1 (Si ( zi = 1) = 1) , vaø khi coù

soá 0 noù vaãn giöõ traïng thaùi ñoùng (S i ( z i = 0 ) = 0) , thì ñieän aùp ñaàu ra baèng: N −1

U ref

i =0

Rref

u ra = I ref ∑ S i Ri =

N −1

∑S R i =0

i

i

,

ôû ñaây ñieän trôû troïng soá nhò phaân Ri laø:

Ri = 2i R , - i = 0,1,…,N – 1. Hình b giôùi thieäu phöông aùn sô ñoà coù boä khuyeách ñaïi i / u, hoaït ñoäng nhö moät boä coäng ñaûo. Khaùc vôùi phöông aùn tröôùc, trong sô ñoà naøy chuyeån maïch Si seõ ñoùng

(S (z i

i

)

= 1) = 1 khi coù soá nhò nguyeân 1. Vaø ñieän aùp ñaàu ra u ra baèng: N −1

u ra = − Rref U ref ∑ S i i =0

1 Ri

ôû ñaây ñieän trôû Ri coù troïng soá nhò phaân nghòch ñaûo so vôùi trong bieåu thöùc treân R i = 0,1, …, N – 1, Ri = i , 2 vaø S i = 1 khi soá nhò nguyeân thöù i laø 1, coøn ngoaøi ra thì S i = 0.

GV: Nguyễn Trọng Hải

Trang 162

,

Bài Giảng Kỹ Thuật Số

Chương 6

Phöông aùn thöïc hieän sô ñoà Boä chuyeån ñoåi D/A 4 bit coù khuyeách ñaïi i / u treân cô sôû chuyeån maïch baùn daãn.

Sô ñoà ñöôïc phaân baäc thöù nguyeân sao cho khi soá nhò nguyeân thöù i ñöôïc ñaët ñònh ôû möùc 1 (töông öùng ñieän aùp döông trong phaïm vi U B , töùc laø U ( zi = 1) ≈ U B ), thì transistor töông öùng ñöôïc môû vaø doøng collector cuûa noù, voán do ñoä lôùn ñieän trôû R 2i quy ñònh, seõ chaïy qua “ñieän trôû toång” Rref . Nhö vaâïy, pheùp coäng theo bieåu thöùc (N3.4-8) ñöôïc thöïc hieän. Ñieän aùp rôi treân ñieän trôû R 2i coù giaù trò baèng U ref vì ñieän aùp dao ñoäng treân diode U D gaàn töông xöùng ñieän aùp BE aâm cuûa transistor ( U D ≈ −U BE ). Diode zener oån aùp giöõ cho ñieän aùp U ref khoâng ñoåi. Ñoái vôùi nhöõng chuyeån ñoåi D/A thieát keá treân cô sôû caùc maïng trôû khaùng nhö treân, thoâng thöôøng phaûi ñaùp öùng yeâu caàu raát cao veà ñoä chính xaùc cuûa caùc ñieän trôû maéc trong maïch. Boä chuyeån ñoài soá – töông töï N bit coù lieân heä töông quan giöõa ñieän aùp ñaàu ra cöïc ñaïi u ra. max vaø böôùc löôïng töû U LSB laø:

(

)

.

u ra. max = 2 N − 1 U LSB

Neáu phaûi ñaûm baûo sai soá tuyeät ñoái lôùn nhaát Δu ra cuûa ñieän aùp ñaàu ra u ra nhoû hôn U LSB 2 , töùc laø Δu ra ≤ U LSB 2 , thì phaûi aùp duïng luaät phaân boá sai soá ñoái vôùi sai soá heä thoáng cho bieåu thöùc (N3.4-6): U ref N −1 ∂Ri U ref Δu ra = Si ΔRi = ∑ Rref i =0 ∂Ri Rref

N −1

∑S i =0

i

1 ΔRi < U LSB 2

.

Trò soá analog töông töï cuûa baäc löôïng töû hoaù ñaàu tieân coù theå xaùc ñònh töø caùc bieåu thöùc (N3.4-6) vaø (N3.4-7), laø haøm cuûa ñieän aùp quy chieáu vaø giaù trò ñieän trôû R vaø Rref : U LSB =

U ref

ruùt ra: Δu ra =

Rref

U ref Rref

GV: Nguyễn Trọng Hải

R N −1

∑S i =0

i

ΔRi <

1 U ref R 2 Rref

Trang 163

Bài Giảng Kỹ Thuật Số

Chương 6

Tröôøng hôïp xaáu nhaát laø söï coá moïi chuyeån maïch Si ñeàu môû ( Si = 1), cho neân phaûi ñaûm baûo ñieàu kieän sau: N −1 1 ΔRi < R ∑ 2 i =0 Neáu ta coi sai soá töông ñoái cuûa moïi ñieän trôû chæ trò nhò phaân laø nhö nhau, thì:

.

ΔRi = ΔR 2i

Sai soá töông ñoái lôùn nhaát coù theå chaáp nhaän theo ñieàu kieän Δu ra ≤ U LSB 2 maø sô ñoà chuyeån ñoåi duøng maïng ñieän trôû treân coù theå ñaùp öùng: N −1

1 R 2 i =0 ΔR 1 . < N R 2 2 −1

ΔR ∑ 2i < vaø

(

,

)

Phaûi ñaëc bieät ñaûm baûo thoaû maõn ñieàu kieän naøy ñoái vôùi ñieän trôû RN −1 - ñònh trò bit baäc cao nhaát MSB. Veà maët sai soá toaøn phaàn, thì ñieän trôû naøy coù aûnh höôûng lôùn nhaát, ñieàu ñoù coù nghóa laø ñoái vôùi caùc chuyeån ñoåi 12 bit thì ñieän trôû R11 ít nhaát phaûi ñaûm baûo yeâu caàu ñoä chính xaùc sau:

ΔR11 R11

=

(

1

) = 0,00024 = 0,024% .

2 2 −1

GV: Nguyễn Trọng Hải

11

Trang 164

Bài Giảng Kỹ Thuật Số

Chương 6

Maïng chuoãi ñieän trôû. Nhöôïc ñieåm neâu treân, thoâng thöôøng laø do söû duïng ñieän trôû ñöôïc cheá xuaát haøng loaït, theo trò soá chuaån hoaù vôùi ít trò soá ñònh möùc khaùc nhau. Coù theå khaéc phuïc nhöôïc ñieåm ñoù baèng caùch söû duïng maïng chuoãi ñieän trôû R-2R. Phaàn lôùn caùc chuyeån ñoåi D/A söû duïng chuoãi ñieän trôû ñoù laøm nhöõng boä phaân aùp vaø phaân doøng maëc ñònh. Sô ñoà maïch töông öùng chæ duøng caùc ñieän trôû R vaø 2R nhö sau .

Hình a laø sô ñoà coù nguoàn doøng; hình b laø sô ñoà töông ñöông giöõa nuùt i vaø (i+1) khi zi =1 caùc maïch khaùc môû; hình c laøsô ñoà nguyeân lyù coù nguoàn aùp. Sô ñoà töông ñöông hình b bieåu thò töông quan giöõa hai nuùt i vaø (i+1), coù theå theo nguyeân taéc phaân doøng, quy ñònh tyû leä doøng I i +1 vaø I i luoân baèng 1/2: .

I i +1 I i = 1 2

Trong ñoù, giaû ñònh raèng maïch thuoäc bit nhò nguyeân thöù i laø ñoùng, trong khi taát caû caùc bit nhò nguyeân khaùc ñeàu ñang môû. Maët khaùc, tyû leä 1/2 ñuùng baèng chæ trò troïng soá nhò phaân cuûa chuyeån maïch Si . Vôùi I ref = I i +1 + I i thì ñieän aùp u i baèng:

GV: Nguyễn Trọng Hải

Trang 165

Bài Giảng Kỹ Thuật Số

ui = I i R =

Chương 6

2 I ref R . 3

Do phaân aùp giöõa caùc nuùt i vaø (i+1) ta coù: u i +1 1 = ui 2

.

Xaùc ñònh ñieän aùp ñaàu ra u ra baèng caùch aùp duïng nguyeân lyù sieâu vò:

u ra =

N −1 2 I ref R ∑ S i 2 i − N +1 , 3 i =0

vaø ñaùnh giaù troïng soá nhò phaân cuûa ñieän aùp thaønh phaàn u i . Trong phöông aùn sô ñoà hình c, thay vì nguoàn doøng N caàn coù nguoàn aùp quy chieáu. Töø thaønh phaàn ñieän aùp ñaët tröôùc, xaùc ñònh ñöôïc ñieän aùp ñaàu ra u ra : N −1 2 u ra = U ref ∑ S i 2 i − N +1 . 3 i =0

6.2.2. MỘT SỐ IC DAC CHUYÊN DỤNG



DAC 0808 laø boä chuyeån ñoåi DAC 8bit

Caùc thoâng soá vaø ñaëc tính kyõ thuaät SV töï tra taøi lieäu

GV: Nguyễn Trọng Hải

Trang 166

Bài Giảng Kỹ Thuật Số

Phụ lục B

PHỤ LỤC B I.

NGOÂN NGÖÕ LAÄP TRÌNH CHO PLD Cuõng gioáng nhö ROM hay PROM, moät PLD cuõng ñöôïc laäp trình ñeå taïo ra file ñoát caùc caàu chì hay diode. Ngoân ngöõ söû duïng ñeå laäp trình cho PLD trong chöông trình naøy laø ABEL (Advanced Boolean Equation Language) laø moät trong nhöõng ngoân ngöõ laäp trình raát maïnh cho PLD, hoã trôï cho nhieàu ngoõ vaøo, bao goàm caû sô ñoà traïng thaùi vaø baûng söï thaät. Trình bieân dòch cuûa ABEL coù khaû naêng moâ phoûng vaø taïo file fuse map (caàu chì) cho PLD. Trong phuï luïc naøy chæ toùm taét höôùng daãn söû duïng caùc phaàn caáu truùc vaø cuù phaùp veà caùc phaùt bieåu, khai baùo, chæ daãn…chuû yeáu nhaát ñeå phuïc vuï cho caùc baøi thí nghieäm sau ñoù. Ñeå hieåu saâu hôn veà ngoân ngöõ naøy, sinh vieân neân tham khaûo theâm caùc taøi lieäu khaùc hoaëc phaàn help trong ngoân ngöõ. Ngoaøi ABEL coøn coù caùc ngoân ngöõ khaùc nhö VHDL, AHDL…

CAÁU TRUÙC CUÛA MOÄT CHÖÔNG TRÌNH ABEL module module name title string deviceID device deviceType; pin declarations other declarations equations equations test_vectors end module name Module. Teân chöông trình vaø caùc thoâng soá hình thöùc Title. Duøng ñeå moâ taû module Declaration. Moâ taû caùc module caáp thaáp hôn, ñònh nghóa caùc khoái chöùc naêng nhö devive, pin, node, constant, macro, caùc taäp hôïp,… Equations. Söû duïng caùc haøm, caùc löu ñoà traïng thaùi hay baûng söï thaät ñeå moâ taû caùc thieát keá logic Test_vectors. Test_vectors sö duïng trong caùc file moâ phoûng JEDEC End. Keát thuùc moät module GV: Nguyễn Trọng Hải

Trang 251

Bài Giảng Kỹ Thuật Số

Phụ lục B

Löu yù: caáu truùc ôû treân bao goàm caùc thaønh phaàn cô baûn cuûa moät chöông trình ABEL, tuøy vaøo nhöõng öùng duïng cuï theå coù theå seõ coù theâm caùc phaùt bieåu khaùc nhö maùy traïng thaùi, v.v…

1. CAÙC PHAÙT BIEÅU (STATEMENTS) 1.1.

Phaùt bieåu Module Cuù phaùp

module modname [( dummy_arg[,….])]

Muïc ñích:

Phaùt bieåu module xaùc ñònh ñieåm baét ñaàu cuûa moät chöông trình vaø phaûi coù phaùt bieåu END ñeå xaùc ñònh ñieåm keát thuùc cuûa module

Söû duïng

Modname laø moät danh hieäu hôïp leä ñöôïc ñaët laøm teân goïi cho module chöông trình Danh hieäu hôïp leä laø moät chuoãi daøi toái ña 31 kyù töï (chöõ caùi, chöõ soá, daáu gaïch döôùi’_’), ñöôïc baét ñaàu baèng chöõ caùi hay daáu gaïch döôùi ’_’. Danh hieäu phaân bieät chöõ hoa hay chöõ thöôøng. Dummy_arg (coù theå coù) : laø moät thoâng soá hình thöùc (töông töï nhö trong ngoân ngöõ hôïp dòch)

Ví duï

MODULE My_Example … END My_Example Module coù teân My_Example vaø phaùt bieåu END My_Example keát thuùc module naøy.Trong module naøy khoâng söû duïng thoâng soá hình thöùc. MODULE My_Example (A,B) … C=A+B END My_Example Trong module naøy coù söû duïng hai thoâng soá hình thöùc A vaø B, bieåu thöùc C=A+B, vôi A,B ñöôïc traû veà gía trò thöïc (töø module khaùc) khi bieân dòch

1.2.

Phaùt bieåu Title Cuù phaùp

title ‘string’

Muïc ñích:

Phaùt bieåu title ñaët cho module moät töïa ñeà (header) ñeå minh hoïa ñaëc ñieåm chöùc naêng do ngöôøi laäp trình taïo ra.Chuoãi kyù töï seõ xuaát hieän trong caû file döõ lieäu vaø file fusemap sau khi bieân dòch

Söû duïng

string: laø chuoãi kyù töï naèm trong hai daáu nhaùy ñôn (‘) vaø giôùi haïn 324 kyù töï Söû duïng phaùt bieåu tilte laø tuøy choïn

Ví duï

module m6809a

GV: Nguyễn Trọng Hải

Trang 252

Bài Giảng Kỹ Thuật Số

Phụ lục B

title ’6809 memory decode Jean Designer Data I/O Corp Redmond WA’ 1.3.

Phaùt bieåu equations Cuù phaùp

equations element [?] = condition; when-then-else_statement;

Muïc ñích:

Phaùt bieåu equations ñònh choã baét daàu cuûa moät hay moät nhoùm bieåu thöùc Boole bieãu dieãn haøm logic ngoõ ra theo ngoõ vaøo

Söû duïng

condition. Moät moâ taû element. teân danh ñònh cuûa moät tín hieäu, taäp caùc tín hieäu hay tín hieäu thöïc maø moâ taû giaù trò cuûa noù ñöôïc gaùn when-then-else_statement: phaùt bieåu when-then-else Sau moãi bieåu thöùc phaûi coù daáu chaám phaåy (;)

Ví duï

Equations A = B&C#A; [W,Y] = 3; !F = (B = =C);

1.4.

Phaùt bieåu Truth_table Cuù phaùp hay Muïc ñích:

Söû duïng

Ví duï

truth_table (inputs -> outputs) truth_table (inputs : > reg_outs)

Truth_table trình baøy baûng söï thaät minh hoïa ngoõ ra nhö moät haøm toå hôïp cuûa caùc ngoõ vaøo

Caùc baûng söï thaät coù theå thay theá hoaëc boå sung theâm cho caùc bieåu thöùc (trong equations) hay sô ñoà traïng thaùi (trong state_diagram) inputs : laø caùc ngoõ vaøo cuûa haøm logic outputs : laø caùc ngoõ ra cuûa haøm logic reg_outs : laø caùc ngoõ ra cuûa caùc thanh ghi (FF) Daáu -> bieãu dieãn heä toå hôïp Daáu : > bieãu dieãn heä tuaàn töï Truth_table ([A,B] -> C) [0,1] -> 1; [1,0] -> 1; [1,1] -> 0; [0,0] -> 0; Roõ raøng truth_table ôû treân bieãu dieãn bieåu thöùc C=A+B

GV: Nguyễn Trọng Hải

Trang 253

Bài Giảng Kỹ Thuật Số 1.5.

Phụ lục B

Phaùt bieåu state_diagram Cuù phaùp

State_diagram state variables State state_exp:[equations]; . . [trans-stmt…];

Muïc ñích:

Phaùt bieåu state_diagram ñònh nghóa caùc bieán traïng thaùi baét ñaàu söï moâ taû hoaït ñoäng cuûa maùy traïng thaùi (töông töï nhö ñoà thò traïng thaùi hay löu ñoà maùy traïng thaùi)

Söû duïng

state_variables: laø taäp hôïp caùc bieán traïng thaùi trong maùy traïng thaùi state: laø töø khoùa ñeå bieãu dieãn söï chuyeån bieán töø traïng thaùi hieän taïi sang traïng thaùi keá tieáp vaø ngoõ ra hieän taïi state_exp : laø bieåu thöùc hay haèng soá ñòng nghóa traïng thaùi hieän taïi equations: laø caùc bieåu thöùc logic ngoõ ra hieän taïi cuûa maùy traïng thaùi trans_stmt : laø moät phaùt bieåu daïng IF – THEN – ELSE , GOTO, CASE (tuøy choïn) ñeå moâ taû söï chuyeån bieán töø traïng thaùi hieän btaïi sang traïng thaùi keá tieáp theo ñieàu kieän taùc ñoäng cuûa ngoõ vaøo

Ví duï

1.6.

Giaû söû ta coù 2 ngoõ vaøo x1 vaø x2, ngoõ ra laø z, maùy traïng thaùi coù 3 traïng thaùi kyù hieäu S0,S1,S2, 2 bieán traïng thaùi Q = [Q0,Q1] (2 ngoõ ra cuûa FF) State_diagram Q State S0: if (x1&x2 = =0) then S2 S0 Else S1 State S1: z=1; 1 0 x1x2 Go to S2; State S2: z=0; z=1 S1 S2 z=0 Go to S0;

Phaùt bieåu goto Cuù phaùp

Goto state_exp

Muïc ñích:

Phaùt bieåu goto bieãu dieãn söï chuyeån bieán khoâng ñieàu kieän töø traïng thaí hieän taïi sang traïng thaùi keá tieáp laø state_exp.

Söû duïng

State_exp: laø bieåu thöùc bieãu dieãn traïng thaí keá tieáp

Ví duï

Si: goto Sj; nhaûy ñeán traïng thaùi Sj

GV: Nguyễn Trọng Hải

Trang 254

Bài Giảng Kỹ Thuật Số 1.7.

Phụ lục B

If – then – else Cuù phaùp hay

If exps then state_exp1 [else state_exp2]; if exp1 then state_exp1 else if exp2 then state_exp2 [else if….] else state_expn;

Muïc ñích: Phaùt bieåu if – then – else : moâ taû söï chuyeån hoùa traïng thaùi theo ñieàu kieän ngoõ vaøo. Neáu bieåu thöùc ngay sau töø khoùa if laø ñuùng , chuyeån bieán höôùng ñeán traïng thaùi ngay sau töø khoùa then; neáu sai chuyeån bieán höôùng ñeán trang thaùi ngay sau töø khoùa else. Söû duïng

exps: laø bieåu thöùc baát kyø hôïp leä naøo state_exp1, state_exp2…..: laø bieåu thöùc bieãu dieãn traïng thaùi keá tieáp. Caùc phaùt bieåu if – then – else coù theå ñöôïc noái vôùi nhau lieân tieáp nhöng keát thuùc phaûi laø daáu chaám phaåy.

Ví duï

State 1 : if (A = = B) then 2; “neáu A = b chuyeån ñeán traïng thaùi 2 State 2 : if A then 3 else 4; “ neáu A ñuùng (≠0) chuyeån ñeán traïng thaùi 3 “ neáu A sai (=0) chuyeån ñeán traïng thaùi 4 state 0 : if a then 1 else if b then 2 else if c then 3 else 0;

1.8.

Phaùt bieåu case Cuù phaùp

Case [exps1 : state+exp1;] [expsi : state_expi;] end case;

Muïc ñích:

Phaùt bieåu case moâ taû söï chuyeån bieán traïng thaùi trong tröôøng hôïp coù nhieàu ñieàu kieän taùc ñoäng.

Söû duïng

Traùnh khoâng ñeå 2 ñieàu kieän xaûy ra cuøng luùc vaø traùnh tröôøng hôïp keát quaû traïng thaùi keá khoâng ñoaùn tröôùc ñöôïc

Ví duï

STATE S0: CASE (sel == 0): S0 ; (sel == 1): S1 ; ENDCASE

GV: Nguyễn Trọng Hải

Trang 255

Bài Giảng Kỹ Thuật Số 1.9.

Phụ lục B

Phaùt bieåu test_vectors: Cuù phaùp

Text vectors[‘note’] (inputs → outputs) [invalues → out values]

Muïc ñích: Caùc test_vectors duøng ñeå moâ phoûng hoaït ñoäng cuûa heä vaø kieåm tra caùc chöùc naêng hoaït ñoäng cuûa heä khi chaïy chöông trình moâ phoûng Söû duïng

note: laø moät chuoãi kyù töï ñeå moâ taû caùc text_vectors inputs : laø 1 danh ñònh hay taäp hôïp caùc danh ñònh teân caùc tín hieäu vaøo hay hoài tieáp veà ngoõ vaøo cuûa heä. Outputs : laø 1 danh ñònh hay taäp hôïp caùc danh ñònh teân caùc tín hieäu ra cuûa heä. Invalues : laø 1 hay taäp hôïp caùc giaù trò vaøo Outvalues : laø 1 hay taäp hôïp caùc giaù trò ra laø haøm logic cuûa caùc giaù trò vaøo vaø gía trò traïng thaùi (heä tuaàn töï)

Ví duï

equations C = A&B; “C = A.B D = A#B; “D = A+B Text_vectors ([A,B]→[C,D]) [0,0]→[0,0] [0,1]→[0,1] [1,0]→[0,1] [1,1]→[1,1]

1.10. Phaùt bieåu istype Cuù phaùp

Signal [ , signal] … istype ’attr[ , attr]…’;

Hay signal [ , signal] … pin istype ‘attr[ , attr]… ‘; Muïc ñích: Phaùt bieåu istype ñònh nghóa caùc thuoäc tính cuûa pin hay node laäp trình ñöôïc cuûa caùc duïng cuï (PLD). Caùc thuoäc tính cuûa pin hay node coù theå khai baùo cuøng moät doøng Söû duïng

signal: laø moät danh hieäu pin hay node attr: laø moät chuoãi kyù töï xaùc ñònh caùc thuoäc tính cuûa caùc signal Caùc thuoäc tính hôïp leä laø: ‘buffer’ : ñeäm ‘com’ : heä toå hôïp ‘invert’ : ñaûo ‘neg’ : tính cöïc möùc thaáp ‘pos’ : tính cöïc möùc cao ‘reg’ : thanh ghi (heä tuaàn töï) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : caùcFF, D, T, JK, SR

GV: Nguyễn Trọng Hải

Trang 256

Bài Giảng Kỹ Thuật Số Ví duï

Phụ lục B

F0, A istype ‘neg , reg’; istype ñònh nghóa F0 , A laø tín hieäu cuûa thanh ghi , taùc ñoäng möùc thaáp outputs pin 15 istype ‘reg , invert’ tín hieäu output chaân 15 cuûa thanh ghi ngoõ ñaûo (ngoõ ra Q )

1.11. Phaùt bieåu end End

Cuù phaùp Hay

end modname

Muïc ñích: Duøng keát hôïp vôùi caùc phaùt bieåi module ñeå môû ñaàu vaø keát thuùc module chöông trình Söû duïng

signal: laø moät danh hieäu pin hay node attr: laø moät chuoãi kyù töï xaùc ñònh caùc thuoäc tính cuûa caùc signal Caùc thuoäc tính hôïp leä laø: ‘buffer’ : ñeäm ‘com’ : heä toå hôïp ‘invert’ : ñaûo ‘neg’ : tính cöïc möùc thaáp ‘pos’ : tính cöïc möùc cao ‘reg’ : thanh ghi (heä tuaàn töï) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : caùcFF, D, T, JK, SR

Ví duï

F0, A istype ‘neg , reg’; istype ñònh nghóa F0 , A laø tín hieäu cuûa thanh ghi , taùc ñoäng möùc thaáp outputs pin 15 istype ‘reg , invert’ tín hieäu output chaân 15 cuûa thanh ghi ngoõ ñaûo (ngoõ ra Q )

2. CAÙC KHAI BAÙO (DECLARATIONS) 2.1.

Pin Cuù phaùp

[!]pin_id[,[l]pin_id…]pin[pin#[,pin#]] istype ’attr’];

Muïc ñích: Töø khoùa pin duøng ñeå khai baùo nhöõng tín hieäu input vaø output, laø nhöõng tín hieäu in/out quy ñònh saün treân duïng cu ï(theo soå tra cöùu). Khai baùo cuõng coù theå ñònh nghóa thuoäc tính chaân Khi 1 danh saùc danh ñònh chaân vaø soá chaân coù trong cuøng moät khai baùo chaân , seõ coù söï töông öùng 1-1 giöõa danh ñònh chaân vaø soá chaân Söû duïng

pin_id: laø moät danh hieäu duøng ñeå ñaët teân cho 1 chaân pin #: laø soá thöù töï chaân treân duïng cuï (PLD)thaät

GV: Nguyễn Trọng Hải

Trang 257

Bài Giảng Kỹ Thuật Số

Phụ lục B

attr: laø moät chuoãi xaùc ñònh caùc thuoäc tính cuûa chaân !: kyù hieäu NOT,tích cöïc möùc thaáp Ví duï

!clock,reset,S1 pin 12,15,3; khai baùo naøy gaùn teân chaân: clock chaân 12, reset chaân 15, S1 chaân 3 !clock: tích cöïc möùc 0

2.2.

Node Cuù phaùp

[!]node_id[,[!]node_id … ]node[node#[,node# …][istype ’attr’];

Muïc ñích: Töø khoùa node duøng ñeå khai baùo nhöõng tín hieäu gaùn cho nhöõng nuùt aån trong duïng cuï Söû duïng

node_id: laø moät danh hieäu duøng ñeå ñaët teân moät nuùt node#: laø soá thöù töï nuùt treân duïng cuï thaät (nuùt töông ñöông nhö chaân aån trong duïng cuï vaø soá nuùt ñöôïc cho trong soå tay tra cöuù)

Ví duï

B node istype’reg’ : xaùc ñònh nuùt B laø 1 ngoõ cuûa FF trong duïng cuï A,B node 25,26 : gaùn teân A laø nuùt 25, gaùn teân B laø nuùt 26. Soá nuùt naøy do nhaø saûn xuaát quy ñònh trong soå tay tra cöùu

2.3.

Duïng cuï (Device) Cuù phaùp

Device-id device real_device;

Muïc ñích: Khai baùo device cho moät PLD thaät. Trong quaù trình bieân dòch, caùc haøm logic seõ ñöôïc ñöa veà daïng theo caáu truùc coång ñuùng nhö cuûa duïng cuï thaät. Söû duïng

device-id: laø moät danh hieäu, chính laø teân file fusemap real-device: moâ taû maõ soá duïng cuï (PLD) ñaët giöõa 2 daáu nhaùy ñôn (‘) Phaûi ñaët daáu ; sau khai baùo

Ví duï

D1 device ‘P16R4’: khai baùo naøy cho bieát D1 laø loaïi PLD PAL 16R4

3. CAÙC KHAI BAÙO KHAÙC (OTHER DECLARATIONS) 3.1.

Haèng (constant) Cuù phaùp

id[,id]… = expr[,expr] …;

Muïc ñích: Khai baùo haèng ñònh nghóa nhöõng haèng soá ñöôïc duøng trong 1 module Söû duïng

id: laø moät danh hieäu ñaët teân cho 1 haèng expr: xaùc ñònh gía trò haèng

Ví duï

X = .X.;

GV: Nguyễn Trọng Hải

“X mang yù nghóa khoâng xaùc ñònh Trang 258

Bài Giảng Kỹ Thuật Số

3.2.

Phụ lục B

Z = .Z.;

“Z mang yù nghóa toång trôû cao

C = .C.

“C mang yù nghóa taùc ñoäng caïnh leân

A = ^b01 ;

“soá nhò phaân

B = ^h16;

“soá hex

C = 10;

“soá thaäp phaân

Taäp hôïp (set) Ñònh nghóa

Taäp hôïp laø taäp hôïp nhöõng tính hieäu vaø haèng soá maø taùc vuï thöïc hieän nhö laø 1 ñôn vò Baát cöù taùc vuï naøo aùp duïng cho 1 taäp hôïp seõ ñöôïc aùp duïng cho moãi phaàn töû trong taäp hôïp Taäp hôïp seõ laøm ñôn giaûn vieäc moâ taû logic vaø caùc test-vectors baèng caùch chæ caàn duøng teân goïi taäp hôïp

Söû duïng

Moät taäp hôïp ñöôïc ñaïi dieän bôûi 1 danh saùch caùc haèng soá vaø tín hieäu ngaên caùch baèng caùc daáu chaám phaåy hay daáu khoaûng (..), ñaët trong daáu ngoaëc vuoâng ([ ]). Sau moãi khai baùo taäp hôïp phaûi coù daáu ;

Ví duï

MULOUT = [B0,B1,B2,B3,B4,B5,B6,B7]; hay

MULOUT = [B0…B7];

MULOUT laø khai baùo laø teân moät taäp hôïp goàm 8 tín hieäu töø B0 ñeán B7 BCD = [D,C,B,A] LED = [g,f,e,d,c,b,a] Test-vectors (BCD → LED) [0,0,0,0] →[1,0,0,0,0,0,0] BCD laø 1 taäp hôïp goàm caùc tín hieäu D,C,B,A LED laø 1 taäp hôïp goàm caùc tín hieäu g,f,e,d,c,b,a 3.3.

Macro Cuù phaùp

Macro_id macro [(dummy_arg [, dummy_arg]…)]{block};

Muïc ñích: Khai baùo macro ñònh nghóa 1 macro thöïc hieän caùc chöùc naêng, caùc pheùp toaùn,bieåu thöùc logic trong moät khoái Chæ ñònh nghóa macro 1 laàn trong phaàn khai baùo macro trong module vaø seõ ñöôïc duøng baát cöù nôi naøo trong module Khai baùo macro töông töï nhö trong trình hôïp ngöõ Macro chæ coù theå ñöôïc duøng trong module maø noù ñöôïc khai baùo GV: Nguyễn Trọng Hải

Trang 259

Bài Giảng Kỹ Thuật Số

Phụ lục B

macro_id: laø moät danh hieäu ñaët teân cho macro dummy_arg: laø moät thoâng soá hình thöùc block: laø caùc bieåu thöùc logic

Söû duïng

Ví duï

NAND3 macro (A,B,C) {!(A&B&C)} NAND3 laø macro thöïc hieän chöùc naêng haøm logic A.B.C vôùi A,B,C laø caùc thoâng soá hình thöùc Sau ñoù trong module khai baùo macro naøy ta coù khai baùo: D = NAND 3 (Clock, Hello, busy); Keát quûa laø: D = !(Clock&Hello&Busy) khi bieân dòch

3.4.

Enable Cuù phaùp

Enable output_id = [!]expr;

Muïc ñích: Khai baùo enable cho pheùp caùc ngoõ ra 3 traïng thaùi hoaït ñoäng theo tín hieäu ñieàu khieån bôûi gía trò cuûa expr Söû duïng khai baùo naøy theo sau phaùt bieåu equations Söû duïng

output_id: laø danh hieäu ñaët teân cho 1 ngoõ ra hoaëc 1 taäp hôïp ngoõ ra expr: laø 1 bieåu thöùc logic

Ví duï

OE pin11; F0,F1,F2,F3 pin 19,18,17,16; Count = [F0,F1,F2,F3]; Equations Enable count = !OE Caùc ngoõ ra töø F0 ñeán F3 trong taäp hôïp count laø caùc ngoõ ra 3 traïng thaùi , seõ hoaït ñoäng khi OE = 0 vaø seõ ôû traïng thaùi high-Z khi OE = 1 Coù theå söû duïng tieáp vó ngöõ .OE thay cho khai baùo enable (xem phaàn tieáp vó ngöõ)

4. CAÙC TOAÙN TÖÛ (OPERATORS) 4.1.

Toaùn töû chuaån (standard) !

NOT

=

toaùn töû gaén cho bieåu thöùc toå hôïp

#

OR

:=

toaùn töû gaùn cho bieåu thöùc thanh ghi (tuaàn töï)

&

AND

$

XOR

!$

XNOR

GV: Nguyễn Trọng Hải

Trang 260

Bài Giảng Kỹ Thuật Số

Phụ lục B

Ngoaøi ra töø khoaù @ALTERNATE baùo cho trình bieân dòch bieát boä toaùn töû töông ñöông (alternate) thay theá cho boä toaùn töû chuaån (caùc kyù hieäu deã nhôù hôn) Boä toaùn töû thay theá (phaûi coù töø khoaù @ALTERNATE ôû ñaàu module chöông trình) / * + :+: :*: 4.2.

NOT AND OR XOR XNOR Toaùn töû so saùnh

==

baèng

!=

khoâng baèng

<

nhoû hôn

>

lôùn hôn

<=

nhoû hôn hoaëc baèng

>=

lôùn hôn hoaëc baèng

Ngoaøi ra coøn cho pheùp vieát caùc bieåu thöùc ñieàu kieän , bieåu thöùc naøy seõ traû veà 1 neáu thoaû ñieàu kieän vaø traû veà 0 neáu khoâng thoûa ñieàu kieän Ví duï Q = (P = =1);

“Q seõ baèng 1 neáu P =1 vaø Q seõ baèng 0 neáu P khaùc 1

5. CAÙC TIEÁP ÑAÀU NGÖÕ (Prefix), tieáp vó ngöõ (suffix) 5.1.

Tieáp ñaàu ngöõ

Toùan töû Not (! hay /) ñöôïc duøng nhö tieàp ñaàu ngöõ ñeå baùo trình bieân dòch bieát tín hieäu hoaït ñoäng (tích cöïc) ôû möùc logic Ví duï: 5.2.

!Q0 pin 15; töông ñöông vôùi Q0 pin 15 istype ‘neg’;

Tieáp vó ngöõ

Caùc tieáp vó ngöõ thöôøng ñöôïc duøng trong cheá ñoä thanh ghi ñeå truy xuaát ñeán töøng chaân noäi trong thanh ghi Ví duï Q0.CK truy xuaát ñeán chaân clock cuûa tín hieäu ra Q0 ôû cheá ñoä thanh ghi Töông töï nhö ñoái vôùi .RE,.PR,.D,.T….. laàn löôït truy xuaát ñeán caùc chaân reset,preset,D,T cuaû thanh ghi Tieáp vó ngöõ .OE cho pheùp xuaát ôû ngoõ ra 3 traïng thaùi Ví duï out.oe = !ena; ena =0 → ngoõ ra out ñöôïc pheùp xuaát ena = 1 → ngoõ ra out ôû traïng thaùi high-Z GV: Nguyễn Trọng Hải

Trang 261

Bài Giảng Kỹ Thuật Số

Phụ lục B

6. GHI CHUÙ (Comments) Caùc ghi chuù minh hoaï , giaûi thích cuûa chöông trình baét ñaàu baèng daáu nhaùy keùp (“)vaø keát thuùc baèng daáu nhaùy keùp (“) hoaëc xuoáng doøng. Ví duï Q1,Q2,Q3, pin 14,15,16 “outputs “declarations QSTATE = [Q1,Q2,Q3]; “sets

GV: Nguyễn Trọng Hải

Trang 262

Bài Giảng Kỹ Thuật Số

Phụ lục B

BAØI THÍ NGHIEÄM BIEÂN DÒCH VAØ MOÂ PHOÛNG ABEL A. MUÏC ÑÍCH – YEÂU CAÀU BAØI THÍ NGHIEÄM: •

Giuùp sinh vieân naém ñöôïc kyõ thuaät laäp trình vaø bieân dòch ngoân ngöõ ABEL trong thieát keá PLD (caùc daïng hoài tieáp, khoâng hoài tieáp, thanh ghi…)



SV phaûi ñoïc kyõ tröôùc baøi cô sôû lyù thuyeát vaø oân laïi kieán thöùc veà kyõ thuaät soá



SV phaûi nhaäp saün caùc baøi thí nghieäm vaøo ñóa meàm

B. THIEÁT BÒ SÖÛ DUÏNG: Maùy vi tính + chöông trình



C. NOÄI DUNG THÍ NGHIEÄM: 1. Thí nghieäm 1 Muïc ñích: Duøng caùc bieåu thöùc trong equations ñeå thöïc hieän maïch (mode ñôn). Thieát keá boä MUX 12 → 4 duøng GAL16V8 nhö hình sau A0 A1 A2 A3 B0 B1 B2 B3 C0 C1

1 2 3 4 5 6 7 8 9 11

U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9

F0 F1 F2 F3 F4 F5 F6 F7

12 13 14 15 16 17 18 19

C2 C3 Y0 Y1 Y2 Y3 S1 S0

16V8

Caùc ngoõ vaøo: [a3,a2,a1,a0], [b3,b2,b1,b0], [c3,c2,c1,c0] Ngoõ ra : [y0, y1, y2, y3] •

Ñieàu khieån choïn keânh : [S1, S0] Chöông trình 1 2 3 4 5

Module mux12t4 title '12 to 4 multiplexer Thi nghiem 1' “Cac khai bao mux12t4 device 'P16V8S';

6 7 8 9 10

a0,a1,a2,a3 b0,b1,b2,b3 c0,c1,c2,c3 s1,s0 y0,y1,y2,y3

GV: Nguyễn Trọng Hải

pin pin pin pin pin

1,2,3,4; 5,6,7,8; 9,11,12,13; 18,19; 14,15,16,17;

Trang 263

Bài Giảng Kỹ Thuật Số 11 12 13 14 15 16 17 18



Phụ lục B

H = [1,1,1,1]; L = [0,0,0,0]; X = [.x.,.x.,.x.,.x.]; select = [s1, s0]; y = [y3,y2,y1,y0]; a = [a3,a2,a1,a0]; b = [b3,b2,b1,b0]; c = [c3,c2,c1,c0];

19 20 21 22 23

equations y = (select (select (select (select

24 25 26 27 28 29 30 31 32 33 34 35 36 37

test_vectors ([select, a, b, c] -> y) [0 , 1, X, X] -> 1; [0 ,10, H, L] -> 10; [0 , 5, H, L] -> 5; [1 , H, 3, H] -> 3; [1 ,10, 7, H] -> 7; [1 , L,15, L] -> 15; [2 , L, L, 8] -> 8; [2 , H, H, 9] -> 9; [2 , L, L, 1] -> 1; [3 , H, H, 0] -> 0; [3 , L, L, 9] -> 9; [3 , H, L, 0] -> 0; end

== == == ==

0) 1) 2) 3)

& & & &

a b c c

# # # ;

Giaûi thích chöông trình -

-

-

Doøng 1 khai baùo teân module laø mux12t4 Doøng 2,3 khai baùo teân title vaø ñaët teân Doøng 4 laø chuù thích Doøng 5 khai baùo duïng cuï (device) teân U1 vaø duøng vi maïch 16V8S (simple mode) Doøng 6,7,8,9,10 laø khai baùo gaùn teân caùc chaân töông öùng nhö hình Doøng 11, 12, 13 laø khai baùo haèng : L = 0, H = 1, X=tuøy ñònh Doøng 14,15,16,17,18 laø khai baùo taäp hôïp : select = [S1,S0] laø taäp goàm 3 bieán ñieàu khieån choïn keânh, töông töï cho taäp a, b, c, y. Vieäc khai baùo taäp hôïp naøy seõ raát tieän khi ta caàn tham chieáu tôùi caùc ngoõ ñieàu khieån hoaëc ngoõ ra ôû phaàn sau ñoù Doøng 19 baét ñaàu phaùt bieåu equations. Giaù trò gaùn cho toaùn töû ‘baèng’ duøng heä thaäp phaân. Neáu duøng heä nhò phaân ta ghi : (select = = ^b00) Doøng 24 baét ñaàu phaùt bieåu test_vectors ñeå kieåm tra chöùc naêng cuûa heä, khai baùo caùc tín hieäu ngoõ vaøo vaø ngoõ ra caàn kieåm tra Ngoõ vaøo laø taäp hôïp caùc bieán select, a, b, c. Ngoõ ra laø taäp hôïp caùc bieán y

GV: Nguyễn Trọng Hải

Trang 264

Bài Giảng Kỹ Thuật Số •

Phụ lục B

Doøng 25 ñeán 27 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=0 Doøng 28 ñeán 30 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=1 Doøng 31 ñeán 33 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=2 Doøng 34 ñeán 36 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=3 Doøng 37 laø phaùt bieåu END keát thuùc chöông trình

Bieân dòch chöông trình Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt.

2. Thí nghieäm 2 Muïc ñích: Thieát laäp ñieàu khieån caùc ngoõ ôû cheá ñoä I/O vaø Hi Z (mode phöùc) Thieát keá boä ñeäm 2 chieàu 3 traïng thaùi duøng GAL 16V8 S1 S0 S1 S0

GAL16V8

B2 B1 B0

1 2 3 4 5 6 7 8 9 11

U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9

F0 F1 F2 F3 F4 F5 F6 F7

12 13 14 15 16 17 18 19

16V8

A2 A1 A0

Caùc ngoõ vaøo/ra: [a2,a1,a0], [b2,b1,b0] Ñieàu khieån choïn chieàu data: [S1, S0] Neáu [S1,S0] = [0,1]: höôùng töø B sang A Neáu [S1,S0] = [1,0]: höôùng töø A sang B •

Chöông trình 1 2 3

module tsbuffer title 'bi-directional three state buffer Thi nghiem 2'

4

TSB1 device 'P16V8c';

GV: Nguyễn Trọng Hải

Trang 265

A2 A1 A0 B2 B1 B0

Bài Giảng Kỹ Thuật Số

5 6 7

S1,S0 A2,A1,A0 B2,B1,B0

8 9 10 11

Select A = B = X,Z =

12 13 14

Equations A = B; B = A;

15 16 17 18 19 20 21 22 23 24 25 26 27 •

Pin 1,2; Pin 13,14,15; Pin 16,17,18;

= [S1,S0]; [A2,A1,A0]; [B2,B1,B0]; .X., .Z.;

Enable A = (Select==1); Enable B = (Select==2); test_vectors ([Select, [ 0 , [ 0 , [ 1 , [ 1 , [ 2 , [ 2 , [ 3 , [ 3 ,

A, 0, 7, X, X, 3, 5, 0, 7,

B]-> 0]-> 7]-> 3]-> 5]-> X]-> X]-> 0]-> 7]->

[ [ [ [ [ [ [ [ [

A, Z, Z, 3, 5, X, X, Z, Z,

B]) Z]; Z]; X]; X]; 3]; 5]; Z]; Z];

end

Giaûi thích chöông trình -



Phụ lục B

Doøng 4 khai baùo device ôû mode phöùc (modeI/O) Doøng 11 khai baùo .z. laø toång trôû cao Doøng 15 cho pheùp A xuaát khi [S1S0] = [01], luùc naøy höôøng truyeàn töø B->A Doøng 16 cho pheùp B xuaát khi [S1S0] = [10], luùc naøy höôøng truyeàn töø A->B

Bieân dòch chöông trình Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt.

GV: Nguyễn Trọng Hải

Trang 266

Bài Giảng Kỹ Thuật Số

Phụ lục B

3. Thí nghieäm 3 Muïc ñích: Söû duïng baûng söï thaät trong truth_table ñeå thöïc hieän maïch Thieát keá 2 boä giaûi maõ 2→ 4 söû duïng GAL16V8 hoaït ñoäng theo baûng söï thaät sau: Input G B 1 0 1 0 1 1 1 1 0 x



A 0 1 0 1 x

Y3 1 1 1 0 1

Output Y2 Y1 1 1 1 0 0 1 1 1 1 1

Y0 0 1 1 1 1

G1 A1 B1 G2 A2 B2

1 2 3 4 5 6 7 8 9 11

U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9

F0 F1 F2 F3 F4 F5 F6 F7

16V8

Chöông trình 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Module decod2t4 Title 'giai ma 2 sang 4 Thi nghiem 3'

23 24 25 26 27 28

truth_table (inputs2-> outputs2) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,X,X] -> [H,H,H,H];

Decod2t4 device 'P16V8S'; G1,G2 pin 2,5; A1,B1,A2,B2 pin 3,4,6,7; Y01,Y11,Y21,Y31 pin 19,18,17,16; Y02,Y12,Y22,Y32 pin 15,14,13,12; H,L,X = 1,0,.x.; inputs1 = [G1,B1,A1]; outputs1 = [Y31,Y21,Y11,Y01] ; inputs2 = [G2,B2,A2]; outputs2 = [Y32,Y22,Y12,Y02]; Truth_table (inputs1->outputs1) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,X,X] -> [H,H,H,H];

GV: Nguyễn Trọng Hải

Trang 267

12 13 14 15 16 17 18 19

Y32 Y22 Y12 Y02 Y31 Y21 Y11 Y01

Bài Giảng Kỹ Thuật Số



Phụ lục B

29 30 31 32 33 34

test_vectors (inputs1-> outputs1) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,1,0] -> [H,H,H,H];

35 36 37 38 39 40 41

test_vectors (inputs2-> outputs2) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,0,1] -> [H,H,H,H]; end

Giaûi thích chöông trình Chöông trình treân duøng phaùt bieåu truth_table ñeå khai baùo baûng söï thaät hoaït ñoäng cuûa heä thay cho bieåu thöùc. Trong tröôøng hôïp naøy caùch vieát truth_table seõ goïn hôn caùch vieát theo bieåu thöùc (equations).



Bieân dòch chöông trình Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt.

4. Thí nghieäm 4 Muïc ñích: Thieát keá vôùi mode thanh ghi cho maïch tuaàn töï

Thieát keá boä ñeám leân (ñoàng boä) 16 duøng GAL16V8. Boä ñeám coù ngoõ Cl ñoàng boä, tính cöïc möùc 0 nhö hình sau CK CL

1 2 3 4 5 6 7 8 9 11

U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9

F0 F1 F2 F3 F4 F5 F6 F7

12 13 14 15 16 17 18 19

16V8

GV: Nguyễn Trọng Hải

Trang 268

Q0 Q1 Q2 Q3

Bài Giảng Kỹ Thuật Số

Phụ lục B

Ta thieát laäp baûng traïng thaùi hieän taïi vaø keá tieáp cho caùc ngoõ ra Q3Q2Q1Q0 Traïng thaùi hieän taïi Q3 Q2 Q1 Q0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1

+

Q3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0

Traïng thaùi keá Q2+ Q1+ Q0+ 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0

Töø ñoù ruùt ra ñöôïc

Q0 + = Q0 .Cl

(vôùi Cl tích cöïc möùc thaáp)

Q1+ = Q1 ⊕ Q0.Cl Q 2 + = Q 2 ⊕ (Q1.Q0).Cl Q3 + = Q3 ⊕ (Q 2.Q1.Q0).Cl Theo caáu truùc GAL16V8, chaân 1 laø chaân CK ñoàng boä caùc thanh ghi beân trong



Chöông trình 1 2 3 4 5 6

module count4 title 'COUNTER Bai so 1' Counter device CK,CL Q3,Q2,Q1,Q0

7 8

Count = [Q3,Q2,Q1,Q0]; C,H,L = .C.,1,0 ; "Xung CK tac dong canh len

9 10 11 12 13

Equations Q0 := Q1 := Q2 := Q3 :=

GV: Nguyễn Trọng Hải

MOD16 'P16V8R'; pin 1,2 ; pin 19,18,17,16;

!Q0 & CL; (Q1$Q0) & CL; (Q2$(Q1&Q0))&CL; (Q3$(Q2&Q1&Q0))&CL;

Trang 269

Bài Giảng Kỹ Thuật Số 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32



Phụ lục B

Test_vectors([CK,CL] -> Count) [C,L] -> 0 ; [C,H] -> 1 ; [C,H] -> 2 ; [C,H] -> 3 ; [C,H] -> 4 ; [C,H] -> 5 ; [C,H] -> 6 ; [C,H] -> 7 ; [C,H] -> 8 ; [C,H] -> 9 ; [C,H] -> 10 ; [C,H] -> 11 ; [C,H] -> 12 ; [C,H] -> 13 ; [C,H] -> 14 ; [C,H] -> 15 ; [C,H] -> 0 ; END

Giaûi thích Trong mode thanh ghi caùc bieåu thöùc söû duïng toaùn töû gaùn ‘:=’ ñeå bieãu dieãn ngoõ ra laø heä tuaàn töï (thanh ghi).



Bieân dòch chöông trình Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt.

GV: Nguyễn Trọng Hải

Trang 270

BOÄ GIAÙO DUÏC & ÑAØO TAÏO TRÖÔØNG ÑAÏI HOÏC KYÕ THUAÄT COÂNG NGHEÄ THAØNH PHOÁ HOÀ CHÍ MINH

Ths. NGUYEÃN TROÏNG HAÛI

TOÙM TAÉT BAØI GIAÛNG

VERILOG

LÖU HAØNH NOÄI BOÄ

07/2005

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

CHÖÔNG I

TOÅNG QUAN Verilog HDL laø moät trong hai ngoân ngöõ moâ phoûng phaàn cöùng thoâng duïng nhaát, ñöôïc duøng trong thieát keá IC, ngoân ngöõ kia laø VHDL. HDL cho pheùp moâ phoûng caùc thieát keá deã daøng, söûa chöõa loãi, hoaëc thöïc nghieäm baèng nhöõng caáu truùc khaùc nhau. Caùc thieát keá ñöôïc moâ taû trong HDL laø nhöõng kyõ thuaät ñoäc laäp, deã thieát keá, deã thaùo gôõ, vaø thöôøng deå ñoïc hôn ôû daïng bieåu ñoà, ñaëc bieät laø ôû caùc maïch ñieän lôùn. Verilog thöôøng ñöôïc duøng ñeå moâ taû thieát keá ôû boán daïng: Thuaät toaùn (moät soá leänh gioáng ngoân ngöõ C nhö: if, case, for,while…). Chuyeån ñoåi thanh ghi (keát noái baèng caùc bieåu thöùc Boolean). Caùc coång keát noái( coång: OR, AND, NOT…). Chuyeån maïch (BJT, MOSFET). Ngoân ngöõ naøy cuõng chæ roõ caùch thöùc keát noái, ñieàu khieån vaøo/ra trong moâ phoûng. Caáu truùc chöông trình duøng ngoân ngöõ Verilog // Khai baùo module Module teân chöông trình (teân bieán I/O); // teân chöông trình truøng teân file.v. Input [msb:lsb] bieán; Output [msb:lsb] bieán; Reg [msb:lsb] bieán reg; Wire [msb: lsb] bieán wire; // Khai baùo khoái always, hoaëc khoái initial. … caùc leänh … Endmodule

GV: Nguyeãn Troïng Haûi

Trang 1

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông II CHÖÙC NAÊNG CAÙC TÖØ VÖÏNG TRONG VERILOG Nhöõng taäp tin vaên baûn nguoàn Verilog bao goàm nhöõng bieåu hieän thuoäc tính töø vöïng sau ñaây: I.

Khoaûng traéng Khoaûng traéng ngaên nhöõng töø vaø coù theå chöùa khoaûng caùch, khoaûng daøi, doøng môùivaø daïng ñöôøng daãn. Do ñoù, moät leänh coù theå ñöa ra nhieàu doøng phöùc taïp hôn maø khoâng coù nhöõng ñaëc tính ñaëc bieät.

II.

Chuù giaûi Nhöõng chuù giaûi coù theå chæ ñònh baèng hai caùch: ( gioáng trong C/C++) Chuù giaûi ñöôïc vieát sau hai daáu gaïch xieân (//). Ñöôïc vieát treân cuøng moät doøng. Ñöôïc vieát giöõa /* */, khi vieát nhieàu doøng chuù giaûi.

III. Chöõ soá: Löu tröõ soá ñöôïc ñònh nghóa nhö laø moät con soá cuûa caùc bit, giaù trò coù theå laø: soá nhò phaân, baùt phaân, thaäp phaân, hoaëc thaäp luïc phaân. Ví duï: 3’b001, 5’d30 = 5’b11110, 16’h5ED4 = 16’d24276 = 16’b0101111011010100 IV. Töø ñònh danh: Töø ñònh danh do ngöôøi duøng quy ñònh cho bieán soá, teân haøm, teân moâñun, teân khoái vaø teân tröôøng hôïp. Töø ñònh danh baét ñaàu baèng moät maãu töï hoaëc ñöôøng gaïch döôùi ’_’ ( khoâng baét ñaàu baèng moät con soá hoaëc $ ) vaø keå caû moïi chöõ soá cuûa maåu töï, nhöõng con soá vaø ñöôøng gaïch döôùi, töø ñònh danh trong Verilog thì phaân bieät daïng chöõ. V.

Cuù phaùp: Kí hieäu cho pheùp: ABDCE…abcdef…1234567890_$ Khoâng cho pheùp: caùc kí hieäu khaùc -, &, #, @

GV: Nguyeãn Troïng Haûi

Trang 2

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

VI. Toaùn töû: Toaùn töû laø moät, hai, hoaëc ba kí töï duøng ñeå thöïc hieän caùc toaùn haïng treân bieán. Caùc toaùn töû bao goàm >, +, &, !=. VII. Töø khoùaVerilog: Coù nhöõng töø maø phaûi coù yù nghóa ñaëc bieät trong Verilog. Ví duï: assign, case, while, wire, reg, and, or, nand, vaø module. Chuùng khoâng ñöôïc duøng nhö töø ñònh danh. Töø khoùa Verilog cuõng bao goàm caû chæ daãn chöông trình bieân dòch vaø System Task (heä thoáng soaïn thaûo) vaø caùc haøm.

GV: Nguyeãn Troïng Haûi

Trang 3

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông III

CAÙC COÅNG CÔ BAÛN TRONG VERILOG Caùc coång logic cô sôû laø moät boä phaän cuûa ngoân ngöõ Verilog. Coù hai ñaëc tính ñöôïc chæ roõ laø: drive_strenght vaø delay. Drive_strenght chæ söùc beàn cuûa coång. Ñoä beàn ngoõ ra laø söï keát noái moät chieàu ñeán nguoàn, keá ñoù taïo neân söï keát noái trong suoát trans daãn, keát thuùc laø toång trôû keùo leân hoaëc xuoáng. Drive_strenght thöôøng khoâng ñöôïc chæ roõ, trong tröôøng hôïp naøy ñoä beàn maëc ñònh laø strong1 vaø strong0 . Delay: neáu delay khoâng ñöôïc chæ roõ, thì khi ñoù coång khoâng coù trì hoaõn truyeàn taûi; neáu coù hai delay ñöôïc chæ ñònh, thì tröôùc tieân laø mieâu taû trì hoaõn leân, thöù hai laø trì hoaõn xuoáng. Neáu chæ coù moät delay ñöôïc chæ ñònh, thì khi ñoù trì hoaõn leân xuoáng laø nhö nhau. Delay ñöôïc boû qua trong toång hôïp. Phöông phaùp cuûa söï trì hoaõn chæ ñònh naøy laø moät tröôøng hôïp ñaëc bieät cuûa “Parameterized Modules”. Caùc tham soá cho caùc coång cô sôû phaûi ñöôïc ñònh nghóa tröôùc nhö delay. I.

Caùc coång cô baûn: Caùc coång cô baûn coù moät ngoõ ra, vaø coù moät hoaëc nhieàu ngoõ vaøo. Trong caùc coång, cuù phaùp cuï theå bieåu dieãn beân döôùi, caùc töø khoaù cuûa caùc coång: and, or, nand, nor.

1.

Cuù phaùp: GATE (drive_strength)#(delays) Teân töø khoùa coång _teân (output, input_1, input_2, …, input_N); Delay: #( leân, xuoáng) hoaëc #leân_vaø_xuoáng hoaëc #( leân_vaø_xuoáng)

2.

Ví duï: And c1 (o, a, b, c. d); // coù 4 ngoõ vaøo coång And goïi laø c1 c2 (p, f, g); // vaø 2 ngoõ vaøo coång and goïi laø c2 Or #(4,3) ig ( o, b, c); // coång Or ñöôïc goïi laø ig, rise time = 4, fall time = 3

GV: Nguyeãn Troïng Haûi

Trang 4

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Xor #(5) xor1 (a, b, c); // sau 5 ñôn vò thôøi gian thì a = b xor c II.

Coång buf, not: Caùc coång naøy thöïc thi ñeäm vaø ñaûo theo theo thöù töï ñòmh saún. Chuùng coù moät ngoõ vaøo, hai hay nhieàu ngoõ ra. Cuù phaùp cuï theå bieåu dieãn ôû beân döôùi, töø khoaù buf, not.

1.

Cuù phaùp: Teân töø khoùa coång _teân (output_1, output_2, …, output_N, input);

2.

Ví duï: Not #(5) not_1( a,c); // sau 5 ñôn vò thôøi gian thì a = ñaûo c Buf c1 (o, p, q, r, in); // boä ñeäm 5 ngoõ ra vaø 2 ngoõ ra c2 (p, f, g);

GV: Nguyeãn Troïng Haûi

Trang 5

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông IV

CAÙC DAÏNG DÖÕ LIEÄU I.

Ñaët giaù trò: Verilog bao goàm 4 giaù trò cô baûn. Haàu heát caùc daïng döõ lieäu Verilog chöùa caùc giaù trò sau: 0: möùc logic 0, hoaëc ñieàu kieän sai. 1: möùc logic 1, hoaëc ñieàu kieän ñuùng. X: möùc logic tuyø ñònh Z: traïng thaùi toång trôû cao. X vaø Z duøng coù giôùi haïn trong toång hôïp (synthesis)

II.

Wire: Moâ taû vaät lieäu ñöôøng daây daãn trong moät maïch ñieän vaø ñöôïc duøng ñeå keát noái caùc coång hay caùc module. Giaù trò cuûa Wire coù theå ñoïc, nhöng khoâng ñöôïc gaùn trong haøm (function) hoaëc khoái (block). Wire khoâng löu tröõ giaù trò cuûa noù nhöng vaãn phaûi ñöôïc thöïc thi bôûi 1 leänh gaùn keá tieáp hay bôûi söï keát noái Wire vôùi ngoõ ra cuûa 1 coång hoaëc 1 module. Nhöõng daïng ñaëc bieät khaùc cuûa Wire: Wand(wired_and): giaù trò phuï thuoäc vaøo möùc logic And toaøn boä boä ñieàu khieån keát noái ñeán Wire. Wor (wired_or): giaù trò phuï thuoäc vaøo möùc logic Or toaøn boä boä ñieàu khieån keát noái ñeán Wire. Tri(three_state): taát caû boä ñieàu khieån keát noái ñeán 1 tri phaûi ôû traïng thaùi toång trôû cao.

1.

Cuù phaùp: Wire [msb:lsb] teân bieán wire. Wand [msb:lsb] teân bieán wand. Wor [msb:lsb] teân bieán wor. Tri [msb:lsb] teân bieán tri.

2.

Ví duï:

GV: Nguyeãn Troïng Haûi

Trang 6

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Wire c; Wand d; Assign d= a; Assign d= b;// giaù trò d laø möùc logic cuûa pheùp And a vaø b. Wire [9:0] A; // vectô A coù 10 wire. III. Reg: Reg (register) laø moät ñoái töôïng döõ lieäu maø noù chöùa giaù trò töø moät thuû tuïc gaùn keá tieáp. Chuùng chæ ñöôïc duøng trong haøm vaø khoái thuû tuïc. Reg laø moät loaïi bieán Verilog vaø khoâng nhaát thieát laø thanh ghi töï nhieân. Trong thanh ghi nhieàu bit, data ñöôïc löu tröõ baèng nhöõng chöõ soá khoâng daáu vaø khoâng coù kí hieäu ñuoâi môû roäng, ñöôïc thöïc hieän maø ngöôøi söû duïng coù chuû y ùlaø soá buø hai. 1.

Cuù phaùp: Reg [msb:lsb] teân bieán reg.

2.

Ví duï: Reg a; // bieán thanh ghi ñôn giaûn 1 bit. Reg [7:0] A; // moät vectô 8 bit; moät bank cuûa 8 thanh ghi. Reg [5:0]b, c; // hai bieán thanh ghi 6 bit.

IV. Input, Output, Inout: Nhöõng töø khoaù naøy bieåu thò ngoõ vaøo, ngoõ ra, vaø port hai chieàu cuûa moät module hoaëc task. Moät port ngoõ ra coù theå ñöôïc caáu hình töø caùc daïng: wire, reg, wand, wor, hoaëc tri. Maëc ñònh laø wire. 1.

Cuù phaùp: Input [msb:lsb] port ngoõ vaøo. Output [msb:lsb] port ngoõ ra. Inout [msb:lsb] port ngoõ vaøo,ra hai chieàu.

2.

Ví duï: Module sample (b, e, c, a); Input a; // moät ngoõ vaøo maëc ñònh laø kieåu wire. Output b, e; // hai ngoõ ra maëc ñònh laø kieåu wire. Output [1:0] c; /* ngoõ ra hai bit, phaûi ñöôïc khai baùotrong moät leänh rieâng*/ Reg [1:0] c; // ngoõ c ñöôïc khai baùo nhö moät reg.

GV: Nguyeãn Troïng Haûi

Trang 7

Toùm taét baøi giaûng TK Heä Thoáng Soá V.

Phaàn Verilog

Integer (Soá nguyeân): Integer laø moät bieán ña naêng. Trong toång hôïp chuùng ñöôïc duøng chuû yeáu cho voøng laëp, tham soá, vaø haèng soá. Chuùng hoaøn toaøn laø reg. Tuy nhieâu chuùng chöùa döõ lieäu baèng nhöõng soá coù daáu, trong khi ñoù khai baùo daïng reg chöùa chung baèng soá khoâng daáu. Neáu chuùng chöùa nhöõng soá maø khoâng ñònh nghóa thôøi gian bieân dòch thì kích thöôùc maëc ñònh laø 32 bit. Neáu chuùng chöùa haèng, söï toång hôïp ñieàu chænh caùc soá coù kích thöôùc nhoû nhaát caàn thieát cho söï bieân dòch.

1.

Cuù phaùp: Integer teân bieán nguyeân; …teân haèng nguyeân…;

2.

Ví duï: Integer a; // soá nguyeân ñôn giaûn 32bit. Assign b= 63; // maëc ñònh laø moät bieán 7 bit.

VI. Supply 0, Supply1: Xaùc ñònh choå ñöôøng daãn leân möùc logic 0 ( ñaát), logic 1( nguoàn) theo thöù töï ñònh saün. VII. Time: Time laø moät löôïng 64 bit maø ñöôïc söû duïng cuøng vôùi $time, heä thoáng thao taùc chöùa löôïng thôøi gian moâ phoûng. Time khoâng ñöôïc hoã trôï toång hôïp vaø vì theá chæ ñöôïc duøng trong muïc ñích moâ phoûng. 1.

Cuù phaùp: Time bieán time;

2.

Ví duï: Time c; c = $time; // c = thôøi gian moâ phoûng doøng ñieän.

VIII. Parameter (Tham soá): Moät Parameter xaùc ñònh 1 haèng soá maø ñöôïc ñaët khi baïn cho ví duï cuï theå laø moät module. Caùc naøy cho pheùp ta coù theå söûa chöõa. 1.

Cuù phaùp: Parameter par_1= gaùi trò, par_2= gaùi trò, …; Parameter [giôùi haïn] par_3 = giaù trò;

2.

Ví duï:

GV: Nguyeãn Troïng Haûi

Trang 8

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Parameter add = 2b’00, sub = 3b’111; Parameter n = 4; Parameter [3:0] par_2 = 4b’1010; … reg [n-1:0] harry;// moät thanh ghi 4 bít maø ñoä roäng ñöôïc ñaët bôûi tham soá n ôû treân. always @(x) y = {{(add - sub) {x}}} if (x) begin state = par_2[1]; else state =par_2[2]; end.

GV: Nguyeãn Troïng Haûi

Trang 9

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

ChöôngV

TOAÙN TÖÛ I.

Toaùn töû soá hoïc: Nhöõng toaùn töû naøy thöïc hieän caùc pheùp tính soá hoïc. Daáu ’+’ vaø ’-’ coù theå ñöôïc söû duïng moät trong hai toaùn töû ñôn (-z) hoaëc keùp (x - y). 1. Toaùn töû: +, -, *, /, %. 2. Ví duï: parameter n = 4; Reg[3:0] a, c, f, g, count; f= a +c; g= c –n; count = (count +1) % 16; // coù theå ñeám töø 0 ñeán 15.

II.

Toaùn töû quan heä: Toaùn töû quan heä so saùnh hai toaùn haïng vaø traû veà moät ñôn bit laø 0 hoaëc 1. Nhöõng toaùn töû naøy toång hôïp vaøo duïng cuï so saùnh. Bieán Wire vaø Reg laø nhöõng bieán döông. Vì theá, (-3b001) = (3b111) vaø (-3b001) > ( 3b110) nhöng neáu laø soá nguyeân thì -1< 6. 1. Caùc toaùn töû quan heä: <, <=, >, >=, = =, !=. 2. Ví duï: If (x= =y) e =1; Else e= 0; // so saùnh hai vector a, b reg [3:0] a, b; if (a[3] = =b [3]) a[2:0] >b[2:0]; else b[3];

GV: Nguyeãn Troïng Haûi

Trang 10

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

III. Toaùn töû bit_wire: So saùnh töøng bit hai toaùn toaùn haïng. 1. Caùc toaùn töû: ~ (bitwire NOT), & (bitwire AND), ^~ (bitwire XNOR).

| (bitwire OR), ^ (bitwire XOR), ~^ hoaëc

2. Ví duï: Module and2(a, b, c); Input [1:0] a, b; Output [1:0] c; Assign c = a & b; Endmodule IV. Toaùn töû logic: Toaùn töû logic traû veà 1 bit ñôn 0 hoaëc 1. chuùng gioáng nhö toaùn töû bitwire chæ laø nhöõng toaùn haïng ñôn bit. Chuùng coù theå laøm vieäc treân bieåu thöùc, soá nguyeân hoaïc nhoùm bit, vaø coi nhu taát caû caùc giaù trò khoâng baèng 0 laø ’1’. Toaùn töû logic ñöôïc duøng nhieàu trong leänh ñieàu kieän (if… else), khi chuùng laøm vieäc treân bieåu thöùc. 1.

Toaùn töû: !(NOT), && (AND), || (OR)

2.

Ví duï: Wire [7:0] x, y, z; Reg a; … if ((x= = y)&&(z)) a=1; else a=! x;

V.

Toaùn töû bieán ñoåi: Coù taùc duïng treân taát caû caùc bit cuûa moät vectô toaùn haïng vaø traû veà giaù trò ñôn bit. Nhöõng toaùn töû naøy laø hình thöùc töï ñoåi soá cuûa caùc toaùn töû bitwire ôû treân.

1.

Caùc toaùn töû: ~ (bieán ñoåi NOT), & (bieán ñoåi AND), ~&( bieán ñoåi NAND), | (bieán ñoåi OR), ~| (bieán ñoåi NOR), ^ (bieán ñoåi XOR), ~^ hoaëc ^~ (bieán ñoåi XNOR).

2.

Ví duï:

GV: Nguyeãn Troïng Haûi

Trang 11

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Module chk_zero (a,z); Input [2:0] a; Output z; Assign z = ~| a; Endmodule VI. Toaùn töû gheùp: Dòch toaùn töû ñaàu baèng chöõ soá cuûa caùc bit ñöôïc ñònh nghóa bôûi toaùn töû thou hai. Vò trí coøn troáng seõ ñöôïc ñieàn vaøo vôùi nhöõng soá 0 cho caû hai tröôøng hôïp dòch traùi hoaëc phaûi. 1.

Toaùn töû: << ( dòch traùi), >> (dòch phaûi).

2.

Ví duï: assign c = a<<2; c = a dòch traùi 2 bit caùc choã troáng ñöôïc ñieàn vôùi nhöõng soá 0.

VII. Toaùn töû dòch: Gheùp hai hoaëc nhieàu toaùn haïng thaønh moät vectô lôùn. 1.

Toaùn töû: {} (concatenation)

2.

Ví duï: Wire [1:0] a, b; Wire [2:0] x; Wire [3:0] y, Z; Assign x = {1’b0, a}; // x[2] = 0, x[1] = a[1], x[0] = a[0]. Assign y = {a, b}; // y[3]= a[1], y[2] = a[0], y[1] = b[1], y[0] = b[0].

VIII. Toaùn töû thöù baûn: Taïo ra nhieàu baûn sao cuûa moät muïc choïn. 1.

Toaùn töû: {n{ muïc choïn }} n nhoùm thöù baûn trong moät muïc choïn.

2.

Ví duï: Wire [1:0] a, b; Wire [3:0] x;

GV: Nguyeãn Troïng Haûi

Trang 12

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Assign x = {2{1’b0},a}; // x= {0, 0, a}. IX. Toaùn töû ñieàu kieän: Gioáng nhö C/C++. Chuùng ñònh giaù moät trong hai bieåu thöùc cô baûn trong moät ñieàu kieän. Noù seõ toång hôïp thaønh boä ña coäng (MUX). 1.

Toaùn töû : (ñieàu kieän)? keát quaû khi ñieàu kieän ñuùng : keát quaû khi ñieàu kieän sai.

2.

Ví duï: assign a = (g) ? x : y; Assign a = ( inc = =2) ? a+1: a-1;

X.

Thöù töï toaùn töû: Nhöõng toaùn töû trong möùc gioáng nhau ñònh giaù töø traùi sang phaûi Toaùn töû

Teân

[]

Choïn bit, choïn phaàn

()

Phaàn trong ngoaëc ñôn

!, ~

Möùc logic vaø bit_wire NOT

&, |, ~&, ~|, ^, ~^ Bieán ñoåi: AND, OR, NAND, NOT, XOR, XNOR. +, -

Daáu chæ soá aâm soá döông.

{}

Gheùp noái { 3’b101,3’b110} = 6’b101110

{{ } }

Thöù baûn {3{3’b101 } }=9’b101101101

*, /, %

Nhaân, chia, phaàn traêm.

+, -

Coäng tröø nhò phaân.

<<, >>

Dòch traùi, phaûi.

<, <=, >, >=

Daáu so saùnh. Bieán Reg vaø wire ñöôïc laáy baèng nhöõng soá döông.

= =, !=

Baèng vaø khoâng baèng trong toaùn töû logic.

&

Bit_wire AND, and taát caû caùc bit vôùi nhau.

^, ~^

Bit_wire XOR, Bit_wire XNOR.

|

Bit_wire OR.

&&, ||

Toaùn töû logic AND, OR.

?:

x = ( ñieàu kieän ) T:F

GV: Nguyeãn Troïng Haûi

Trang 13

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông VI

TOAÙN HAÏNG I.

Literals (daïng kí töï): Laø toaùn haïng coù giaù trò khoâng ñoåi maø ñöôïc duøng trong bieåu thöùc Verilog. Coù hai daïng kí töï laø: Chuoãi: laø moät maûng coù nhieàu kí töï ñöôïc ñaët trong daáu ””. Chöõ soá: laø nhöõng soá khoâng ñoåi, nhò phaân, baùt phaân, thaäp phaân, hoaëc soá hex.

1.

Cuù phaùp caùc chöõ soá: n’F dddd… Trong ñoù: n : soá nguyeân mieâu taû soá bit. F: moät trong boán ñònh daïng sau: b( soá nhò phaân), o( soá baùt phaân), d( soá thaäp phaân), h( soá hex).

2.

Ví duï: “time is”// chuoãi kí töï. 267 // maëc ñònh 32 bit soá thaäp phaân. 2’b01 // 2 bit nhò phaân. 20’h B36E // 20 bit soá hex. ‘o62 // 32 bit baùt phaân.

II.

Choïn 1 phaàn töû bit vaø choïn 1 phaàn caùc bit. Ñaây laø söï löïa choïn moät bít ñôn hoaëc moät nhoùm bit theo thöù töï, töø moät wire, reg hoaëc töø tham soá ñaët trong ngoaïc [ ]. Choïn 1 phaàn töû bit vaø choïn 1 phaàn caùc bit coù theå ñöôïc duøng nhö laø caùc toaùn haïng trong bieåu thöùc baèng nhieàu caùch thöùc gioáng nhau maø caùc ñoái töôïng döõ lieäu goác ñöôïc duøng.

1.

Cuù phaùp: Teân bieán [ thöù töï bit]. Teân bieán [ msb: lsb].

2.

Ví duï:

GV: Nguyeãn Troïng Haûi

Trang 14

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Reg [7:0] a, b; Reg [3:0] ls; c = a[7] & b[7]; ls = a[7:4] + b[3:0]; III. Goïi haøm chöùc naêng: Giaù trò traû veà cuûa moät haøm coù theå ñöôïc duøng tröïc tieáp trong bieåu thöùc maø khoâng caàn gaùn tröôùc cho bieán reg hoaëc wire. Goïi haøm chöùc naêng nhö laø moät trong nhöõng toaùn haïng. Chieàu roäng bít cuûa giaù trò traû veà chaéc chaén ñöôïc bieát tröôùc. 1.

Cuù phaùp: Teân haøm(danh saùch bieán).

2.

Ví duï: Assign a = b & c & chk_bc(b, c); Function chk_bc; Input c, b; Chk_bc = b^ c; Endfunction

IV. Wire, reg, vaø tham soá: Wire, reg, vaø tham soá coù theå ñuôïc duøng nhö laø caùc toaùn haïng trong bieåu thöùc Verilog.

GV: Nguyeãn Troïng Haûi

Trang 15

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông VII

MODULES I.

Khai baùo modules: Moät module laø baûn thieát keá chuû yeáu toàn taïi trong Verilog. Doøng ñaàu tieân cuûa khai baùo module chæ roõ danh saùch teân vaø port (caùc ñoái soá). Nhöõng doøng keá tieáp chæ roõ daïng I/O (input, output, hoaëc inout) vaø chieàu roäng cuûa moãi port. Maëc ñònh chieàu roäng port laø 1 bit. Sau ñoù, nhöõng bieán port phaûi ñöôïc khai baùo wire, wand, …, reg. Maëc ñònh laø wire. Nhöõng ngoõ vaøo ñaëc tröng laø wire khi döõ lieäu ñöôïc choát bean ngoaøi module. Caùc ngoõ ra laø daïng reg neáu nhöõng tín hieäu cuûa chuùng ñöôïc chöùa trong khoái always hoaëc initial.

1.

Cuù phaùp: Module teân module (danh saùch port); Input [msb:lsb] danh saùch port ngoõ vaøo; Output [msb:lsb] danh saùch port ngoõ ra; Inout [ msb:lsb ] danh saùch port vaøo_ ra; … caùc leänh… endmodule

2.

Ví duï: Module add_sub(add, in1, in2, out); Wire, reg, vaø tham soá: Input[7:0 ] in1, in2; Wire in1, in2; Output [7:0] out; Reg out; … caùc leänh khaùc… Endmodule

GV: Nguyeãn Troïng Haûi

Trang 16

Toùm taét baøi giaûng TK Heä Thoáng Soá II.

Phaàn Verilog

Chæ ñònh lieân tieáp: Caùc chæ ñònh lieân tieáp ñöôïc duøng ñeå gaùn moät giaù trò leân treân moät wire trong moät module. Ñoù laø caùc chæ ñònh thoâng thöôøng beân ngoaøi khoái always hoaëc khoái initial. Caùc chæ ñònh lieân tieáp ñöôïc thöïc hieän vôùi moät leänh gaùn (assign) roõ raøng hoaëc baèng söï chæ ñònh moät giaù trò ñeán moät wire trong luùc khai baùo. Chuù yù raèng, caùc leänh chæ ñònh lieân tieáp thì toàn taïi vaø ñöôïc chaïy lieân tuïc trong suoát quaù trình moâ phoûng. Thöù töï caùc leänh gaùn khoâng quan troïng. Moïi thay ñoåi beân phaûi cuûa baát cöù ngoõ vaøo seõ laäp töùc thay ñoåi beân traùi cuûa caùc ngoõ ra.

1.

Cuù phaùp: Wire bieán wire = giaù trò; Assign bieán wire = bieåu thöùc;

2.

Ví duï: Wire [ 1:0 ] a = 2’b 01; Assign b = c &d; Assign d = x | y;

III. Module instantiations: Nhöõng khai baùo module laø nhöõng khuoân maãu maø noù ñöôïc taïo neân töø caùc ñoái töôïng thöïc teá ( instantiation). Caùc module ñôn cöû beân trong caùc module khaùc, vaø moãi daãn chöùng taïo moät ñoái töôïng ñoäc nhaát töø khuoân maãu. Ngoaïi tröø ñoù laø module möùc treân laø nhöõng daãn chöùng töø chính chuùng. Caùc port cuûa module ví duï phaûi thoûa nhöõng dònh nghóa trong khuoân maãu. Ñaây laø maët lyù thuyeát: baèng teân, söû duïng daáu chaám(.) ”.teân port khuoân maãu ( teân cuûa wire keát noái ñeán port)”. Baèng vò trí, ñaët nhöõng port ôû nhöõng vò trí gioáng nhau trong danh saùch port cuûa caû khuoân maãu laãn instance. 1.

Cuù phaùp: Teân instance1 (danh saùch keát noái port ); Teân instance2(danh saùch keát noái port); …

2.

Ví duï: // ñònh nghóa module module and4(a,b,c); input [3:0]a,b; output [3:0]c;

GV: Nguyeãn Troïng Haûi

Trang 17

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

assign c = a&b; endmodule // module instantiations wire [3:0] in1, in2; wire [3:0] o1, o2; // ñaët vò trí and4 C1(in1, in2,o1); // teân and4 C2(.c(o2), .a(in1), .b(in2));

GV: Nguyeãn Troïng Haûi

Trang 18

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông VIII

KHUOÂN MAÃU HAØNH VI (BEHAVIORAL) Verilog coù 4 möùc khuoân maãu: • Chuyeån maïch. Khoâng ñöôïc ñeà caäp ñeán ôû ñaây. • Coång. • Möùc traøn döõ lieäu. • Haønh vi hoaëc thuû tuïc ñöôïc ñeà caäp ôû beân döôùi Caùc leänh thuû tuïc Verilog ñöôïc duøng taïo moät maãu thieát keá ôû möùc cao hôn. Chuùng chæ ra nhöõng caùch thöùc maïnh cuûa veäc laøm ra nhöõng thieát keá phöùc taïp. Tuy nhieân, nhöõng thay ñoåi nhoû n phöông phaùp maõ hoùa coù theå gay ra bieán ñoåi lôùn trong phaàn cöùng. Caùc leänh thuû tuïc chæ coù theå ñöôïc duøng trong nhöõng thuû tuïc. I.

Nhöõng chæ ñònh theo thuû tuïc: Laø nhöõng chæ ñònh duøng trong phaïm vi thuû tuïc Verilog (khoái always vaø initial). Chæ bieán reg vaø integers (vaø choïn ñôn bit/ nhoùm bit cuûa chuùng, vaø keát noái thoâng tin) coù theå ñöôïc ñaët beân traùi daáu ‘=’ trong thuû tuïc. Beân phaûi cuûa chæ ñònh laø moät bieåu thöùc maø coù theå duøng baát cöù daïng toaùn töû naøo.

II.

Delay trong chæ ñònh: Trong chæ ñònh treã ∆t laø khoaûng thôøi gian traûi qua tröôùc khi moät leänh ñöôïc thöïc thi vaø beân traùi leänh gaùn ñöôïc taïo ra. Vôùi nhieàu chæ ñònh treã (intra-assignment delay), beân phaûi ñöôïc ñònh giaù trò tröïc tieáp nhöng coù moät delay cuûa ∆t tröôùc khi keát quaû ñöôïc ñaët beân traùi leänh gaùn. Neáu theâm moät quaù trình thay ñoåi nöõa caïnh beân phaûi tín hieäu trong khoaûng thôi gian ∆t,thì khoâng cho keát quaû ôû ngoõ ra. Delay khoâng ñöôïc hoã trôï bôûi caùc coâng cuï.

1.

Cuù phaùp chæ ñònh thuû tuïc: Bieán = bieåu thöùc; Chæ dònh treã:

GV: Nguyeãn Troïng Haûi

Trang 19

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

#∆t bieán = bieåu thöùc; intra_assignment delay: bieán = #∆t bieåu thöùc. 2.

Ví duï: Reg [6:0] sum; reg h, zilch; Sum[7] = b[7]^c[7]; // thöïc thi töùc thôøi; Ziltch = #15 ckz & h; // ckz & h ñònh giaù trò töùc thôøi; ziltch thay ñoåi sau 15 ñôn vò thôøi gian. #10 hat = b & c;/* 10 ñôn vò thôøi gian sau khi ziltch thay ñoåi, b & c ñöôïc ñònh giaù vaø hat thay ñoåi*/

III. Chæ ñònh khoái: Chæ ñònh khoái (=) thöïc hieän lieân tuïc trong thöù töï leänh ñaõ ñöôïc vieát. Chæ ñònh thöù hai khoâng ñöôïc thöïc thi neáu nhö chæ ñònh ñaàu cho hoaøn thaønh. 1.

Cuù phaùp: Bieán = bieåu thöùc; Bieán = #∆t bieåu thöùc; #∆t bieán = bieåu thöùc;

2.

Ví duï: Initial Begin a = 1; b = 2; c = 3; #5 a = b + c; // sau 5 ñôn vò thôøi gian thöïc hieän a = b + c = 5. d = a; // d = a = 5. Always @(posedge clk) Begin Z = Y; Y = X; // thanh ghi dòch. y = x; z = y; // flip flop song song.

IV. Begin …end: Leänh khoái begin … end ñöôïc duøng ñeå nhoùm moät vaøi leänh maø moät leänh cuù phaùp ñöôïc cho pheùp. Bao goàm function, khoái always vaø khoái initial. Nhöõng khoái naøy coù theå ñöôïc tuøy yù goïi teân. Vaø bao goàm khai baùo reg, integer, tham soá. GV: Nguyeãn Troïng Haûi

Trang 20

Toùm taét baøi giaûng TK Heä Thoáng Soá 1.

Phaàn Verilog

Cuù phaùp: Begin: teân khoái Reg[msb:lsb] danh saùch bieán reg; Integer [msb:lsb] danh saùch integer; Parameter [msb:lsb] danh saùch tham soá; …caùc leänh… End

2.

Ví duï: function trivial_one;// teân khoái laø: trivial_one input a; begin: adder_blk integer i; … leänh… end

V.

Voøng laëp for: Gioáng nhö c/c++ ñöôïc duøng ñeå thöïc hieän nhieàu laàn moät leänh hoaëc khoái leänh. Neáu trong voøng laëp chæ chöùa moät leänh thì khoái begin … end coù theå boû qua.

1.

Cuù phaùp: For (bieán ñeám = giaù trò 1; bieán ñeám / >= giaù trò 2; bieán ñeám = bieán ñeám +/- giaù trò) begin … leänh … end

2.

Ví duï: For (j = 0; j<=7; j = j+1) Begin c[j] = a[j] & b[j]; d[j] = a[j] | b[j]; end

VI. Voøng laëp while: GV: Nguyeãn Troïng Haûi

Trang 21

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Voøng laëp while thöïc hieän nhieàu laàn moät leänh hoaëc khoái leänh cho ñeán khi bieåu thöùc trong leänh while ñònh giaù laø sai. 1.

Cuù phaùp: While (bieåu thöùc) Begin … caùc leänh… end

2.

Ví duï: While (!overflow) @(posedge clk); a = a +1; end

VII. Khoái leänh if… else if… else: Thöïc hieän moät leänh hoaëc moät khoái leänh phuï thuoäc vaøo keát quaû cuûa bieåu thöùc theo sau meänh ñeà if. Cuù phaùp If (bieåu thöùc) Begin … caùc leänh… end else if (bieåu thöùc) Begin … caùc leänh… end else Begin … caùc leänh… end VIII. Case: Leänh case cho pheùp löïa choïn tröôøng hôïp. Caùc leäng trong khoái default thöïc thi khi khoâng coù tröôøng hôïp löïa choïn so saùnh gioáng nhau. Neáu khoâng coù söï so GV: Nguyeãn Troïng Haûi

Trang 22

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

saùnh, bao goàm caû default, laø ñuùng, söï toång hôïp seõ taïo ra choát khoâng mong muoán. 1.

Cuù phaùp: Case (bieåu thöùc) Case 1: Begin … caùc leänh… end Case 2: Begin … caùc leänh… end Case 3: Begin … caùc leänh… end … default: begin … caùc leänh… end endcase

2.

Ví duï: Case (alu_clk) 2’b00: aluout = a + b; 2’b01: aluout = a - b; 2’b10: aluout = a & b; default: aluout = 1’bx; endcase

GV: Nguyeãn Troïng Haûi

Trang 23

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông IX

KHOÁI ALWAYS VAØ KHOÁI INITIAL I.

Khoái always: Laø caáu truùc chín trong khuoân maãu RTL (Register Transfer Level). Gioáng chæ ñònh lieân tuïc, ñaây laø traïng thaùi toàn taïi maø ñöôïc thöïc thi lieân tuïc trong khi moâ phoûng. Caùi naøy cuõng coù nghóa laø taát caû caùc khoái always trong moät module thöïc thi moät caùch lieân tuïc. Khoái always coù theå ñöôïc duøng trong choát, flip flop hay caùc keát noái logic. Neáu caùc leänh cuûa khoái always naèm trong phaïm vi khoái begin… end thì ñöôïc thöïc thi lieân tuïc, neáu naèm trong khoái fort… join, chuùng ñöôïc thöïc thi ñoàng thôøi (chæ trong moâ phoûng). Khoái always thöïc hieän baèng möùc, caïnh leân hoaëc caïnh xuoáng cuûa moät hay nhieàu tín hieäu (caùc tín hieäu caùch nhau bôûi töø khoùa OR).

Cuù phaùp: Always @(söï kieän 1 or söï kieän 2 or…) Begin … caùc leänh… end Always @(söï kieän 1 or söï kieän 2 or…) Begin: teân khoái … caùc leänh… end II.

Khoái initial Gioáng nhö khoái always nhöng khoái initial chæ thöïc thi moät laàn töø luùc baét d8aàu cuûa quaù trình moâ phoûng. Khoái naøy thì tieâu bieåu ñeå bieán khôûi chaïy vaø chæ ñònh daïng soùng tín hieäu trong luùc moâ phoûng.

GV: Nguyeãn Troïng Haûi

Trang 24

Toùm taét baøi giaûng TK Heä Thoáng Soá 1.

Phaàn Verilog

Cuù phaùp: Initial Begin … caùc leänh… end

2.

Ví duï: Initial Begin Clr = 0; Clk = 1; End Initial Begin a = 2’b00; #50 a = 2’b01; #50 a = 2’b10; end

GV: Nguyeãn Troïng Haûi

Trang 25

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông X

HAØM Haøm ñöôïc khai baùo trong phaïm vi moät module, vaø coù theå ñöôïc goïi töø nhöõng leänh lieân tuïc, khoái always, hoaëc nhöõng haøm khaùc. Trong leänh chæ ñònh lieân tuïc, cuùng ñöôïc chæ ñònh lieân tuïc khi baát kì caùc haøm khai baùo ngoõ vaøo thay ñoåi. Trong chöông trinh chuùng ñöôïc chæ dòng tôùi khi caàn goïi. Caùc haøm moâ taû söï keát noái logic, vaø khoâng taïo ra choát. Do ñoù moät leänh if maø khoâng else se moâ phoûng , maëc duø noù coù choát döõ lieäu nhöng moâ phoûng thì khoâng coù. Ñaây laø tröôøng hôïp dôû cuûa toång hôïp khoâng coù moâ phoûng theo sau. Ñaây laø khaùi nieäm toát ñeå maõ hoùa haøm, vì vaäy chuùng seõ khoâng taïo ra choát neáu maõ haøm ñöôïc duøng trong moät chöông trình. I.

Khai baùo haøm: Khai baùo haøm laø chæ ra teân haøm, chieàu roäng cuûa haøm giaù trò traû veà, ñoái soá haøm döõ lieäu vaøo, caùc bieán (reg) duøng trong haøm, vaø tham soá cuïc boä cuûa haøm, soá nguyeân cuûa haøm.

1.

Cuù phaùp: Function [msb:lsb] teân haøm; Input [msb:lsb]bieán vaøo; Reg [msb:lsb]bieán reg; Parameter [msb:lsb] tham soá; Integer [msb:lsb] soá nguyeân; … caùc leänh… endfunction

2.

Ví duï Function [7:0] my_func; // haøm traû veà giaù trò 8 bit Input [7:0] i; Reg [4:0] temp; Integer n;

GV: Nguyeãn Troïng Haûi

Trang 26

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

temp = i[7:4]| (i[3:0]); my_func = {temp,i[1:0]}; endfunction II.

Ví duï: Moät haøm chæ coù chöùa moät döõ lieäu ra. Neáu coù nhieàu hôn moät giaù trò traû veà ñöôïc yeâu caàu, ngoõ ra seõ phaûi keát noái taïo thaønh moät vector tröôùc khi ñaët giaù trò cho haøm ñeå goïi teân haøm. Goïi teân chöông trình module coù theå trích ra sau ñoù, rieâng ñoái vôùi ngoõ ra töø caùc bieåu maåu noái vaøo nhau. Ví duï döôùi ñaây minh hoïa toång quaùt caùch duøng vaø cuù phaùp haøm trong verilog. 1. Cuù phaùp: Teân haøm = bieåu thöùc. 2. Ví duï: Module simple_processor (instruction, outp); Input [31:0] instruction; Output [7:0] outp; Reg [7:0] outp;// coù theå ñöôïc gaùn trong khoái always. Reg func; Reg [7:0] opr1, opr2; Function[16:0] decode add(instr) Input [31:0] instr; Reg add_func; Reg [7:0] opcode, opr1, opr2; Begin Opcode = instr[31:24]; Opr1 = instr[7:0]; Case (opcode) 8’b 10001000: begin add_func = 1; opr2 = instr[15:8]; end

GV: Nguyeãn Troïng Haûi

Trang 27

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

8’b 10001001: begin add_func = 0; opr2 = instr[15:8]; end 8’b 10001010: begin add_func = 1; opr2 = 8’b 00000001; end default: begin add_func = 0; opr2 = 8’b00000001; end endcase decode_add = {add_func, opr2, opr1}; end endfunction always @(intruction) begin {func, opr2, opr1}= decode_add (intruction); if (func= =1) outp = opr1+ opr2; else outp = opr1 – opr2; end endmodule

GV: Nguyeãn Troïng Haûi

Trang 28

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông XI

CHÖÙC NAÊNG LINH KIEÄN Choát döõ lieäu (latches): ñöôïc suy neáu moät bieán, moät trong caùc bit khoâng ñöôïc gaùn trong caùc nhaùnh cuûa moät leänh if. Choát döõ lieäu cuõng ñöôïc suy ra töø leänh case neáu moät bieán ñöôïc gaùn chæ trong moät vaøi nhaùnh. Hoaøn thieän maõ coù theå ñoïc ñöôïc duøng leänh if ñeå toång hôïp choát vì thaät khoù ñeå chæ ñònh roõ raøng. Theo lyù thuyeát, moät söï xaùc laäp hôïp lí neân ñöôïc suy ra töø maõ Verilog. Cuù phaùp: If… else if… else vaø case. I.

Thanh ghi Edge_triggered, flip_flop, boä ñeám: Moät thanh ghi (flip_flop) ñöôïc suy luaän baèng vieäc duøng xung kích caïnh leân hoaëc xuoáng trong danh saùch söï kieän cuûa leänh khoái always. Cuù phaùp: Always @(posedge clk or posedge reset1 or nesedge reset2) Begin If (reset1) begin Caùc chæ ñònh reset end else if (reset2) begin Caùc chæ ñònh reset End Else begin Caùc chæ ñònh reset End

II.

Boä ña coäng: Ñöôïc suy ra bôûi vieäc gaùn moät bieán maø giaù trò moãi bieán khaùc nhau trong moûi nhaùnh cuûa leänh if hoaëc case. Coù theå traùnh caùc chæ ñònh vaø moïi nhaùnh coù theå

GV: Nguyeãn Troïng Haûi

Trang 29

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

toàn taïi baèng vieäc söû duïng ngoaøi nhöõng nhaùnh maëc ñònh. Chuù yù raèng choát seõ ñöôïc taïo ra neáu moät bieán khoâng ñöôïc gaùn cho caùc ñieàu kieän nhaùnh coù theå toàn taïi. Ñeå hoaøn thieän maõ coù theå ñoïc ñöôïc, duøng leänh case ñeå taïo maãu ña coäng lôùn. III. Boä coäng, tröø: Toaùn töû coäng tröø trong boä coäng tröø maø coù chieàu roäng phuï thuoäc vaøo chieàu roäg cuûa toaùn töû lôùn hôn. IV. Boä ñeäm 3 traïng thaùi: Boä ñeäm ba traïng thaùi ñöôïc suy ra neáu bieán ñöôïc gaùn theo ñieàu kieän giaù trò toång trôû cao Z duøng moät trong caùc toaùn töû: if, case,… V.

Caùc linh kieän khaùc: Haàu heát caùc coång logic ñöôïc suy ra töø vieäc duøng nhöõng toaùn haïng töông öùng cuûa chuùng. Nhö moät söï löïa choïn moät coång hoaëc moät thaønh phaàn coù theå ñöôïc giaûi thích roõ raøng baèng ví duï cuï theå vaø söû duïng caùc coång cô sôû (and, or, nor, inv…) mieãn laø baèng ngoân ngöõ Verilog.

GV: Nguyeãn Troïng Haûi

Trang 30

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

Chöông XII

MOÄT SOÁ VÍ DUÏ I.

Caáu truùc moät chöông trình duøng ngoân ngöõ Verilog: // Khai baùo module Module teân chöông trình (teân bieán I/O); // teân chöông trình truøng teân file.v. Input [msb:lsb] bieán; Output [msb:lsb] bieán; Reg [msb:lsb] bieán reg; Wire [msb: lsb] bieán wire; // Khai baùo khoái always, hoaëc khoái initial. … caùc leänh … Endmodule

II.

Moät soá ví duï: Phaàn meàn hoã trôï: MAX+plusII 10.0 BASELINE

1.

Ví duï 1:

a.

Chöông trình tính NOR caùc bit cuûa bieán vaøo module vdcong(in,out); input[3:0] in; output out; assign out= ~|in; endmodule

GV: Nguyeãn Troïng Haûi

Trang 31

Toùm taét baøi giaûng TK Heä Thoáng Soá b.

Moâ phoûng

2.

Ví duï 2:

a.

Chöông trình coäng hai bieán boán bit

Phaàn Verilog

module adder (sum_out, carry_out, carry_in, ina, inb); output [3:0]sum_out; input [3:0]ina, inb; output carry_out; input carry_in; wire carry_out, carry_in; wire[3:0] sum_out, ina, inb; assign { carry_out, sum_out } = ina + inb + carry_in; Endmodule

GV: Nguyeãn Troïng Haûi

Trang 32

Toùm taét baøi giaûng TK Heä Thoáng Soá b.

Moâ phoûng

3.

Ví duï 3:

a.

Chöông trình giaûi maõ 2 sang 4

Phaàn Verilog

module dec2to4 (w, en, y); input [1:0] w; input en; output[3:0] y; wire[1:0]w; reg[3:0]y; wire en; always @(w or en) begin if(en==1'b1) begin case(w) 2'b00: y<=4'b1000; 2'b01: y<=4'b0100; 2'b10: y<=4'b0010; default:y<=4'b0001; GV: Nguyeãn Troïng Haûi

Trang 33

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

endcase end else end

y<= 4'b0000;

endmodule

b.

Moâ phoûng

4.

Ví duï 4:

a.

Boä doàn keânh 2 sang 1 module mux12(w0, w1, s, y); input w0, w1; input s; output y; wire w0, w1, s; reg y;

GV: Nguyeãn Troïng Haûi

Trang 34

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

always @(w0 or w1 or s)

begin if(s==1) y = w0; else y = w1; end endmodule b.

Moâ phoûng

5.

Ví duï 5:

a.

Chöông trình doàn keânh 4 sang 1 module mux14(w0, w1, w2, w3, s, y); input w0, w1, w2, w3; input[1:0] s; output y; wire w0, w1,w2,w3; reg y;

GV: Nguyeãn Troïng Haûi

Trang 35

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

always @(w0 or w1 or s) begin case (s) 2'b00: y=w0; 2'b01: y=w1; 2'b10: y=w2; default: y = w3; endcase end endmodule b.

Moâ phoûng

6.

Ví duï 6:

a.

Chöông trình ñoåi BCD sang baûy ñoaïn Module mp_led(bcd,led); input [3:0] bcd; output [7:0] led; wire [3:0] bcd;

GV: Nguyeãn Troïng Haûi

Trang 36

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

reg [7:0] led; always @(bcd) begin case(bcd) 4'b0000: led = 8'b00000011; 4'b0001: led = 8'b10011111; 4'b0010: led = 8'b00100101; 4'b0011: led = 8'b00001101; 4'b0100: led = 8'b10011001; 4'b0101: led = 8'b01001001; 4'b0110: led = 8'b01000001; 4'b0111: led = 8'b00011111; 4'b1000: led = 8'b00000001; 4'b1001: led = 8'b00001001; default: led = 8'b00000000; endcase end endmodule

b.

Moâ phoûng

GV: Nguyeãn Troïng Haûi

Trang 37

Toùm taét baøi giaûng TK Heä Thoáng Soá 7.

Ví duï 7:

a.

Chöông trình giaûm töø 9 xuoáng 0, hieån thò ra led 7 ñoaïn

Phaàn Verilog

module bcd (clock, rst, s1, led, digit1); input clock, s1, rst; output [7:0] led; output digit1; reg [7:0] led; reg [3:0] bcd; wire digit1; assign digit1 = 1'b1; always @(posedge clock ) begin if (rst == 1'b1) bcd <= 4'b1001; else if (s1 == 1'b1) bcd <= bcd - 1'b1; if (bcd == 4'b0) bcd <= 4'b1001; end always @(posedge clock) begin case(bcd) 4'b0000: led = 8'b11111100; 4'b0001: led = 8'b01100000; 4'b0010: led = 8'b11011010; 4'b0011: led = 8'b11110010; 4'b0100: led = 8'b01100110; 4'b0101: led = 8'b10110110; 4'b0110: led = 8'b10111110; 4'b0111: led = 8'b11100000; 4'b1000: led = 8'b11111110; 4'b1001: led = 8'b11100110; default: led = 8'b11111111; endcase end endmodule GV: Nguyeãn Troïng Haûi

Trang 38

Toùm taét baøi giaûng TK Heä Thoáng Soá b.

Moâ phoûng

8.

Ví duï 8:

a.

Chöông trình taêng töø 0 ñeán 9, hieån thò ra led 7 ñoaïn

Phaàn Verilog

module bcdtang (clock, rst, s1, led, digit1); input clock, s1, rst; output [7:0] led; output digit1; reg [7:0] led; reg [3:0] bcd; wire digit1; assign digit1 = 1'b1; always @(posedge clock ) begin if (rst == 1'b1) bcd <= 4'b0; else if (s1 == 1'b1) bcd <= bcd + 1'b1; if (bcd == 4'b1001) bcd <= 4'b0000; end

GV: Nguyeãn Troïng Haûi

Trang 39

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

always @(posedge clock) begin case(bcd) 4'b0000: led = 8'b11111100; 4'b0001: led = 8'b01100000; 4'b0010: led = 8'b11011010; 4'b0011: led = 8'b11110010; 4'b0100: led = 8'b01100110; 4'b0101: led = 8'b10110110; 4'b0110: led = 8'b10111110; 4'b0111: led = 8'b11100000; 4'b1000: led = 8'b11111110; 4'b1001: led = 8'b11100110; default: led = 8'b11111111; endcase end endmodule

b.

Moâ phoûng

GV: Nguyeãn Troïng Haûi

Trang 40

Toùm taét baøi giaûng TK Heä Thoáng Soá

Phaàn Verilog

TAØI LIEÄU THAM KHAÛO 1.

“Verilog Digital System Design”

2.

“Introduction of Verilog”

Zainalabedin Navadi Northeastern University University of Tehran Peter M. Nyasulu

3.

“Cadence Verilog – XL Reference Manual”

4.

“Synopsys HDL Compiler for Verilog Reference Manual”

5.

Diglab 10K10 Mannual

GV: Nguyeãn Troïng Haûi

Trang 41

BOÄ GIAÙO DUÏC & ÑAØO TAÏO TRÖÔØNG ÑAÏI HOÏC KYÕ THUAÄT COÂNG NGHEÄ THAØNH PHOÁ HOÀ CHÍ MINH

Ths. NGUYEÃN TROÏNG HAÛI

TOÙM TAÉT BAØI GIAÛNG

VHDL Very High speed integrated circuit Description Language

LÖU HAØNH NOÄI BOÄ

07/2005

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

VHDL Very High speed integrated circuit Description Language I. CẤU TRÚC CỦA MỘT THIẾT KẾ DÙNG NGÔN NGỮ VHDL. ---------------------------------- Ghi chú ---------------------------------

PACKAGE

(Tùy chọn)

library

(Thư viện)

use ENTITY

(Bắt buộc)

ARCHITECTURE

(Bắt buộc)

CONFIGURATIONS

(Tùy chọn)

1. PACKAGE (KHỐI). Package là một vùng lưu trữ các dữ liệu để dùng chung cho các entity. Mô tả dữ liệu bên trong một package cho phép được tham khảo bởi một entity khác, vì vậy dữ liệu có thể được dùng chung. Một package bao gồm 2 phần: phần mô tả định nghĩa giao diện cho package, phần thân ấn định các hoạt động cụ thể của package. Cú pháp khai báo khối được xác định là: PACKAGE example_arithmetic IS -- các khai báo khối có thể chứa các khai báo sau: Subprogram declaration. Type, subtype declaration. Constant, deferred constant declaration. Signal declaration creates a global signal. File declaration. Alias declaration. Attribute declaration, a user-define attribute. Attribute specification. Use clause. END example_arithmetic; Tất cả các đối tượng khai báo trong package có thể được truy xuất bởi bất kỳ một thiết kế nào đó bằng cách sử dụng mệnh đề use và khai báo library. library my_lib; use my_lib.example_arithmetic.all; Một số thư viện chuẩn

GV: Nguyễn Trọng Hải

Trang 1

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

library ieee; use ieee.std_logic_1164.all; std_logic_1164: là thư viện logic chuẩn của IEEE (đoạn 1164), mục đích cung cấp các chuẩn cơ bản để có thể mô tả các kiểu dữ liệu kết nối trong VHDL. std_logic_arith: là thư viện chứa tập các phép toán và hàm Kiểu std_logic có thể có các giá trị U

Uninitialized

X

Unknown

0

Zero

1

One

Z

Tristate (Must be upper case!)

W

Weak unknown

L

Weak Zero

H

Weak One

-

Don't care

Ngoài ra có thể tự tạo riêng các thư viện trong thiết kế. 2. ENTITY Khai báo entity chỉ dùng để mô tả ngõ vào và ngõ ra của một thiết kế. Mức cao nhất của bất kỳ một thiết kế VHDL là một khai báo entity đơn, khi thiết kế trong VHDL, tên của file lưu trữ phải trùng với tên theo sau của từ khóa entity. Ví dụ, mô tả bộ cộng bán phần sau

X1 A

SUM A1 CARRY

B

library ieee; use ieee.std_logic_1164.all; ENTITY HALF_ADDER IS PORT( A,B : IN BIT; SUM,CARRY

: OUT BIT);

END HALF_ADDER;

GV: Nguyễn Trọng Hải

Trang 2

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Trong khai báo ENTITY, có 4 kiểu tín hiệu khác nhau: •

IN: mô tả các ngõ vào entity. Kiểu IN thì được sử dụng cho các ngõ vào clock, các ngõ vào điều khiển,…



OUT: mô tả dòng dữ liệu đi ra khỏi entity, entity sẽ không thể đọc các tín hiệu này, kiểu OUT chỉ được sử dụng khi tín hiệu không được sử dụng bởi bất kỳ kiểu nào trong entity.



BUFFER: Kiểu tín hiệu này mô tả dòng dữ liệu đi ra khỏi entity, nhưng entity có thể đọc những tín hiệu này (mục đích đọc lại tín hiệu ngõ ra ở bên trong của cấu trúc). Tuy nhiên , tín hiệu sẽ không thể điều khiển từ ngõ ra của entity, vì vậy nó không thể được sử dụng cho các dữ liệu ngõ vào.



INOUT: Kiểu tín hiệu này cho phép tín hiệu có thể có cả hai kiểu: vào và ra, khi khai báo tín hiệu theo kiểu INOUT thì tín hiệu có thể được điều khiển từ ngõ ra của entity. Kiểu tín hiệu này chỉ nên sử dụng khi thật cần thiết(ví dụ như bus dữ kiệu 3 trạng thái), và khi sử dụng kiểu tín hiệu này thì mã của chương trình sẽ trở nên khó hiểu hơn đối với người thiết kế.

Loại tín hiệu cũng phải được mô tả trong khai báo PORT, loại tín hiệu sẽ mô tả các giá trị mà tín hiệu đó có thể được ấn định, ngoài ra có thể mô tả một vector những tín hiệu có cùng loại. Lưu ý: trong file report, nếu không gán chân linh kiện thì các biến ngõ vào và ra sẽ được gán ngẫu nhiên. Để gán các chân, có thể thực hiện từ phần mềm hỗ trợ hoặc thực hiện như sau: Ví dụ, ENTITY my_design is Port (a, b

: in integer range 0 to 7;

c

: bit_vector (3 to 5);

d

: bit_vector (27 downto 25);

e

: out Boolean);

attribute pinnum: string; attribute pinnum of c: signal is "1,2,3"; attribute pinnum of d: signal is "6,5,4"; attribute pinnum of e: signal is "2"; END my_design; 3. ARCHITECTURE. Chức năng của architecture là mô tả mối liên hệ giữa các tín hiệu ngõ vào và tín hiệu ngõ ra ( bao gồm cả những tín hiệu BUFFER), có thể viết nhiều kiến trúc khác nhau trong một entity, nhưng chỉ một trong số đó có khả năng xuất hiện trong mã VHDL. architechture có 3 dạng: mô tả cấu trúc (structure); mô tả dòng dữ liệu (data flow); mô tả hành vi (behavioral)

GV: Nguyễn Trọng Hải

Trang 3

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Mô tả architechture dưới dạng cấu trúc (structure) Ví dụ, chương trình bộ cộng trên sẽ có dạng: ENTITY HALF_ADDER IS PORT( A,B : IN BIT; SUM,CARRY

: OUT BIT);

END HALF_ADDER; ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS Component XOR2 Port(X,Y: in BIT; Z: out BIT); End component Component AND2 Port(L,M: in BIT; N: out BIT); End component BEGIN X1: XOR2 port map (A,B,SUM); A1: AND2 port map (A,B,CARRY); END HA_STRUCTURE; Chú ý, trong trường hợp này các tín hiệu trong Port Map(ánh xạ cổng) của đối tượng trong thành phần này và các tín hiệu trong khai báo phải được liên kết theo vị trí Mô tả architechture dưới dạng dòng dữ liệu (data flow) Ví dụ, chương trình bộ cộng trên sẽ có dạng: ENTITY HALF_ADDER IS PORT( A,B : IN BIT; SUM,CARRY

: OUT BIT);

END HALF_ADDER; ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS BEGIN SUM<=A xor B; CARRY<=A and B; END HA_STRUCTURE; Mô hình dòng dữ liệu sử dụng phát biểu gán tín hiệu đồng thời, ký hiệu <= chỉ giá trị được gán cho tín hiệu. Phép gán được thực hiện khi có 1 sự kiện tín hiệu của biểu thức bên phải.

GV: Nguyễn Trọng Hải

Trang 4

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Mô tả architechture dưới dạng hành vi (behavioral) Kiểu mô tả hành vi bao gồm tập hợp thứ tự các phép gán tín hiệu tuần tự được khai báo bên trong phát biểu process. Biến được khai báo trong process là biến cục bộ. Tín hiệu không được khai báo trong process Ví dụ, chương trình bộ cộng trên sẽ có dạng: ENTITY HALF_ADDER IS PORT( A,B : IN BIT; SUM,CARRY

: OUT BIT);

END HALF_ADDER; ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS BEGIN Process(A,B); Begin SUM<=A xor B; CARRY<=A and B; End process; END HA_STRUCTURE; Ví dụ, mô tả một D-FF: D

Q

CK Q

ENTITY DFF IS PORT( D,CK Q

: IN BIT; : OUT BIT);

END DFF; ARCHITECTURE DFF_BEHAVIOR OF DFF IS BEGIN Process(CK); Begin If rising_edge(ck) then Q<=D; End if; End process; END DFF_BEHAVIOR ; GV: Nguyễn Trọng Hải

Trang 5

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Mô tả architechture dưới dạng hỗn hợp (mixed style) Có thể trộn lẫn 3 kiểu trong một architechture Ví dụ, mô tả mạch cộng toàn phần (FULL_ADDER) sau

structure

dataflow

X1

A

: B

SUM

Cin

CARRY

behavior ENTITY FULL_ADDER IS PORT( A,B,CIN

: IN BIT;

SUM, COUT : OUT BIT); END DFF; ARCHITECTURE FA_MIXED OF FULL_ADDER IS Component XOR2 Port(X,Y: in BIT; Z: out BIT); End component Signal S1: BIT

--Khai báo tín hiệu cục bộ trong architechture

BEGIN X1: XOR2 port map (A,B,S1); Process(A,B,CIN);

--structure --behavior

Variable T1,T2,T3: BIT; Begin T1:=A and B; T2:=A and CIN; T3:=B and CIN; COUT<=T1 or T2 or T3; End process; SUM<=S1 xor CIN;

--dataflow

END FULL_ADDER; GV: Nguyễn Trọng Hải

Trang 6

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

4. CONFIGURATION Configuration dùng để liên kết các hợp phần tới entity configuration ban đầu có thể được ấn định tới rất nhiều architecture trong một entity. ENTITY component_i IS

ARCHITECHTURE Behavioral OF component_i IS ….

ARCHITECHTURE dataflow OF component_i IS ….

ARCHITECHTURE Structural OF component_i IS ….

Định cấu hình cho phép mô phỏng các thiết kế ở thành phần con, dễ dàng kiểm tra được thiết kế hơn một chương trình lớn. Một cấu hình được dùng để nối từng cặp như sau: •

Một thân architecture tới khai báo entity của nó.



Một component với một entity.

Ví dụ, xây dựng một entity FULL_ADDER ở trên có thể tách ra làm ba architecture body: FA_BEHAVIOR, FA_STRUCTURE, và FA_MIXED. Một architecture bất kỳ có thể được chọn bằng cách đặc tả một configuration thích hợp. Library HS_LIB, CMOS_LIB; ENTITY FULL_ADDER IS Port(A,B,Cin : IN BIT; SUM, Cout: OUT BIT); END FULL_ADDER; ARCHITECTURE FA_STR OF FULL_ADDER IS Component XOR2 Port(D1,D2 : IN BIT; DZ : OUT BIT); END componen; Component AND2 Port ( Z: OUT BIT; B0,B1: IN BIT); END Component; -- Đặc tả cấu hình: GV: Nguyễn Trọng Hải

Trang 7

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

CONFIGURATION FA_BINDING OF FULL_ADDER IS For FA_STR For X1,X2 : XOR2 use entity WORK.XOR2(XOR2BEH); End for; -- liên kết thực thể với nhiều đối tượng của một thành phần. For A3: AND2 Use entity HS_LIB.AND2HS(AND2STR); PORT MAP (HS_B => A1, HS_Z=>Z, HS_A => A0 ); End for; --liên kết thực thể với các đối tượng đơn của một thành phần. For all : OR2 Use entity CMOS_LIB.OR2CMOS(OR2STR); End for; -- liên kết thực thể với tất cả các đối tượng của thành phần OR2. For others: AND2 Use entity WORK.A_GATE(A_GATE_BODY); PORT MAP(A0,A1,Z); End for; -- liên kết thực thể với tất cả các đối tượng không được liên kết của thành phần AND2. End for; End for; Signal S1, S2, S3, S4, S5: BIT; BEGIN X1: XOR2 port map(A, B, S1); X1: XOR2 port map(S1, Cin, SUM); A1: AND2 port map(S2, A, B); A2: AND2 port map(S3, B, Cin); A3: AND2 port map(S4, A, Cin); O1: OR2 port map(S2, S3, S5); O2: OR2 port map(S3, B, Cin); NAND_GATE port map(S4,S5,Cout); END FA_STR;

GV: Nguyễn Trọng Hải

Trang 8

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Có 4 đặc tả cấu hình trong phần khai báo của thân kiến trúc (architecture body): •

Đặc tả thứ nhất chỉ rằng đối tượng có nhãn X1 và X2 của component XOR2 liên kết với entity bởi cặp entity - architecture XOR2 và XOR2BEH có sẵn trong thư viện WORK.



Đặc tả thứ hai liên kết đối tượng component AND2 có nhãn A3 đến entity bởi cặp entity - architecture AND2HS và AND2STR đã có trong thư viện thiết kế HS_LIB. Anh xạ của cổng thành phần (AND2 ) và các cổng thực thể(AND2HS) được liên kết theo tên (name association).



Đặc tả thứ ba chỉ rằng tất cả các đối tượng của component OR2 được liên kết với entity bởi cặp entity - architecture có sẵn trong thư viện thiết kế CMOS_LIB.



Đặc tả cuối cùng chỉ rằng tất cả các đối tượng không liên kết (unbound) của component AND2, đối tượng A1 và A2 được liên kết tới entity khác là: A_GATE có architecture A_GATE_BODY, kiến trúc này có sẵn trong thư viện WORK.

Trong ví dụ này đã chỉ ra các đối tượng của cung một thành phần (component) có thể được liên kết(bound) với các thực thể khác nhau. II. CÁC KHAI BÁO TRONG VHDL. 1. Khai báo kiểu hỗ trợ. Kiểu liệt kê, số nguyên, dãy một chiều và kiểu bản ghi. •

Kiểu liệt kê. Ví dụ, Type STD_ULOGIC is (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘_’); --std_ulogic là 1 kiểu liệt kê bao gồm 9 giá trị được khai báo là U<X<0<1


Kiểu nguyên. Kiểu nguyên là 1 tập hợp những giá trị rơi vào vùng số nguyên được chỉ ra. Ví dụ, type LENGTH is range 0 to 1000;

GV: Nguyễn Trọng Hải

Trang 9

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

type BYTE_INT is range –128 to 127; type MY_INTEGER is range -2147483647 to 2147483647; •

Kiểu dãy nhiều chiều. Kiểu dãy nhiều chiều được VHDL hỗ trợ để định nghĩa một tập chỉ số. Tuy nhiên chỉ có dãy một chiều được công cụ tổng hợp cho phép. Vậy phải khai báo hai dãy một chiều thay vì một dãy hai chiều. Ví dụ, Type WORD is array (31 downto 0) of BIT; Type RAM is array (1023 downto 0) of WORD; Thay vì: Type OTHER_RAM is array (1023 downto 0, 31 downto 0) of BIT



Kiểu bản ghi Kiểu bản ghi định nghĩa tập các kiểu khác nhau. Mỗi thành phần bản ghi được định vị bằng tên của nó, và có thể dịch bởi công cụ tổng hợp như là giá trị độ dời không đổi hoặc được biến đổi trong vài trường hợp (khái niệm bản ghi không còn tồn tại nữa, địa chỉ thành phần được tính toán chỉ một lần và trở thành mã cố định). Ví dụ, Architecture A of E is Type CODE_TYPE is (NONE, DATA, STATMT) ; Type ITEM_TYPE is record; CODE: CODE_TYPE; INT: INTEGER; End record; Signal S1, S2 : ITEM_TYPE; Begin Process Variable V: ITEM_TYPE; Begin S1 <= V; V:= S2; … S2.INT <= 0; V.CODE := S1.CODE;



Tiêu chuẩn IEEE Khối STD_LOGIC_1164 định nghĩa các giá trị kiểu đa luận lý. Khối này được hỗ trợ bởi tất cả công cụ tổng hợp. Ví dụ, Type STD_LOGIC is ( ‘U’, -- Uninitialized ‘X’, -- Forcing Unknown ‘0’, -- Forcing 0 ‘1’, -- Forcing 1 ‘Z’, -- High Impedance ‘W’, -- Weak Unknown ‘L’, -- Weak 0

GV: Nguyễn Trọng Hải

Trang 10

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

‘H’, -- Weak 1 ‘U’, -- Don’t care ); 'X', '1', '0' là giá trị mạnh và trội hơn các giá trị yếu 'W', 'L', 'H' và chúng lại trội hơn 'Z'. '1' và '0' có thể hiểu như là nối nguồn và nối đất. Giá trị 'U'và 'W' được gọi là giá trị gần luận lý, chủ yếu có chức năng mô phỏng và hiển nhiên không có ý nghĩa phần cứng. Giá trị 'U' là chữ tận cùng bên trái trong định nghĩa STD_ULOGIC liệt kê, và là giá trị mặc định cho các biến số hoặc các tín hiệu ban đầu trước khi được gán các giá trị 'X' và 'W' biểu diễn trạng thái mà bộ mô phỏng không thể xác định được. 'W' có ảnh hưởng ít hơn có thể bị gán đến '0', '1' và 'X'. Do các công cụ tổng hợp chưa thể phân biệt giữa các độ mạnh yếu, nên các giá trị 'L' và 'H' không có ngữ nghĩa tổng hợp chuẩn. 'Z' có thể được dùng trong mô phỏng như là kết quả khi không có bộ điều khiển nào đang hoạt động. Đối với tổng hợp, phần cứng đặc biệt được ám chỉ khi gán phép gán giá trị vô hướng 'Z' được dùng, mục đích của phép gán là đặt đầu ra tới bộ đệm 3 trạng thái. 2. Các kiểu không hỗ trợ. Vài kiểu dữ liệu không được dùng cho mục đích tổng hợp (ví dụ, tất cả kiểu vật lý định nghĩa bởi người thiết kế không được hỗ trợ), kiểu vật lý định nghĩa trước TIME không được hỗ trợ. Ngay cả sự ràng buộc thời gian đối với tổng hợp không được biểu diễn trong VHDL với các biểu thức thời gian. Do đó mệnh đề after và reject không được dịch và không có công cụ tổng hợp nào có thể đảm bảo rằng tín hiệu sẽ thay đổi sau một khoảng thời gian chính xác. Nếu các mệnh đề này được sử dụng trong mô tả VHDL, công cụ tổng hợp sẽ bỏ qua và kết quả phần cứng có thể mâu thuẫn với mô tả đầu vào. Điều này nói rằng kiểu mẫu chính xác cho tổng hợp không dùng bất kỳ biểu thức thời gian nào, bao gồm lệnh biểu thức thời gian wait for. Trong mô phỏng qúa trình bị tạm ngưng trong thời gian định nghĩa bởi biểu thức for. Trong suốt giai đoạn này, tất cả tín hiệu giữ các giá trị mới của chúng. Trong miền tổng hợp không thể phỏng đoán phần cứng với các kết quả như vậy mà không cung cấp phần cứng vì nó quá phức tạp và quá đặc biệt (như bộ định thời gian). 3. Các kiểu con. Các kiểu con rất hữu dụng cho tổng hợp. Ở mỗi bước mô phỏng, các kiểu con cung cấp khả năng mạnh mẽ cho việc kiểm tra sử dụng kiểu. Các kiểu con còn thừa hưởng tất cả toán tử định nghĩa từ các kiểu cơ bản của chúng. Ví dụ, chức năng thao tác trên kiểu BIT_VECTOR có thể được dùng với bất kỳ kiểu con của BIT_VECTOR dài bằng giá trị còn lại trong khoảng thích hợp. III. CÁC ĐỐI TƯỢNG VHDL. Đối tượng trong VHDL là các thông tin về hằng số, biến số và tín hiệu. 1. Hằng số. Các khai báo hằng số: Constant constant_name : type_name [:=value] Ví dụ,

GV: Nguyễn Trọng Hải

Trang 11

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Constant rise_time : time :=10 ns; Constant bus_width : integer :=8; Ví dụ, Type TAB2 is array (BIT, BIT) of BIT; Constant AND_TAB: TAB2 := ((‘0’, ’0’), (‘0’, ‘1’)); Giá trị hằng số được tính toán chỉ một lần. Quá trình tổng hợp chấp nhận hằng số của bất kỳ kiểu tổng hợp nào. Trong trường hợp khai báo như vậy không tạo ra bất kỳ phần cứng nào: Nếu hằng số được dùng trong phép gán tín hiệu như các lệnh dưới đây thì phần cứng được suy ra: Ví dụ, Signal Z, A, B : BIT; … Z <= AND_TAB (A,B); Sự khai báo hằng số không tạo ra phần cứng. Hằng số chỉ cung cấp điều kiện để xác định phần cứng. Hằng số là một biểu thức vì vậy nó tồn tại trong cùng một nơi như các biểu thức: Ví dụ, Phía phải của phép gán tín hiệu Constant COD1: BIT_VECTOR := X ”EA”; Constant MASK: BIT_VECTOR:=”01111111”; Signal V, R, A: BIT_VECTOR(7 downto 0); … begin V <= COD1; R <= A and MASK; Ví dụ, trong biểu thức lệnh if hoặc case

If S= CST1 then … Case VALUE is

When CST_N =>… Ví dụ, trong lệnh đồng thời có điều kiện:

Z <= CST1 when A=’1’ else S when B= CST2 else CST3; 2. Khai báo biến số và tín hiệu. Các khai báo biến số Variable variable_name : type_name [:=value]; Ví dụ, Variable CTRL_STATUS : BIT_VECTOR (10 DOWNTO 0);

GV: Nguyễn Trọng Hải

Trang 12

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ở đây biến CTRL_STATUS là một dãy có 11 phần tử, mỗi phần tử trong dãy có kiểu là BIT Ví dụ, Thực hiện mạch sau

(DATA and “01”)(0)

D

Q

Z

(DATA and “10”)(1) CK Q

Clock Entity MEMO_ONE is Port ( DATA: in BIT_VECTOR (1 downto 0); CLOCK :in BIT; Z: out BIT); Constant K1: BIT_VECTOR : = “01”; Constant K2: BIT_VECTOR := “10” ; End MEMO_ONE;

Architecture A of MEMMO_ONE is Begin Process (CLOCK) Variable A1, A2: BIT_VECTOR(DATA’range); Variable A3: BIT; Begin If CLOCK = ‘1’ and CLOCK’event then A1 := DATA and K1; A2 := DATA and K2; A3 := A1(0) or A2(1); Z <= A3; End if; End process;

End A; Các biến số sử dụng trong ví dụ trên không tạo ra bất kỳ phần cứng nào. Thật ra quá trình tương đương có thể được cho mà không có bất kỳ biến nào, ở đó tất cả các biến được thay thế bởi các phương trình của chúng. Chúng ta có thể viết lại như sau.

Begin If CLOCK = ‘1’ and CLOCK’event then Z <= (DATA and K2)(1) or (DATA and K1)(0); End if; Khai báo tín hiệu: Cú pháp: Signal signal_name : type_name [:=value]

GV: Nguyễn Trọng Hải

Trang 13

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ví dụ, Signal clock: bit; --khai báo tín hiệu clock của kiểu bit lấy giá trị 1,0 Signal data_bus : bit_vector( 0 to 7); -- khai bo tín hiệu data_bus thuộcc kiểu bit_vector có độ rộng 8 bit 3. Các giá trị khởi động. Trong VHDL, có 3 loại giá trị ban đầu: •

Giá trị mặc định từ định nghĩa kiểu hay kiểu con



Giá trị ban đầu khi đối tượng được khai báo



Giá trị được gán khi sử dụng một phát biểu lúc bắt đầu quá trình.

Trường hợp thứ nhất và thứ hai sẽ bị bỏ qua bởi công cụ tổng hợp, nên có thể phát sinh mâu thuẫn giữa hoạt động mô phỏng và kết quả tổng hợp. Do đó đề nghị phải khởi động một cách rõ ràng và có hệ thống các biến và tín hiệu với các lệnh đặc biệt. Điều này đạt được trong phần mã tổng hợp phục vụ cho việc xử lý thiết lập/thiết lập lại và sự khởi động phải được trình bày trong phần này. Nếu cổng out hoặc thông số out của chương trình con có giá trị mặc định, chúng hoạt động giống như một giá trị khởi động cho tín hiệu hoặc biến và sẽ bị công cụ tổng hợp bỏ qua. 4. Các toán tử số học. Toán tử logic và toán tử bit là một phần của toán tử số học. VHDL định nghĩa bảy loại toán tử. Chúng được chỉ ở bảng dưới đây với sự tăng dần mức ưu tiên. Loại

Toán tử

Luận lý

Or and nor nand xor xnor

Quan hệ

= /= > <

Dịch

Sll Srl Sla SRA Rol Ror

Cộng

+ - &

Một ngôi

+ -

Nhân

*

Hỗn hợp

** abs not

/

>=

Ưu tiên Thấp nhất

<=

mod rem Cao nhất

Toán tử luận lý Toán tử luận lý và toán tử not chấp nhận các toán hạng có các kiểu BIT, BOOLEAN, và VECTOR với kích thước giống nhau. Một quy ước được chấp nhận rộng rãi cho giá trị boolean: TRUE tương đương với giá trị BIT '1' và ngược lại. Toán tử nand và nor không kết hợp với nhau trong 1 cú pháp liên tục, chúng phải được ngăn cách bằng dấu () : A and B nand C; -- trái luật (A and B ) nand C;-- đúng luật;

GV: Nguyễn Trọng Hải

Trang 14

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ví dụ, Signal S, X, Y: BIT_VECTOR (1 downto 0); Signal R, A, B, C : BIT; Signal T, D, E, F, G: BOOLEAN; -Begin S <= X and Y; R <= (A and B) and C; T <= D xor E xor F xor G; Sơ đồ kết quả của các hàm trên như sau: X(1..0) S(1..0) D Y(1..0)

E T

A B

F G

C Toán tử quan hệ. Toán tử quan hệ luôn trả về giá trị Boolean '0' hoặc '1' và là kết quả của sự so sánh hai toán hạng cùng một kiểu cơ bản. Trong mô phỏng, toán tử bằng và khác được định nghĩa rõ ràng cho các kiểu. Kết quả là TRUE nếu hai toán hạng có cùng giá trị. Các toán tử quan hệ được định nghĩa cho tất cả các kiểu vô hướng và dãy một chiều. Thứ tự của kiểu vô hướng được định nghĩa bởi khai báo của nó, kiểu 'LEFT' thấp hơn kiểu 'RIGHT'. Đối với dãy một chiều, thứ bậc quan hệ của chúng được định nghĩa bởi bậc ngữ nghĩa. Ví dụ, “0” < ”1” “A” < “BC” “10” < “101”

-- is true -- is true -- is also true

Toán tử quan hệ này không thể dùng để so sánh các vector bit mã hóa các giá trị liệt kê. Toán tử này nếu thực hiện với khối số học thì kết quả của lệnh cuối cùng "10" < "101" sẽ được thông dịch khác nhau đối với số không dấu hoặc số có dấu. Các toán tử cộng. Toán tử cộng và trừ được định nghĩa cho các toán hạng số nguyên. Tất cả các công cụ tổng hợp đều cài đặt các toán tử này và thường sử dụng với một số ràng buộc. Lưu ý, đôi khi dùng các dấu ngoặc đơn để nhóm một tập hợp các cổng lại. Nói cách khác hai biểu thức khác nhau chạy như nhau nhưng tạo ra phần cứng khác nhau GV: Nguyễn Trọng Hải

Trang 15

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ví dụ, Architecture … Signal A, B, C: BIT_VECTOR(2 downto 0); Signal B, S, R: BIT_VECTOR (0 to 5); Signal D: BIT; Begin A <= D ¬ D &D; S <= S & B (0 to 2) ; R <= C(1 downto 0) & “000” & D; Các toán tử dịch chuyển. Các toán tử dịch chuyển hỗ trợ cho BIT_VECTOR Các toán tử dịch chuyển và quay là sll, srl, sla, sra, rol và ror. Các toán tử nhân. Phép chia "/", phép nhân "*", lấy modulo "mod", lấy số dư "rem" được xếp trong nhóm nhân. Chỉ có toán tử nhân được hỗ trợ thêm ví dụ không hạn chế đối với tất cả các kiểu số nguyên. Đối với vài công cụ tổng hợp, nhiều chiến lược nhân được đề nghị để tạo ra phần cứng. "/", mod, và rem được hỗ trợ có hạn chế đối với các giá trị của toán hạng vế phải, các công cụ tổng hợp đòi hỏi các giá trị này là dương và là lũy thừa của 2. Hơn nữa chúng thường là các hằng số toàn cục. Kết quả phần cứng của toán tử này dựa trên các toán tử dịch bit. Ví dụ, xây dựng một bộ đếm modulo 4. Entity INCREMENTER is Port (CLK : in BIT; RST : in BIT; R : out NATURAL range 0 to 3) ; End INCREMENTER; Architecture A of INCREMENTER is Signal MEM: NATURAL range 0 to 3; Begin Process If CLK = ‘0’ then If RST = ’1’ then MEM <= 0; Else MEM <= (MEM +1) MOD 4; End if; End if; End process; R <= MEM; End A; Các toán tử hỗn hợp. Abs, giá trị tuyệt đối được hỗ trợ cho tất cả các giá trị số nguyên, Toán tử số mũ "**", được hỗ trợ với hạn chế toán hạng trái là hằng số toàn cục, giá trị của nó phải là 2. GV: Nguyễn Trọng Hải

Trang 16

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

5. Phép gán biến số. Biến không dùng chung được khai báo trong quá trình hoặc trong phần khai báo chương trình con. Phép gán biến được thực hiện bởi toán tử :=, thao tác này xảy ra ngay lập tức khi tính toán. Do đó, giá trị của biến chỉ thay đổi bởi lệnh gán tiếp theo nếu giá trị mới khác với giá trị cũ. Ví dụ, cách gán biến khác nhau: A:= 0 ;

-- giá trị integer 0 được gán cho biến A

REC.FIELD := B;

--B được gán cho bản ghi FIELD của REC

VECTOR := X “AA”;

-- phép gán vector toàn cục

WBUS(1) := F(A);

-- phép gán phần tử của vector

WORD(3 to 4) := “10”;

-- phép gán một nhóm phần tử vector

REC := (‘A’, 3, “10”);

-- Phép gán giá trị theo vị trí của vetor

REC := (LETTER => ‘C’, FIELD => 3, BIT2 => “11”); -- Phép gán với tên Hơn nữa, ở phần bên trái của lệnh gán, nhiều biến số có thể gộp lại. Ví dụ Variable V: BIT_VECTOR(1 to 3); Variable A, B, C: BIT; … --Hai trạng thái sau là tương đương (A, B, C) := V; (1 => A;2 => B; 3 => C):= V; Lưu ý, biến khai báo trong chương trình con chỉ tồn tại trong chương trình con này và biến mất ở ngoài chương trình con. Vì vậy, nếu biến số đã được gán, kết quả bị mất sau khi chạy lệnh return ngoại trừ được trả về khi dùng thông số out bên trong thủ tục hoặc lệnh return bên trong hàm. Tuy nhiên biến này có thể tạo ra một phần nhớ nếu thời điểm đồng bộ xảy ra trước khi chương trình con kết thúc. 6. Phép gán tín hiệu. Mục đích của gán tín hiệu giống như phép gán biến. Hiệu quả của phép gán tín hiệu chỉ xảy ra sau lệnh đồng bộ (lệnh wait ). Signal <= a_waveform_with_one_item_and_without_delay_expression 7. Lệnh đồng bộ. Trong VHDL lệnh duy nhất để đồng bộ là lệnh wait. Một quá trình phải chứa ít nhất một lệnh wait. Có hai cách dùng lệnh wait khác nhau là: •

Đợi một sự kiện trên một tín hiệu tùy thuộc vào danh sách. Danh sách của wait phải bao gồm tất cả tín hiệu được đọc trong quá trình:

GV: Nguyễn Trọng Hải

Trang 17

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ví dụ, Process Begin Wait on A, B, C, D; S <= A or B; If E then R <= C + D; Else R <= C+1; End if; End process; •

Đợi một sự kiện xảy ra trên tín hiệu đồng hồ (Clock). Tín hiệu này phải là duy nhất, clock được xác định bởi các sự kiện và sườn xung.

Ví dụ, Wait until CLK = ‘1’; Nếu kiểu của tín hiệu đồng hồ không là BOOLEAN hoặc BIT, mà là kiểu đa giá trị, thì để phù hợp với sự mô phỏng, điều kiện sau phải được thêm vào lệnh wait: CLK'LAST_VALUE = '0'. Điều này xác định sườn lên hợp lệ cho tổng hợp. Điều kiện cạnh xung đồng hồ trở thành: Ví dụ, Wait until CLK =’1’ and CLK’last_value = ‘0’; Nếu lệnh wait là rõ ràng, lệnh đồng bộ được mô tả bởi một lệnh điều kiện if Ví dụ, If CLK = ‘0’ and CLK’event and CLK’last_value =’1’ then … Hoặc sử dụng thuộc tính 'STABLE với giá trị thời gian mặc định 0ns, ('STABLE là một hàm chấp nhận kiểu thông số TIME có giá trị mặc định là zero). Ví dụ, If CLK = ‘0’ and not CLK’stable and CLK’last_value =’1’ then … Lệnh điều kiện. Có hai cách biểu diễn lệnh điều kiện : lệnh if và lệnh case Lệnh if. Lệnh if bao gồm cả rẽ nhánh elsif và else, chỉ mức ưu tiên thực hiện các rẽ nhánh khác nhau. Ví dụ, thiết kế các MUX sau

GV: Nguyễn Trọng Hải

Trang 18

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Process (S1, S2, R3, R1, R2, R3, R4) Begin If S1 = ‘1’ then RESULT <= R1; Elsif S2 = ’0’ then RESULT <= R2; Elsif S3 = ’1’ then RESULT <= R3; Else RESULT <= R4; End if; End process; Lệnh case. Trong lệnh case, mỗi nhánh có cùng cấp với nhau (lệnh if và lệnh elsif, mỗi nhánh được kiểm tra một cách tuần tự). Trong lệnh case, tất cả các giá trị có thể phải được đưa vào hết và chúng là duy nhất, không có ưu tiên. Để nhóm lại tất cả các gia trị "don't care", mệnh đề others có thể được sử dụng. Lưu ý, others không bao giờ nên dùng nếu tất cả giá trị đã được liệt kê trước đó Ví dụ, Thiết kế mạch sau

Type CODE_TYPE is (ADD, SUB, RST, INCX); Subtype WORD is INTEGER range 0 to 3; Signal CODE: CODE_TYPE; Signal X, Y, R: WORD; Process (CODE, X, Y) Begin Case X is When 0 => R <= Y; When 1 => R <= CODE_TYPE’pos (CODE); When others => R <= 0; End case; End process; Chú ý rằng nhánh others được dùng cho giá trị 2 và 3 của tín hiệu X. GV: Nguyễn Trọng Hải

Trang 19

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Tạo ra bộ nhớ. Đôi khi một vài giá trị điều kiện không đúng, vì thế các giá trị có kết quả từ các điều kiện này ở trạng thái không đổi. Trong trường hợp này, phải có phần tử nhớ . Ví dụ, If CONDITION (l1, l2,l3) then RESULT <= DATA (l1, l2, l3); End if; Bởi vì chức năng CONDITION không luôn luôn trả về hằng số TRUE, nên đôi khi RESULT sẽ không thay đổi và sẽ giữ nguyên giá trị. Với các dòng lệnh trên thì loại phần tử nhớ được tạo ra sẽ phụ thuộc vào biểu diễn đồng bộ. Phần tử nhớ cũng được ám chỉ nếu tín hiệu đầu ra không xuất hiện trong bất kỳ rẽ nhánh có thể nào của chương trình. RESULT là tín hiệu được đọc (phía bên phải của phép gán tín hiệu) và được viết (phía bên trái của phép gán tín hiệu). Vì vậy, phần tử nhớ là cần thiết. Nếu tín hiệu này phụ thuộc vào danh sách, thì chỉ có mạch cài đặt được tạo ra. Ngược lại, nếu chỉ phụ thuộc vào các giá trị đầu vào (l1, l2, l3) thì một phần tử nhớ mạch lật được tạo ra. Ví dụ, Process (I1, l2, l3) – inferring a flip-flop Begin If CONDITION (l1, l2, l3) Then RESULT <= DATA(l1, l2 , l3, RESULT); End if; End; Process (l1, l2, l3, RESULT) – inferring a latch Begin If CONDITION (l1, l2, l3) Then RESULT <= DATA (l1, l2, l3. RESULT); End if; End; Để đảm bảo không tạo ra phần tử nhớ, một phép gán tín hiệu đầu ra mặc định phải được viết trước lệnh điều kiện như sau: … RESULT <= DEFAULT_VALUE; -- default assignment If CONDITION (l1, l2, l3) then RESULT <= DATA (l1, l2, l3, RESULT); End if; … Phép gán tín hiệu đầu tiên này không được nhầm lẫn với giá trị ban đầu đã được giải thích. Ví dụ, một rẽ nhánh else được tạo ra rõ ràng : If CONDITION (l1, l2, l3) then RESULT <= DATA (l1, l2, l3, RESULT); else RESULT <= DEFAULT_VALUE; End if;

GV: Nguyễn Trọng Hải

Trang 20

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Lệnh lặp lại. Trong VHDL có hai loại lệnh lặp lại, vòng lặp for và vòng lặp while. Vòng lặp vô hạn loop … end loop có thể được xem xét như một vòng lặp while với điều kiện luôn luôn là TRUE. Lệnh lặp vòng for được trợ giúp bởi các công cụ tổng hợp khi các giá trị biên là tĩnh (static) toàn cục. 8. Lệnh quá trình và lệnh đồng bộ. Các lệnh quá trình cho kiểu hành vi mạnh nhất và là cơ sở của mọi lệnh đồng thời. Một lệnh quá trình bao gồm 3 phần: danh sách tùy chọn, khai báo cục bộ và phần lệnh tuần tự. Danh sách độ nhạy. Một quá trình với một danh sách rõ ràng tương đương với một quá trình với một lệnh đồng bộ đơn, quá trình được hoạt động mỗi khi một biến cố xảy ra trên một tín hiệu của danh sách này. Các quá trình như sau: Process (A, B, C) – danh sách các biến được xem xét … begin … end process; Quá trình trên cũng có thể tương đương với: Process … begin … wait on A, B, C; end process; Khai báo cục bộ. Trong tất cả các khai báo có thể có bên trong phần khai báo quá trình, khai báo biến là cần thiết, có thể bao hàm phần tử nhớ. Thật ra, biến có thể sử dụng trong hai cách khác nhau: •

Giống như các biến cục bộ, không tạo ra phần cứng nào: Process (A, B, C) Variable VAR : BIT; Begin VAR : = B and C; S <= A and VAR; End process;

– no memorization for this … and gate

-- before being read

Có thể viết hành vi tương tự bằng cách thay thế biến với phần bên phải của lệnh gán: Process (A, B, C) Begin S <= A and B and C; End process;

GV: Nguyễn Trọng Hải

Trang 21

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ưng dụng của biến được chấp nhận bởi các công cụ tổng hợp và không có phần cứng tương ứng. Trong trường hợp tổng quát thì giữa 2 lệnh đồng bộ, nếu một biến luôn được gán trước khi được đọc, thì biến này không tạo ra bất kỳ phần cứng nào. •

Khi thiết kế dữ liệu dưới dạng máy trạng thái. Process – synchronous finite state machine with two states Type T_STATE is (STOP, GO); Variable STATE: T_STATE; Begin Wait until CLK=’1’; Case STATE is --variable STATE is read -- before being target of assignment when STOP => STATE:= GO; when GO => STATE:= STOP; end case; End process;

Ví dụ này chỉ ra rằng việc đọc biến không có nghĩa là có nó trong phần bên phải của phép gán. Biểu thức case, điều kiện if hoặc thông số in của thủ tục hoặc hàm là cách khác để đọc nó. Vì thế, giữa hai lênh đồng bộ, nếu một biến được đọc ít nhất một lần trước khi được gán thì biến này tạo ra phần tử nhớ. 9. Phép gán tín hiệu. Phép gán tín hiệu đơn giản. Dạng đơn giản nhất của một phép gán tín hiệu đồng thời là định nghĩa tín hiệu đích nhận được các giá trị của tín hiệu nguồn mỗi lần một sự kiện xảy ra: S <= A; -- S được gán tới A bởi phần cứng Z <= ‘1’; -- Tín hiệu Z là một hằng số Các phép gán tín hiệu chọn lựa và có điều kiện. Hai phép gán tín hiệu đồng thời được định nghĩa cho mục đích có điều kiện của tín hiệu; phép gán chọn lựa và có điều kiện. Ví dụ, S <= a when x = ‘1’ else B when Y = ‘1’ else C Ví dụ, nếu A, B, C, X, Y được định nghĩa như là các tín hiệu, quá trình tương là: Process (A, B, C, X, Y)

Begin If X = ‘1’ then S <= A; Elsif Y = ‘1’ then S <= B; Else S <= C; End if; End process; Hai ví dụ trên chứng minh các phép gán tín hiệu, với công cụ này cho phép người thiết kế có thể mô tả các thiết kế của mình rõ ràng hơn.

GV: Nguyễn Trọng Hải

Trang 22

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

10. Component. Mục đích của lệnh hợp phần là sử dụng một mẫu đã mô tả trước. Đây là cách chính để xây dựng sự phân thứ bậc thiết kế. Trước khi sao chép, hợp phần phải được khai báo cục bộ trong phần khai báo kiến trúc, hoặc riêng biệt trong một khối. Sự khai báo hợp phần (component) định nghĩa cách nối dây cục bộ, có thể ít tổng quát hơn so sự khai báo thực thể. Trong suốt giai đoạn cấu hình, môt số tín hiệu có thể ở vế trái nếu chúng ở chế độ out hoặc inout, hoặc bị bỏ qua nếu chúng ở chế độ in với giá trị mặc định. Khi sao một hợp phần, các thông số tương thích chung phải được ánh xạ đến các giá trị và các cổng nối với tín hiệu. Ví dụ, Architecture SYNTHESIZABLE of DRIVE is Signal ORDER: ORDER_TYPE; Signal CONTROL: BIT; Signal DATA_IN, DATA_OUT: BIT_VECTOR(1 to N); Component CTRL Port (C : in BIT; O: out BIT_VECTOR); End component; Component OPRT Port (O: in BIT_VECTOR; D1: in BIT_VECTOR; D0: out BIT_VECTOR); End component; -- specification configuration for CONTROLER : CTRL use entity WORD.CTRL(A); for OPERATING_PART:OPRT use entity WORD OPRT(A) generic map (N); begin -- two component instantiation statements. CONTROLER: CTRL port map(CONTROL, ORDER); OPERATIVE_PART: OPRT port map (ORDER, DATA_IN, DATA_OUT); End SYNTHESIZABLE; Cấu hình chỉ ra cặp thực thể/ kiến trúc được chọn cho bản sao hợp phần. Với ví dụ sau , hai lệnh cấu hình đặc biệt có thể được thay thế bởi một cấu hình độc lập. Configuration C1 of DRIVER is For SYNTHESIZABLE For CONTROLER: CTRL use entity WORD.CTRL(A); End for; For OPERATIVE_PART: OPRT use entity WORK.OPRT(A); Generic map (N); End for; End for; End C1;

GV: Nguyễn Trọng Hải

Trang 23

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

11. BLOCK. Các lệnh block được sử dụng cho cấu trúc lệnh đồng thời Ví dụ, Signal A, B, C, D, E, F, G: BIT; Signal S; BIT_VECTOR(1 to 4); BLOCK_NAME : block Subtype TWO_BIT_TYPE is BIT_VECTOR(1 to 2); Signal V1, V2: TWO_BIT_TYPE; Begin V1 <= (A or C) &B; V2 <= E &(F and G); S <= V1 &V2; End block BLOCK_NAME; Dưới một số điều kiện, một vài công cụ tổng hợp có thể dịch lệnh block như một cấp của tổng hợp. Trong trường hợp này nhãn của lệnh khối được dùng như một thông số cho cấu trúc lệnh. Ứng dụng khác của lệnh block là định nghĩa phần lệnh đồng thời được điều khiển bởi clock. Trong trường hợp này phần bảo vệ (guarded) được yêu cầu để mô tả chính xác tín hiệu clock và điều kiện liên quan tới nó (cạnh lên hoặc xuống). Hơn nữa, phép gán tín hiệu đồng thời được bảo vệ và hoạt động bởi biểu thức bảo vệ. Điều này được chỉ ra trong ví dụ sau, ở đó giả thiết rằng tín hiệu clock là đa giá trị. Ví dụ, B: block (not CLK’state and CLK = ‘0’ and CLK’last_value =’1’) Signal R: BIT; Begin R <= guarded DATA(1); S <= guarded R ; -- Tín hiệu S là DATA(1) được lám trễ 1 chu kỳ End block Ứng dụng thứ 3 của lệnh block được dùng trong mạch 3 trạng thái. Liên kết với lệnh không nối (disconnect) và tín hiệu resolved, phép gán bảo vệ có thể định nghĩa hành vi ba trạng thái. Khi điều kiện bảo vệ không thoả, tín hiệu đích không được nối. Đây là hành vi mặc định của mệnh đề disconnect và được cho phép nếu kiểu tín hiệu đích được resolved. Đối với tổng hợp, vấn đề được giải quyết là giá trị cuối cùng khi tất cả tín hiệu nguồn không được nối. Giá trị này phụ thuộc vào hai yếu tố: kết quả của hàm resolved trả về (khi độ dài của vector đầu vào là null) và loại tín hiệu resolved (bus hoặc register). Tóm tắt hành vi của loại tín hiệu này như sau: •

Kết quả cuối cùng là giá trị được trả về bởi hàm resolved với vector đầu vào null nếu kiểu tín hiệu đích là bus.



Kết quả cuối cùng là giá trị trước nếu chỉ có một tín hiệu nguồn và kiểu của tín hiệu nguồn là register.

GV: Nguyễn Trọng Hải

Trang 24

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Sơ đồ bộ đệm ba trạng thái được tạo ra bởi lệnh block:

Một số công cụ tổng hợp hỗ trợ tín hiệu không nối loại bus, thì kết quả của hàm resolved trả về 'Z' để mã hóa mức 3 trạng thái. 12. Gọi thủ tục đồng thời. Thủ tục đồng thời là thủ tục được gọi từ trong một block hoặc một architechture. P (A, B, C); -- concurent procedure call; Tương đương với: Process -- process equivalent to the previous concurent procedure call Begin -- C is assumed to be an actual parameter of module out. P(A, B, C); Wait on A, B; End process; Cho phép dùng lệnh wait trong các thủ tục đồng thời. Trong tổng hợp, điều này không được hỗ trợ. Thật ra, lệnh wait có nhiều tín hiệu chỉ được cho phép nếu các điều kiện đồng bộ là như nhau. Thường sử dụng gọi thủ tục đồng thời khi muốn có sự linh động và khả năng thích nghi. Thủ tục đồng thời dễ dàng sử dụng hơn là bản sao hợp phần (component), vì không đòi hỏi sự khai báo và chỉ rõ. 13. Lệnh GENERATE. Hai lệnh generate được định nghĩa là: lệnh generate có điều kiện và lệnh generete lặp. Từ quan điểm tổng hợp, lệnh này không được hỗ trợ đầy đủ. Trong giai đoạn chế tạo, một tập các lệnh đồng thời tương đương được phát sinh. Lệnh generate lặp. Lệnh này có thể lặp lại một tập các lệnh đồng thời (ví dụ, lặp lại nhiều lần hợp phần hoặc gán các tín hiệu vector). Trong ví dụ sau, các hằng số k1, k2 có thể là các thông số tương thích chung và phần cứng tương ứng sẽ không thay đổi. Ví dụ, Architecture A of E is Constant k1: NATURAL := 0; Constant k2: NATURAL := 3; Signal A, S: BIT_VECTOR(k1 to k2 ); GV: Nguyễn Trọng Hải

Trang 25

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Signal R: BIT_VECTOR (k1 +1 to k2 +1); Begin L: for J in k1 to k2 generate S(J) <= not A(J); R(J+1) <= A(j); End generate; End; Trong ví dụ sau, kiến trúc A và B là tương đương, kết quả tổng hợp cuối cùng giống nhau. Trong kiến trúc đầu tiên A, kết quả là vector V được gán trong lệnh tuần tự loop và trong kiến trúc thứ hai B, các phép gán tín hiệu đồng thời N được phát ra. Architecture A of E is Constant N: NATURAL := 3; Signal B: BIT_VECTOR(0 to N ); Signal R: BIT_VECTOR (1 to N); Begin Process (A, B) Begin For l in 1 to N loop V(l) <= F(l, A(l), B (N-1 + 1)); End loop; End process; End A; Architecture B of E is Constant N: NATURAL := 3; Signal B: BIT_VECTOR(0 to N ); Signal A,V: BIT_VECTOR (1 to N); Begin L: for l in 1 to N generate V(l) <= F(l, A(l), B (N-1 + 1)); End generate; End B; Lệnh generate có điều kiện. Để hoàn tất một mẫu sử dụng các lệnh generate lặp, có thể có ích khi kiểm tra các giá trị đầu tiên cuối cùng của chỉ số vòng lặp. Các lệnh generate điều kiện có thể được dùng để giải quyết vấn đề này. Ví dụ sau đây minh hoạ tính chất này, ở đó sự xử lý các bản sao hợp phần có thể khác nhau (không có, có một, hoặc nhiều bản sao). Entity E is Generic (N: NATURAL); Port (INPUT: in BIT; OUTPUT: out BIT; …); End E; Architecture A of E is Signal LOCAL: BIT_VECTOR (1 to N -1); Component M1 Port (l: in BIT; O: out BIT); End component; Begin GV: Nguyễn Trọng Hải

Trang 26

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

L1: if N = 0 generate OUTPUT <= INPUT; -- no component instantiation End generate ; L2: if N = 1 generate C1: M1 port map (INPUT, OUTPUT); -- only one instantiation End generate; L3: if N >= 2 generate -- other cases using the intermediate --LOCAL signal F: M1 port map (INPUT, LOCAL(1)); L4: for: in l to N-2 generate C :M1 port map (LOCAL(l), LOCAL(l+1)); End generate; End A; Sử dụng tương thích chung (Generic). Thông số tương thích chung là tổng quát của khái niêm hằng số, để nói rằng trong suốt giai đoạn chế tạo các giá trị của chúng phải được xác định. Vì vậy trước bước này, đối với giai đoạn dịch, giá trị của chúng chỉ xác định kiểu mà không biết giá trị. Một vài công cụ tổng hợp hỗ trợ hạn chế một số kiểu thông số tương thích chung (chỉ hỗ trợ kiểu nguyên hoặc kiểu liệt kê). Tuy nhiên, không có lý do thực sự cho các hạn chế như vậy, ngoại trừ để không hỗ trợ cho cấu hình. Ví dụ, viết một mẫu chấp nhận một vector với kích thước N, như là đầu vào. N là thông số tương thích chung của mẫu này. Entity AND_N is Generic (N: POSITIVE); Port (Din : in BIT_VECTOR (1 to N); R: out BIT); End AND_N; Architecture A1 of AND_N is Signal INTER : BIT_VECTOR (1 to N); BEGIN INTER (1) <= Din (1); L: for l in 1 to N-1 generate INTER (l+1) <= (Din(l+1) and INTER (l)); End generate; R <= INTER(N); End A1; Architecture A2 of AND_N is BEGIN Process (Din) Variable RES: BIT; Begin RES := Din(1); for l in 2 to N loop RES:= RES and Din(l); End loop; R <= RES; End process; End A2;

GV: Nguyễn Trọng Hải

Trang 27

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Ví dụ, nhận dạng mẫu đã cho trong chuỗi bit tuần tự. Các thông số tương thích chung là vector phải tìm, và một số bit dùng để báo số lỗi (0: mẫu phải tìm chính xác như đã mô tả, 1: chỉ sai khác 1 bit mới chấp nhận,…) Entity SEARCH_PATTERN is Generic(PATTERN: BIT_VECTOR; ERROR_NUMBER: NATURAL); Port ( CLK: in BIT; DATA: in BIT; RESET: in BIT; FOUND: out BIT); Begin Assert (PATTERN ‘length >= ERROR_NUMBER) Report “pattern length cannot be shorter than ”& “the authorized error number” Severity ERROR; End SEARCH_PATTERN; Architecture A of SEARCH_PATTERN is Subtype REG_TYPE is BIT_VECTOR (PATTERN’ range); Signal REG: REG_TYPE; Begin P_REG: process (DATA, CLK, RESET) Begin If RESET = ‘1’ then REG <= REG_TYPE (others => ‘0’); Elsif CLK =’1’ and CLK’event then REG <= REG(REG’left-1 downto REG’right) & DATA; End if; End process; P_FOUND: process (REG) Variable CPT: NATURAL range 0 to ERROR_NUMBER +1; Begin CPT := 0; FOUND <= ‘0’; For l in REG’range loop If PATTERN(l) /= REG(l) then CPT := CPT + 1; If CPT >= ERROR_NUMBER then FOUND <= ‘1’; Exit; End if; End if; End loop; End process; End A; Trong các ví dụ trên cần chú ý những điểm sau: •

Sử dụng các lệnh assert trong entity không tạo ra phần cứng. Lệnh này kiểm tra tính nhất quán giữa các giá trị thông số khó mô tả bởi các biểu thức tĩnh (như là các khoảng trong các kiểu hoặc biểu thức kiểu con).

GV: Nguyễn Trọng Hải

Trang 28

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL



Kiến trúc bao gồm hai quá trình: Quá trình đầu tiên suy ra phần cứng tuần tự với một tín hiệu reset bất đồng bộ, trong khi đó quá trình thứ hai biểu diễn mạch tổ hợp thuần tuý.



Khai báo REG_TYPE đã được đưa ra để hạn chế tập hợp còn lại (others => '0') trong nhánh RESET bất đồng bộ.



Các thực thể tương thích chung cần được ánh xạ đến các giá trị thông số để tạo ra phần cứng thực sự. Điều này có thể được làm trong bản sao hợp phần hoặc trong cấu hình, ở đó các thông số tương thích chung được ánh xạ đến các giá trị của chúng.

14. Phép so sánh. Có hai loại so sánh sau: •

Kiểm tra 2 đối tượng giống nhau. Bao gồm các hàm (cũng được gọi các toán tử) bằng ('=') và không bằng ('/='). Tất các kiểu tổng hợp được có thể được so sánh khi sử dụng các toán tử này.



Kiểm tra thứ bậc của hai đối tượng khi sử dụng các toán tử quan hệ, các toán tử này có thể được thực hiện trên kiểu bất kỳ với một lệnh quan hệ như là các kiểu số nguyên, các kiểu liệt kê và kiểu biểu diễn mã ASCII là quá tải đối với các toán tử so sánh.

15. Các toán tử số học. Sau các toán tử Boolean và các phép so sánh, một họ quan trọng khác là toán tử số học. Bốn phép toán cơ bản đó là: phép cộng, trừ, nhân và chia. Kiểu dữ liệu thuận tiện nhất để thực hiện các phép toán như vậy là kiểu INTEGER và các kiểu con quan hệ với nó: NATURAL và POSITIVE. Các toán tử VHDL '+', '-', '*', và '/ 'được định nghĩa trước và vì vậy có thể được sử dụng mà không cần khai báo. Điều này cần thiết cho người thiết kế để hạn chế kích thước các đối tượng của kiểu INTEGER đến giá trị tối tưu. Nếu người thiết kế không làm công việc này, công cụ tổng hợp sẽ xác định kích thước đã định nghĩa của kiểu INTEGER trong khối (STD.STANDARD). Ví dụ, Signal l1, l2, SUM_l: INTEGER range –16 to 15; Signal N1, N2, SUM_N: INTEGER range 0 to 47; SUM_l <= l1 + l2; SUM_N <= N1 + N2; Trong ví dụ ngắn này có một vài chú thích về quy ước mã hoá các số. Tất cả quá trình tổng hợp nhằm vào việc dịch mã nguồn HDL thành biểu diễn nhị phân. Ơ đây, các số có dấu l1, l2 và SUM_l được mã hoá ở dạng bù hai với việc sử dụng 4 +1 bit. Mặt khác, các số không dấu N1, N2 và SUM_N được mã hóa với 6 bit (47<2**6-1). Tuy nhiên, không cần thiết cho khoảng của đối tượng của kiểu INTEGER là luỹ thừa của hai. Toán tử nhân và chia phải được xác định trước, cả hai toán hạng phải là cùng kiểu số nguyên hoặc là kiểu floating point. Kết quả cũng phải cùng kiểu, toán tử nhân cũng được xác định bởi trường hợp khi một trong những toán hạng là kiểu vật lý và toán hạng thứ hai là kiểu integer hoặc real. Kết quả trả về là kiểu vật lý.

GV: Nguyễn Trọng Hải

Trang 29

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Đối với toán tử chia, chia một giá trị vật lý bởi một giá trị integer hoặc real thì được cho phép, và kết quả trả về là kiểu vật lý. Phép chia của một giá trị kiểu vật lý bởi một đối tượng khác cùng kiểu vật lý và phần còn lại của nó, một giá trị nguyên coi như một kết quả. Toán tử REM và MOD tác dụng cho toán hạng kiểu integer và kết quả có cùng một kiểu. Kết quả của REM có biểu hiện của toán hạng thứ nhất và nó được xác định như sau: A rem B = A - (A / B) *B Kết quả của toán tử MOD là biểu hiện toán hạng thứ hai, và nó được xác định như sau: A mod B = A - B * N Sau đây là những ví dụ sử dụng toán tử mod và rem: 7 mod 4

-- kết quả = 3;

(-7) rem 4

-- kết quả = -3;

7 mod (-4)

-- kết quả = -1;

(-7) mod (-4) -- kết quả = 3; 16. Các phép dịch và quay. Các phép tính này thường được thực hiện trên các đối tượng có biểu diễn bit_vector. Hai loại phép tính dịch và quay có thể được phân biệt : luận lý và số học. Phép dịch số học có thể được sử dụng cho phép nhân (dịch sang trái) hoặc chia (dịch sang phải) nếu toán hạng vế phải của một phép toán là một luỹ thừa của 2. Mỗi một toán tử giữ một dãy BIT hoặc BOOLEAN như một toán hạng trái và giá trị INTEGER như toán hạng phải, đóng vai trò giải thích toán tử. Nếu giá trị INTEGER là âm, hành vi ngược nhau sẽ xảy ra. Toán tử SLL (xoay trái luận lý) và toán tử SRL (xoay phải luận lý) điền vào những bit huỷ bỏ với left-operand-type'LEFT. Toán tử SLA (xoay trái số học) điền vào những bit bị huỷ bỏ với bit cực phải của toán hạng trái. Toán tử SRA (xoay phải số học ), điền vào những phần tử bị huỷ bỏ với bit cực trái của toán hạng trái. Ví dụ, -- giả sử tất cả những toán hạng trái đều là BIT_VECTOR "1001010" sll2 is "0101000";

-filled with BIT'LEFT, which is '0'

"1001010" srl3 is "0001001";

GV: Nguyễn Trọng Hải

Trang 30

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

III. MỘT SỐ VÍ DỤ THIẾT KẾ CÁC MẠCH TỔ HỢP VÀ TUẦN TỰ. Đoạn mã chương trình tạo mạch dồn kênh 2 sang 1. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux2to1 IS PORT (w0, w1, s :IN STD_LOGIC; F: :OUT STD_LOGIC); END mux2to1; ARCHITECTURE behavior OF mux2to1 IS BEGIN WITH s SELECT F <= w0 WHEN ‘0’, w1 WHEN OTHERS; END behavior; Mạch so sánh 4 bit. Mạch so sánh 4 bit bao gồm 8 bit ngõ vào, chia thành 2 nhóm, mỗi nhóm 4 bit và được đặt tên là A và B. Kết quả của phép so sánh có 3 trường hợp: A bằng B, A lớn hơn B và A nhỏ hơn B. Trong mạch so sánh này kết quả của phép so sánh ở ngõ vào sẽ được biểu thị bằng 3 bit ngõ ra cho 3 trường hợp so sánh giữa A và B, AeqB(A equal B), AgtB(A greater B), AltB (A lighter B). Mã chương trình của mạch so sánh 4 bit có dạng như sau: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsgned.all; ENTITY compare IS PORT (A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0); AeqB, AgtB, AltB :OUT STD_LOGIC); END compare; ARCHITECTURE behavior OF compare IS BEGIN AeqB <= ‘1’ WHEN A = B ELSE ‘0’; AgtB <= ‘1’ WHEN A > B ELSE ‘0’; AltB <= ‘1’ WHEN A = B ELSE ‘0’; END behavior; Mạch mã hóa ưu tiên. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY priority IS PORT (w :IN STD_LOGIC_VECTOR(3 DOWNTO 0); y :OUT STD_LOGIC_VECTOR(1 DOWNTO 0); z :IN STD_LOGIC; END priority; ARCHITECTURE behavior OF priority IS

GV: Nguyễn Trọng Hải

Trang 31

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

BEGIN PROCESS (w) IF w(3) = ‘1’ THEN y <= “11”; ELSIF w(2) = ‘1’ THEN y <= “10”; ELSIF w(1) = ‘1’ THEN y <= “01”; ELSE y <= “00”; END IF; END PROCESS; Z <=0 WHEN w = “0000” ELSE ‘1’; w1 WHEN OTHERS; END behavior; Từ đoạn mã trên ta có mạch bao gồm 4 ngõ vào, 3 ngõ ra, tùy thuộc vào các giá trị ngõ vào mà các ngõ ra sẽ có giá trị tương ứng, ở mạch mã hóa ưu tiên này, w(3) có mức ưu tiên cao nhất và w(0) có mức ưu tiên thấp nhất, giá trị ngõ ra z chỉ bằng 0 khi tất cả các ngõ vào bằng 0, ngược lại nó luôn bằng 1. Đoạn mạch ở trên sử dụng mệnh đề if-thenelse, tuy nhiên người thiết kế có thể linh hoạt các thiết kế bằng những mệnh đề khác, nhưng phải đảm bảo hoạt động của mạch là đúng nguyên tắc. Mạch giải mã từ 2 đường sang 4. Mạch giải mã từ 2 đường sang 4 đường, bao gồm 3 ngõ vào, đó là: w1, w2, En. Hai ngõ vào w1, w2 là hai ngõ vào sẽ quyết định giá trị các ngõ ra, ngõ vào En là ngõ vào cho phép(có thể là mức '0' hoặc mức '1' tùy theo người thiết kế), khi ngõ vào En tích cực thì các ngõ ra mới có được giá trị tương ứng với các ngõ vào. Trong đoạn mã VHDL cho mạch giải mã này, các ngõ ra có ký hiệu từ y3 đến y0. Đoạn mã của chương trình có dạng như sau, trong đoạn mã này, phát biểu case được sử dụng. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dec2to4 IS PORT (w : IN STD_LOGIC_VECTOR(1 DOWNTO 0); En : IN STD_LOGIC; y :OUT STD_LOGIC_VECTOR(0 TO 3); END dec2to4; ARCHITECTURE behavior OF dec2to4 IS BEGIN PROCESS (w, En) BEGIN IF En = ‘1’ THEN CASE w IS WHEN “00” => y <= “1000”; WHEN “01” => y <= “0100”; WHEN “10” => y <= “0010”; WHEN OTHERS => y <= “0001”; END CASE; ELSE y <= “0000”; END IF; END PROCESS; END Behavior;

GV: Nguyễn Trọng Hải

Trang 32

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

Mạch chốt dữ liệu. Mạch chốt dữ liệu có nhiệm vụ chốt lại dữ liệu ngõ vào và đưa dữ liệu đó tới ngõ ra, dữ liệu tại ngõ ra sẽ thay đổi tương ứng với dữ liệu ngõ vào khi có một xung tác động. Ngõ ra sẽ duy trì dữ liệu mà nó nhận được ở ngõ vào trong suốt quá trình chờ xung tác động, khi không có xung tác động, nếu ngõ vào có thay đổi thì giá trị ngõ ra vẫn không thay đổi giá trị mà nó nhận được ở lần nhận cuối cùng. Đoạn mã VHDL cho mạch chốt được viết như sau: LIBRARY IEEE; USE ieee.std_logic_1164.all; ENTITY flipflop IS Port ( D, clock : IN std_logic; Q : OUT std_logic); END flipflop; ARCHITECTURE bahavior OF flipflop IS BEGIN PROCESS BEGIN WAIT UNTIL Clock’EVENT AND Clock = ‘1’; Q <= D; END PROCESS; END bahavior; Với đoạn mã VHDL trên, ngõ vào dữ liệu có tên là D, xung tác động cạnh , ngõ ra là Q, khi có một xung cạnh lên, ngõ ra Q sẽ nhận giá trị từ ngõ vào D và duy trì giá trị đó trong suốt quá trình chờ một xung kế tiếp. Đoạn mã trên được viết với một bit ngõ vào, một bit ngõ ra, người thiết kế hoàn toàn có thể thay đổi số bit ngõ vào và số bit ngõ ra cho phù hợp với thiết kế của mình. Đoạn mã trên được viết đầy đủ cho một mạch chốt, với các công cụ tổng hợp và biên dịch, người thiết kế có thể ứng dụng nó vào trong mạch thực tiễn sau khi đã nạp vào IC. Mạch tạo thanh ghi 8 bit. Thanh ghi trong mạch số đóng vai trò rất quan trọng, các thiết kế số hiện đại hầu như đều phải sử dụng thanh ghi, VHDL cho phép người thiết kế có thể tạo ra thanh ghi với số bit mong muốn. Ngoài ra còn có thể linh hoạt chúng trong các thiết kế của mình, thanh ghi thực tế chính là một mạch chốt dữ liệu. Đoạn mã sau đây viết cho thanh ghi 16 bit, trong thiết kế có sử dụng thông số tương thích chung generic. LIBRARY IEEE; USE ieee.std_logic_1164.all; ENTITY regn IS GENERIC ( N : INTEGER := 16); Port ( D, clock : IN std_logic_vector (N-1 DOWNTO 0); Reset, clock : IN std_logic; Q : OUT std_logic_vector (N-1 DOWNTO 0); END regn; ARCHITECTURE behavior OF regn IS BEGIN

GV: Nguyễn Trọng Hải

Trang 33

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

PROCESS (Reset, clock) BEGIN IF Reset = ‘0’ THEN Q <= (OTHERS => ‘0’); ELSIF Clock’EVENT AND Clock = ‘1’ THEN Q <= D; END IF; END PROCESS; END behavior;

Mạch đếm lên. Mạch đếm lên hoạt động theo nguyên tắc: khi có một xung tác động ở ngõ vào, ngõ ra sẽ thay đổi một bit theo chiều hướng đếm lên, mạch đếm lên ngoài ngõ vào xung clock, người thiết kế còn có thể tạo thêm các ngõ vào khác như Reset, Enable… để tạo thêm tính linh hoạt của mạch. Mã VHDL cho mạch đếm lên được viết như sau: LIBRARY IEEE; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY upcount IS Port ( Reset, Clock, En : IN std_logic; Q : OUT std_logic_vector (3 DOWNTO 0); END upcount; ARCHITECTURE behavior OF upcount IS SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN PROCESS (Clock, Reset) BEGIN IF Reset = ‘0’ THEN Count <= “0000”; ELSIF Clock’EVENT AND Clock = ‘1’ THEN IF En = ‘1’ THEN Count <= Count+ 1; ELSE Count <= Count; END IF; END IF; END PROCESS; Q <= Count; END behavior;

Mạch đệm 3 trạng thái. Mạch đệm 3 trạng thái giúp mạch thực tế khi hoạt động có thể điều chỉnh ngõ ra ở trạng thái thích hợp cho sự vận hành của mạch, với 3 trạng thái, người thiết kế các mạch số sẽ điều chỉnh mạch sao cho hoạt động tốt hơn và tiết kiệm năng lượng hơn. Mã VHDL cho mạch đệm 3 trạng thái được viết như sau:

GV: Nguyễn Trọng Hải

Trang 34

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

LIBRARY IEEE; USE ieee.std_logic_1164.all; ENTITY trin IS GENERIC ( N : INTEGER := 8); Port( X : IN std_logic_vector (N-1 DOWNTO 0); E : IN std_logic; F : OUT std_logic_vector (N-1 DOWNTO 0); END trin; ARCHITECTURE behavior OF trin IS BEGIN F <= (OTHERS => ‘Z’) WHEN E =’0’ ELSE X; END behavior; Xây dựng máy trạng thái trong VHDL

library ieee; use ieee.std_logic_1164.all; use work.std_arith.all; entity divby5 is port(x, clk : in std_logic; y : out std_logic); end divby5; architecture state_machine of divby5 is type StateType is (state0, state1, state2, state3, state4); signal p_s, n_s : StateType; begin fsm: process (p_s, x) begin case p_s is when state0 => y <= '0'; if x = '1' then n_s <= state1; else n_s <= state0; end if; when state1 => y <= '0' if x = '1' then n_s <= state3; else n_s <= state2

GV: Nguyễn Trọng Hải

Trang 35

Bài giảng Thiết Kế Hệ Thống Số

Phần VHDL

end if; when state2 => if x = '1' then n_s <= state0; y <= '1'; else n_s <= state4; y <= '0'; end if; when state3 => y <= '1'; if x = '1' then n_s <= state2; else n_s <= state1; end if; when state4 => y <= '1'; if x = '1' then n_s <= state4; else n_s <= state3; end if; when others => n_s <= state0; end case end process fsm; state-clocked : process (clk) begin if rising_edge(clk) then p_s <= n_s; end if; end process state_clocked; end architecture state_machine;

GV: Nguyễn Trọng Hải

Trang 36

Related Documents

Ky Thuat Lap Trinh
November 2019 20
Ky Thuat Lap Trinh
June 2020 6
Thong So Ky Thuat
November 2019 33

More Documents from ""